Data

Key, Primary Key, Unique Key ve Foreign Key Tanımlamaları

Yayın:
Tableau, R dili ve Google Data Studio başta olmak üzere veri analizi ve verinin görselleştirilmesi süreçlerinde sıklıkla kullanacağımız anahtar tanımlamalarına kısaca değinmemiz uygun olacaktır.
GÖRSEL
Tableau, R dili ve Google Data Studio başta olmak üzere veri analizi ve görselleştirme sürecine istinaden veri birleştirme (data-blending) işlemlerine değineceğim. Ancak, bu yazılar ve örnekler öncesinde bazı anahtar (key) tanımlamalarına değinmek istiyorum.

Key (Anahtar)

Key (anahtar) veri tabanı içeriğinde, bir veya daha fazla alanın bir satırı nitelemesi amacıyla tanımlanması olarak özetlenebilir. Bir anahtar farklı amaçlar doğrultusunda kullanılabilecek Unique Key (Tekil Anahtar), Primary Key (Birincil Anahtar) ve Foreign Key (Yabancı Anahtar) gibi özel bir tip ile tanımlanabilir. Karşınıza çıkabilecek diğer anahtar tipler ise şöyle; Super Key, Candidate Key, Alternate Key ve Composite/Compound Key, ancak bu tiplere başka bir yazıda değinmek daha uygun olacaktır. Unutmadan, örnekler ve açıklamalarda anahtarlara dair PRI, UNI, ALT gibi kısaltmalar görülebilir. Karşılaşılabilecek muhtemel durumlara dair parantez içerisinde ek bilgilere yer verdim.O halde, anahtarlar ve özelliklerine dair açıklamalara geçebiliriz.

Unique Key (UNI / Tekil / Benzersiz Anahtar)

Unique Key (tekil anahtar), yer aldığı tablo içerisinde bir değeri sadece bir kere alır. İlgili değerin tekrar atanmasına izin verilmez. İşlevi Primary Key (birincil anahtar) ile benzerlik taşısa da, en önemli farklılık Unique Key’in NULL (boşluk) değeri alabilir oluşudur.

Primary Key (PRI / Birincil Anahtar)

Primary Key (birincil anahtar), bir veri tablosunda yer alan her satır için bir vekil / tanımlayıcı (identify) görevi görür, kısıtlamadır (constraint) ve eşsizdir. Satırlara ait değerlerin karışmaması adına bu alana ait bilginin tekrarlanmaması gerekir. Temel işlevi, verilerin hangi satıra dizileceğine (veya hangi satırda verilerin düzenleneceğine) karar vermesidir. Çoğunlukla tek bir alan (id, user_id, e_mail, username, national_identification_number vb.) olarak kullanılsa da birden fazla alanın birleşimiyle de oluşturulabilir ve genelde sayılar birincil anahtar olarak seçilirler, ancak zorunluluk değildir. Birincil anahtar değeri boş geçilemez ve null değer alamaz. İlişkisel veri tabanlarında (relational database management system) mutlaka birincil anahtar olmalıdır. Unutmadan, her birincil anahtar benzersiz iken her benzersiz anahtar birincil değildir. Benzersiz anahtar başlığı altında NULL kullanımına dair bir açıklama düşmüştüm. Bu başlık altında aradaki farklılıkları biraz daha detaylandıralım;
  • Bir tablo içerisinde birden fazla alan tek bir birincil anahtar ile tanımlanabilir. Ancak, birincil anahtar yapısı her tabloda sadece bir tane olabilir. Benzersiz anahtarda ise böyle bir sınırlama yoktur.
  • Birincil anahtarda NULL kullanıma izin verilmez. Acnak, benzersiz anahtarlarda NULL kayıtlara izin verilir.
  • Birincil anahtar ile veri tablosu üzerinde bir INDEX tanımı oluşturulur ve her kaydın benzersiz bir tanımı yapılır. Benzersiz anahtar kullanımında ise değerlerin benzersiz olup olmadığına bakılır. Elbette benzersiz anahtarlar da INDEX adıyla tanımlanabilirler ancak bu sadece bir tanımlama olacaktır.

Foreign Key (Yabancı Anahtar)

