David_Moses_HENDERSON
3 min readMar 18, 2022

--

  1. Yapısı belirli olan veri tabanlarına (ilişkisel)SQL, yapısı esnek olan belirli şeması olmayan veri tabanlarına ise NoSQL denilir.
  2. Bir tabloda sadece bir tane primary key tespit edilebilir. unique key birden çok olabilir mesela email alanını bunun için kullanmak gibi.
  3. Normalizasyon : ilk üç nomal forma uygun veri tabanı normalize kabul edilir.
  4. aynı kolonda tekrar eden veriler, farklı kolonlarda aynı kapsamdaki bazısı dolu, bazısı veri olmadığı için boş kalan veriler gereksizdir. normal formları bunları kontrol eder.
  5. boş bırakılamayan kolonlar(tablolardan bahsediyorum) var iken herhangi bir bilgi yetersiz seviyede(bazı kolonlar boş kalacak şekilde) veri tabanına girilmek istenirse buna insertion anomaly denir.
  6. işi biten bilginin bütün ögeleriyle birlikte mecbur kalarak tablodan silinmesi (satırı silmek gibi) deletion anomaly dir.
  7. tekrar eden bilginin güncellenmesi sırasında meydana gelen, mesela bazılarının isim değişikliğinin yapılamaması gibi, bozukluklara modification anomaly denir.
  8. 1. Normal Form → her tablo tek primary key olmalı, her kolonda tek tip veriden bir adet olmalı, her kolonun bilgisi tek tip olmalı, aynı kolon tekrarlanmamalı bu nedenle iki farklı tablo altında müşteriler ve telefonları veri tabanında bulunur ve tablolar ilişkilendirilir. bu ilişkide bir müşterinin birden fazla telefon numarası varsa, buna one to many ilişki denir.
  9. tablolar ilişkisi foreign key ile yapılır. yani telefon numaraları tablosuna müşteri ID kolonu açmak gibi.
  10. functional dependency : bir tabloda aynı anda birlikte kullanabileceğim kayıtların bulunması ile sağlanır ve kullanılır. bu kayıt çiftleri istisnasız hep aynı olmalıdır. (1–10, müşteri no-ID vs. gibi) bu illa ki çift olmak zorunda değil, üçlü dörtlü durumlar da eğer şartı sağlarsa kullanılabilir.
  11. basitçe; bir tabloda mesleği öğretmen, boyu 180 ve ayak numarası 42 olanları düşünmek gibi.
  12. mesela şehir ismi ülkeyi belirler, bu durum eşsiz olduğu için kullanılabilir.
  13. tek başına key olabilen ihtimaller superkey dir.
  14. gereksiz (olmasa da olur) attribute ler yani tablo kolonları çıkarıldıktan sonra son durumda kalan tek veya çoklu attribute ler candidatekey olarak adlandırılır.
  15. auto increment ID : sistemin atadığı değişmez kayıt data numarası.
  16. her primary key bir candidatekey ve superkey dir, her candidatekey bir superkey dir, fakat her superkey bir candidate veya primary key değildir.
  17. bir öğrenci birçok kursa kaydolabildiği gibi, bir kursa birçok öğrenci de kaydolabilir. Buna many to many ilişki denir.
  18. non-prime (primary ya da candidate içinde olmayan attribute a denir) bir attribute kendi başına kolonlardan her hangi birini belirleyebiliyorsa buna partial dependency denir.
  19. mesela; öğrenciler ve kurslar tabloları arasındaki ilişkiyi 2.Normal Form kurallarına(1'i de kapsar) göre üçüncü bir tablo altında hem öğrenci ID, hem de kurs ID ikilisinden oluşan primary key ile sağlayabiliriz.
  20. non-prime attribute bir başka non-prime attribute u belirlerse buna transitive dependency denir ve 3.Normal Formda (1 ve 2'yi de kapsar) transitive dependency olmamalıdır. Bunun çözümü de yine mesela kurslar ile kursu veren departmanlar tablolarının ayrılmasıdır.
  21. Buraya kadar anladığım kendi içinde özel primary key ile tespit edilebilen tüm kolonlar(attribute ler) ayrı bir tablo içinde olmalıdır.
Blog Sitesi örnek veri tabanı ==> one to one, one to many, many to many ilişkileri gösterir
  • kırmızı oklar algoritma akış sırasını gösterir (zorunlu değil)
  • pembe oklar(foreign keylere gidiyor) bir önceki tablo ile ilişkiyi sağlamak için oluşturulan yeni ID lerin akışını gösterir.
  • foreign key primary key e referans verir.

→ mesela blogdaki user silinirse; ona ait makalelerin ne olacağı konusu :

On Delete Set Null (hepsini null yapar tabi not null tanımlanmış ise hata verir)

On Delete Restrict, On Delete No Action (uyarır hemen silmez)

On Delete Cascade (önce makaleyi siler sonra user ı siler)

On Delete Default (silinen user ın ID si default olarak admin in ID sine dönüşsün gibi belirlenebilir)

→ On Delete teki aynı mantık On Update de var. Yani bir güncelleme durumunda data base sistemi nasıl davransın talimatını Restrict, No Action, Set Null, Cascade ve Default olarak vermemiz gerekiyor.

veri tabanında password bilgisi var ise password alfanumerik karakterler içerebileceği için maksimum length/precision mesela 12 karakter ise, 12 değil çok daha fazla belirlenmelidir.

veritabanına giriş tarihini otomatik atasın istersek CURRENT_DATE kodu kullanılır.

veri tabloları oluşturmada standart isimleri kullanmak önemli created_at, username, id(primary key için) vs..gibi.

mesela yukarıdaki tablo örneğinde, sayıca az olacak ID’leri, veri tabanında çok hafıza işgal etmesin istersek, small serial olarak Data type belirleyebiliriz.

--

--