Kurs
Veritabanlarında, bir tabloda yer alan bir öznitelik bir başka özniteliğe, onun da birincil anahtara bağlı olması durumunda geçişli bağımlılık oluşur. Geçişli bağımlılık, güncelleme, ekleme ve silme anomalileri gibi veri sorunlarına yol açtığı için veritabanı normalleştirmesinde bir problemdir; bu yazıda bunları inceleyeceğiz.
Bu yazının ardından daha fazlasını öğrenmek isterseniz, ilişkisel veritabanlarını ve verilerin bir veritabanında nasıl saklandığını öğrenmek için DataCamp’in Database Design kursunu almanızı öneririm. Ayrıca, bu bağlamda ilişkisel veritabanlarını yönetmek için en yaygın dil olan SQL’deki normal formları öğrenmek üzere Normalization in SQL eğitimimize göz atmanızı tavsiye ederim.
Veritabanlarında Geçişli Bağımlılığı Anlamak
İlişkisel veritabanlarında, bir öznitelik başka bir özniteliğe, aradaki bir ara öznitelik üzerinden dolaylı olarak bağlı olduğunda geçişli bağımlılık oluşur. Bu sorun, bir sütunun değerinin iki başka sütunun değerlerinden dolaylı olarak belirlenebildiği anlamına gelir. Aşağıdaki, DataCamp_Programs adlı tabloyu düşünün:
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
Bu tablodan:
-
Course_or_Skill_Track→Instructor: Kursu veya beceri yolunu biliyorsak eğitmeni biliriz. -
Instructordoes not →Course_or_Skill_Track: Bazen eğitmenler birden fazlasını verir. -
Instructor→Instructor_Title: Her eğitmenin bir unvanı vardır.
Dolayısıyla, Course_or_Skill_Track → Instructor_Title bir geçişli bağımlılıktır.
Geçişli Bağımlılıklar Neden Sorun Yaratır?
Geçişli bağımlılıklar, başta veri fazlalığı, anomaliler ve tutarsızlık olmak üzere veritabanı sorunlarına yol açabilir.
Veri fazlalığı
Veri fazlalığı, aynı verinin veritabanı genelinde gereksiz yere yinelenmesiyle oluşur ve verimsizliğe neden olur. DataCamp_Programs tablosu örneğinde, eğitmenin unvanı verdiği her kurs için birden fazla kez saklanmaktadır. Bu tekrar hem depolama alanını israf eder hem de veritabanının bakımını zorlaştırır.
Veri anomalileri
Şimdi güncelleme, ekleme ve silme sorunlarına bakalım.
Güncelleme anomalileri
Güncelleme anomalileri, fazlalık nedeniyle veri değişikliklerinin birden fazla yerde uygulanması gerektiğinde ortaya çıkar. Bazı örnekler güncellenirken diğerleri atlanırsa tutarsızlıklara yol açar. Örneğin, Mona Khalil’in unvanı Lead Data Scientist olarak değiştiği için DataCamp_Programs tablosunu bir SQL sorgusuyla güncellediğimizi düşünün. Unvanının göründüğü her satırı elle güncellemeniz gerekir. Tek bir örnek bile atlanırsa, veritabanında mevcut unvanına ilişkin çelişkili bilgiler bulunacaktır.
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Lead Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
Ekleme anomalileri
Ekleme anomalileri, gerekli diğer veriler eksik olduğu için veritabanına veri ekleyemediğinizde ortaya çıkar. Başka durumlarda, veri ekleyebilseniz bile tablonun yapısı sizi aşağıdaki örnekte olduğu gibi alakasız, yinelenen veya eksik bilgiler eklemeye zorlayabilir:
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
| TBD | Liam Cooper | Data Analyst |
Silme anomalileri
Silme anomalileri, bir kaydın silinmesinin veritabanından istemeden değerli bilgileri de kaldırmasıyla ortaya çıkar. Örneğin, Izzy Weber’i içeren kaydın silinmesi, eğitmenin unvanını da kaldıracaktır; bu da sistemdeki unvan yelpazesinin artık tam olmaması gibi veri kaybına yol açabilir. Burada, istemeden Data Coach unvanını sistemi tamamen kaldırmış olabiliriz.
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
3NF ile Geçişli Bağımlılıkları Kaldırma
Veritabanı bağlamında normalleştirme, verileri düzenleyerek fazlalığı en aza indirir ve veri bütünlüğünü artırır. Bu nedenle, geçişli bağımlılıklar genellikle, geçişli bağımlılık sorununu ele almak için bağımlılıkları ortadan kaldıran bir veritabanı normalleştirme tekniği olan üçüncü normal form (3NF) bağlamında tartışılır.
Üçüncü normal form, geçişli bağımlılıkları ortadan kaldıran ve her anahtar olmayan özniteliğin yalnızca birincil anahtara bağlı olmasını sağlayan bir normalleştirme düzeyidir. Bu, fazlalığı ve geçişli bağımlılıkların neden olduğu hataları önlemeye yardımcı olur. Bir veritabanı şemasını normalleştirirken aşağıdaki adımları düşünün.
Geçişli bağımlılıkları belirleme
Veritabanınızdaki geçişli bağımlılıkları tespit etmek için süreci parçalara ayırın:
- Birincil Anahtar Üzerindeki Fonksiyonel Bağımlılıkları Kontrol Edin: Özniteliklerin doğrudan birincil anahtara bağlı olduğu tüm fonksiyonel bağımlılıkları belirleyerek başlayın. Bu adım, tablonuzdaki temel ilişkilere odaklanmanıza yardımcı olur.
- Dolaylı Bağımlılıkları Arayın: Ardından, anahtar olmayan özniteliklerin (birincil anahtarın parçası olmayanlar) diğer anahtar olmayan özniteliklere bağlı olup olmadığını kontrol edin. Bir anahtar olmayan özniteliğin, kendisi birincil anahtara bağlı olan başka bir anahtar olmayan özniteliğe bağlı olduğunu görürseniz, bir geçişli bağımlılık belirlemişsiniz demektir.
- Fazlalık veya Anomali Testi Yapın: Son olarak, bu dolaylı bağımlılığın veri fazlalığına yol açıp açmadığını veya güncellemeleri zorlaştırıp zorlaştırmadığını düşünün.
Tabloları bölme
Geçişli bağımlılıkları belirledikten sonra, bunları ortadan kaldırmak için tabloları bölmeniz gerekir. Tabloları, anahtar olmayan özniteliklerin doğrudan birincil anahtara bağlı olduğu daha küçük tablolara böleceksiniz. Tablolar arasındaki ilişkiyi de yabancı anahtarlar üzerinden ilişkilendirerek koruyacaksınız.
İşte, DataCamp_Programs tablosunu normalleştirmek ve geçişli bağımlılığı ortadan kaldırmak için iki tabloya nasıl bölebileceğiniz. Göreceğiniz üzere tabloyu ikiye ayırıyoruz. instructor, ikisini bağlamak için anahtar haline geliyor.
Tablo 1: courses_table
| Course or Skill Track | Instructor |
|---|---|
| Data Manipulation in SQL | Mona Khalil |
| SQL Fundamentals | Mona Khalil |
| Introduction to SQL | Izzy Weber |
Tablo 1: instructors_table
| Instructor | Instructor_Title |
|---|---|
| Mona Khalil | Data Scientist |
| Izzy Weber | Data Coach |
Bu yapı, daha önce Instructor üzerinden Course_or_Skill_Track bağımlı olan Instructor_Title ögesindeki geçişli bağımlılığı ortadan kaldırır. Artık Instructor_Title yalnızca Instructor ögesine bağlıdır.
Geçişli Bağımlılıklardan Nasıl Kaçınılır
Veritabanınızı tasarlarken, veri verimliliğini, ölçeklenebilirliği ve bütünlüğü korumak için geçişli bağımlılıklardan kaçınmak önemlidir. Aşağıdakiler, fazlalık, anomali ve tutarsızlık risklerini en aza indirmek için en iyi uygulamalardır.
- Şema Tasarımında Normalleştirme: Veritabanınızı şemadan tasarlıyorsanız, erken aşamalarda üçüncü normal formu (3NF) dikkate almak önemlidir. Bu yaklaşım, normalleştirme tekniğini uygulayarak geçişli bağımlılığı azaltmaya yardımcı olacaktır.
- Düzenli Şema Denetimleri: Veritabanınızı oluşturduktan sonra, geçişli bağımlılıklardan arınmış kaldığından emin olmak için düzenli denetimler yapmak önemlidir.
- İlişkileri Aşırı Basitleştirmekten Kaçınma: İlişkileri her zaman haritalayın ve farklı bilgileri depolamak için varlıkları farklı tablolarda doğru şekilde ayırın.
Sonuç
Veritabanlarında geçişli bağımlılıklar, bir tablodaki bir özniteliğin başka bir özniteliğe, onun da birincil anahtara bağlı olması durumunda ortaya çıkar. Geçişli bağımlılık, fazlalık, tutarsızlıklar ve anomaliler oluşturarak veritabanı verimliliğini her zaman olumsuz etkiler. Bir geliştirici olarak, veri bütünlüğü için geçişli bağımlılıkları belirlemek ve ortadan kaldırmak önemlidir. Geçişli bağımlılıkları veritabanı tasarımı sırasında da belirleyip gidermelisiniz. Üçüncü normal forma (3NF) ulaşmak, veritabanlarını optimize etmenize ve verimliliği artırmanıza yardımcı olacaktır.
Veritabanı tasarım becerilerinizi geliştirmek istiyorsanız, şema tasarımı ve veritabanı erişim kontrolleri hakkında daha fazla bilgi edinmek için DataCamp’in Creating PostgreSQL Databases kursunu almanızı öneririm. Son olarak, büyük veri için veritabanı yönetimi becerilerinizi ilerletmek istiyorsanız, ilişkiler, boyutsal modelleme ve veri kasaları hakkında daha fazla bilgi edinerek verimli bulut veri ambarları tasarlamak için Introduction to Data Modeling in Snowflake kursumuzu almanızı tavsiye ederim.
Geçişli Bağımlılık SSS
Fonksiyonel bağımlılıklar ile geçişli bağımlılıklar arasındaki fark nedir?
Fonksiyonel bağımlılık, bir öznitelik doğrudan birincil anahtara bağlı olduğunda ortaya çıkar. Geçişli bağımlılık ise, bir anahtar olmayan özniteliğin, yine anahtar olmayan başka bir özniteliğe, bu özniteliğin de birincil anahtara bağlı olduğu durumlarda görülür.
Geçişli bağımlılıklar neden sorunludur?
Geçişli bağımlılıklar, güncelleme, ekleme ve silme anomalileri gibi veri fazlalığına ve anomalilere yol açar.
Veri normalleştirme nedir?
Veri normalleştirme, veritabanını veri fazlalığını azaltmak ve veri bütünlüğünü artırmak için tablolar ve sütunlar halinde düzenleme sürecidir.
Üçüncü normal form (3NF) nedir?
Üçüncü normal form (3NF), geçişli bağımlılıkların bulunmadığı bir normalleştirme tekniğidir. 3NF’de, her bir asal olmayan öznitelik yalnızca birincil anahtara bağlı olmalıdır; bu da dolaylı bağımlılıkların bulunmamasını sağlar.