Foreign Key (yabancı anahtar) ikincil anahtar olarak da ifade edilmektedir. Bir veri tablosuna girilebilecek değerleri başka bir veri tablosundaki alanlarla ilişkilendirmeye yarar. Özetle, başka bir tablonun birincil anahtarının bir diğer tablo içerisinde yer almasıdır. Çoğunlukla bir ana tablo (parent) ile alt tablonun (child) ilişkilendirilmesinde kullanılır. Bu sayede olası veri tekrarlarının önüne geçilebilmekte ve ilerleyen zamanda söz konusu olabilecek güncellemelerde ilgili verilerin her yerde güncellenmesi sağlanabilmektedir.Yukarıdaki açıklamaları biraz daha anlaşılır hale getirmek için şöyle örnek iki tablo oluşturalım ve aralarındaki ilişkiye bakalım.
SUPER KEY
ALTERNATE KEY
PRIMARY KEYUNIQUE KEYFOREIGN KEY
#IDRollNoEnrollNoNameDeptID
160391401VinAX101Delhi1
260391402AmitAX102Noida1
360391403MohanAX103Ghaziabad2
460391404PavanAX104Ghaziabad2
560391405DeepakAX105Delhi3
660391406JitendraAX106Delhi3
Yukarıdaki tablomuzun adı Tablo 1 olsun. Bu tabloda yer alan ID sütunu benzersiz anahtarlarımızı barındırmakta ve benzersiz olan her ID değeri ilgili satırı tanımlamakta. Tablo 1’e eklenen her satırda ID yeni bir değer (çoğunlukla bir fazlası; auto increment) almakta. Aşağıdaki tablomuzun adı da Tablo 2 olsun.
PRIMARY KEY
#DeptIDNameAddress
11ITDelhi
22MechanicalDelhi
33ElectricalDelhi
Tablo 2’de ise benzersiz ID’lerimiz DeptID sütununda yer almaktalar ve Tablo 2’ye eklenen yer veri yeni bir satır ve benzersiz yeni bir değer olarak DeptID üzerinden tanımlanacaktır. Tablo 1 ve Tablo 2’ye birlikte baktığımızda ise DeptID’nin her iki tabloda da yer aldığını görebilizi. Tablo 1’deki DeptID ise benzersiz değildir ve aynı değerleri alabilir. Çünkü işlevi Tablo 2 ile olan ilişkiyi sağlamaktır. Başka bir tabloda (örn. Tablo 3) da Tablo 1’in ID değerini (potansiyel diğer alanlar; RollNo ve EnrollNo) benzer şekilde kullanabiliriz. DeptID kullanımında olduğu gibi bu tür kullanımlarda DeptID kendi tablosu içerisinde benzersiz anahtar, ilişkilendirildiği tablo içerisinde ise ikincil anahtar olarak nitelendirilir. Elbette bu sütun isimleri aynı olmak zorunda değil, ancak okunabilirlik için genelde ilişkili sütunların benzer isimler taşıması ([diğer tablo adı]_id) tercih edilir.Örneğimizi bir de ilişkili bir kullanım üzerinden verelim ve wp_postmeta tablosuna bir göz atalım.
FieldTypeNullKeyDefaultExtra
meta_idbigint(20) unsignedPRIauto_increment
post_idbigint(20) unsignedIND0
meta_keyvarchar(255)YESINDNULL
meta_valuelongtextYESNULL
Yukarıdaki tabloda meta_id (ve ilgili sayfada *_id tanımlamalarının hepsi) PRI (bkz. KEY sütunu) olarak tanımlı olduğunu görebilirsiniz. Bu sayede referans ID değerleri ile ilgili satırları işaretleyebilir ve işlemler (güncelleme, silme vb.) gerçekleştirebiliriz.Yukarıdaki örnekleri ve tanımları özetlemek gerekirse, farklı veri tablolarıyla ilgili işlemler gerçekleştirdiğimizde bu tablolar arasında çeşitli ilişkiler belirleriz. Elbette bu ilişkiler doğrudan tanımlanabilecekleri gibi (tablonun oluşturulması aşamasında) sonradan belirlenebilir ilişkiler de olabilirler. Bu tür durumlarda benzersiz alanlardan faydalanır, veri tablolarını ilişkilendirir ve verileri birleştirebiliriz. Böylelikle daha kapsamlı verileri tablolar dahilinde değerlendirme ve görselleştirme imkanımız olur. Bu tür durumlara en basit örnek farklı veri kaynaklarından elde edilen veriler ile hesaplanmış alanlar oluşturulması ve tek bir grafiğe yansıtılması gibi süreçler gösterilebilir; Data Studio raporlarında ayrıca örnek bir kaç işlemle de konuyu pekiştirmiş olacağız.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.