Ayrıca bir karma tablosu veya karma haritası olarak da adlandırılan ilişkisel bir dizi, dizinin dizininin tamsayı yerine bir dize olması dışında standart bir diziye benzer. Birçok veritabanı uygulamasında ve büyük miktarlarda veri ile ilgilenen diğer programlarda, ilişkisel bir dizi, bilgileri verimli bir şekilde sıralamak ve erişmek için hayati bir unsurdur. Bir ilişkisel dizinin özünde, normalde olduğu gibi, tamsayılarla endekslenen standart bir dizi vardır. Bir karma işlevi adı verilen özel bir algoritma, değeri bulmak için dize dizinini bir tamsayı dizinine dönüştürür. Bu tutarlı bir dönüşümdür, bu nedenle gerçek tamsayı indeksinin hiçbir zaman kaydedilmesi gerekmez, ancak her seferinde gerektiği gibi dizeden hesaplanır.
Bir ilişkisel diziye gönderme yaparken kullanılan terminoloji, normal bir diziden bahsederken kullanılanlardan biraz farklı olabilir. Normalde indeks olarak adlandırılan şeye - bir dizinin içindeki bir elemanın sayısal konumu - anahtar denir. Anahtarla ilişkilendirilen verilere değer adı verilir. Bu, bir ilişkisel dizi içinde bir anahtarın, veri yapısındaki standart bir dizideki bir öğeye başvuran bir dizine karşılık gelen bir değerle ilişkilendirildiği anlamına gelir.
Her ilişkisel dizinin merkezinde karma işlevi bulunur. Bu, anahtarı temel alan bir değerin sayısal dizinini belirlemek için kullanılan bir algoritmadır. Bazıları tamsayılı tuşlar üzerinde çalışacak şekilde tasarlanmış, bazıları da dizgili anahtarlar üzerinde çalışacak şekilde tasarlanmış çeşitli karma işlevler vardır. Bir tamsayı anahtarı durumunda, popüler bir yöntem, anahtar değerini dizinin boyutuna bölmek ve bölümün geri kalanını umarım benzersiz bir dizin değeri almak için kullanmaktır.
Karma işlevi, dizeleri olan anahtarlar için çok daha karmaşık olabilir. Bazı yöntemler, dizgideki her karakterin sayısal değerinin eklenmesini ve ardından bir sayıya bölünmesini veya benzersiz bir sayı elde etmek için dizenin yalnızca ilk birkaç karakterinin kullanılmasını içerir. Sayı dizisini karakter dizisinden türetmenin birçok yolu vardır.
İlişkisel bir dizide büyük miktarda anahtar / değer çifti ile çalışırken, ortaya çıkabilecek bir sorun çarpışma olarak adlandırılır. Çarpışma, bir anahtardan türetilen tam sayı dizini, başka bir anahtarın tam sayı diziniyle aynı olduğunda gerçekleşir. Bu iki anahtar daha sonra, değer dizisindeki aynı endeksi işaret eder. Çarpışmanın çeşitli çözümleri vardır, çünkü çoğu pratik uygulamada olma ihtimali yüksektir.
Çarpışmanın bir çözümü, her bir değer endeksinin aslında bağlantılı bir liste olmasını sağlamaktır, böylece birden fazla anahtar bu indeks konumuna çözümlendiğinde, konum birden fazla değer tutabilir. Buna zincirleme denir ve bir çarpışmanın üstesinden gelmenin basit bir yoludur, ancak bilgileri almak için harcadığı zamanı da yavaşlatabilir. Bir çarpışma ile başa çıkmanın başka bir yöntemi de doğrusal problamadır. Bir çarpışma gerçekleştiğinde, doğrusal prob, kullanılmayan bir dizin bulunana kadar değer dizisi boyunca hareket ederek çalışır. Bu çözüm, ilişkisel dizide eşit şekilde dağıtılmış verilerin korunmasına yardımcı olabilir, ancak aynı zamanda bir değer aramak için gereken süreyi de artırabilir.


