Veritabanı Tasarımı Normalleştirme

Normalleştirme, veritabanı tasarım sürecinin bir parçası olmalıdır. Ancak, normalleştirme sürecini varlık ilişkisel modelleme sürecinden ayırmak zordur, bu nedenle iki teknik eş zamanlı olarak kullanılmalıdır.

Bir kuruluşun veri gereksinimlerinin ve işlemlerinin büyük resmini veya makro görünümünü sağlamak için bir varlık ilişki diyagramı (ERD) kullanın. Bu, ilgili varlıkların, niteliklerinin ve ilişkilerinin tanımlanmasını içeren yinelemeli bir süreçle oluşturulur.

Normalleştirme prosedürü belirli varlıkların özelliklerine odaklanır ve ERD içindeki varlıkların mikro görünümünü temsil eder.

Normalizasyon Nedir?

Normalleştirme, ilişkisel teorinin tasarım içgörüleri sağlayan dalıdır. Bir tabloda ne kadar fazlalık olduğunu belirleme sürecidir. Normalleştirmenin hedefleri şunlardır:

  • İlişkisel bir şemadaki fazlalık seviyesini karakterize edebilme
  • Fazlalıkları gidermek amacıyla şemaları dönüştürmek için mekanizmalar sağlama

Normalleştirme teorisi büyük ölçüde işlevsel bağımlılıklar teorisine dayanır. Normalleştirme teorisi altı normal form (NF) tanımlar. Her normal form, bir şemanın karşılaması gereken bir dizi bağımlılık özelliği içerir ve her normal form, güncelleme anormalliklerinin varlığı ve/veya yokluğu hakkında garantiler verir. Bu, daha yüksek normal formların daha az fazlalığa ve sonuç olarak daha az güncelleme sorununa sahip olduğu anlamına gelir.

Normal Formlar

Herhangi bir veritabanındaki tüm tablolar, daha sonra tartışacağımız normal formlardan birinde olabilir. İdeal olarak PK'dan FK'ya sadece minimum fazlalık isteriz. Geri kalan her şey diğer tablolardan türetilmelidir. Altı normal form vardır, ancak biz sadece ilk dördüne bakacağız:

  • Birinci normal form (1NF)
  • İkinci normal form (2NF)
  • Üçüncü normal form (3NF)
  • Boyce-Codd normal formu (BCNF)

BCNF nadiren kullanılır.

Birinci Normal Form (1NF)

Birinci normal formda, her satır ve sütunun kesişiminde yalnızca tek bir değere izin verilir; dolayısıyla, tekrar eden gruplar yoktur.

Tekrar eden bir grup içeren bir ilişkiyi normalleştirmek için, tekrar eden grubu kaldırın ve iki yeni ilişki oluşturun.

Yeni ilişkinin PK'sı, orijinal ilişkinin PK'sı ile benzersiz tanımlama için yeni oluşturulan ilişkiden bir özniteliğin birleşimidir.

1NF için Süreç

1NF sürecini açıklamak için örnek olarak bir Okul veritabanından Student_Grade_Report tablosunu kullanacağız.

Student_Grade_Report (StudentNo, StudentName, Major, CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation, Grade)
  • Öğrenci Not Raporu tablosunda, tekrar eden grup ders bilgileridir. Bir öğrenci birçok ders alabilir.
  • Yinelenen grubu kaldırın. Bu durumda, her öğrenci için kurs bilgisidir.
  • Yeni tablonuz için PK'yı belirleyin.
  • PK, öznitelik değerini benzersiz bir şekilde tanımlamalıdır (StudentNo ve CourseNo).
  • Kurs ve öğrenciyle ilgili tüm öznitelikleri kaldırdıktan sonra, elinizde öğrenci kursu tablosu (StudentCourse) kalır.
  • Öğrenci tablosu (Student) artık yinelenen grup kaldırılmış olarak birinci normal formdadır.
  • İki yeni tablo aşağıda gösterilmektedir.
Student (StudentNo, StudentName, Major)

StudentCourse (StudentNo, CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation, Grade)

1NF anomalileri nasıl güncellenir

StudentCourse (StudentNo, CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation, Grade)

  • Yeni bir kurs eklemek için bir öğrenciye ihtiyacımız var.
  • Kurs bilgilerinin güncellenmesi gerektiğinde tutarsızlıklar yaşayabiliyoruz.
  • Bir öğrenciyi silmek için bir kursla ilgili kritik bilgileri de silebiliriz.

İkinci Normal Form (2NF)

İkinci normal form için, ilişkinin öncelikle 1NF'de olması gerekir. PK tek bir öznitelik içeriyorsa, ilişki otomatik olarak 2NF'de yer alır.

İlişki bileşik bir PK'ya sahipse, anahtar olmayan her öznitelik PK'nın bir alt kümesine değil, PK'nın tamamına tamamen bağımlı olmalıdır (yani, kısmi bağımlılık veya artırma olmamalıdır).

2NF için Süreç

Bir tablonun 2NF'ye geçebilmesi için öncelikle 1NF'de olması gerekir.

  • Öğrenci tablosu zaten 2NF'dedir çünkü tek sütunlu bir PK'ya sahiptir.
  • Öğrenci Kursu tablosunu incelerken, tüm özniteliklerin PK'ya, özellikle de tüm kurs bilgilerine tam olarak bağımlı olmadığını görürüz. Tam bağımlı olan tek öznitelik nottur.
  • Kurs bilgilerini içeren yeni tabloyu tanımlayın.
  • Yeni tablo için PK'yı tanımlayın.
  • Üç yeni tablo aşağıda gösterilmektedir.
Student (StudentNo, StudentName, Major)

CourseGrade (StudentNo, CourseNo, Grade)

CourseInstructor (CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation)

2NF anomalileri nasıl güncellenir

  • Yeni bir eğitmen eklerken bir kursa ihtiyacımız var.
  • Kurs bilgilerinin güncellenmesi eğitmen bilgilerinde tutarsızlıklara yol açabilir.
  • Bir kursun silinmesi eğitmen bilgilerini de silebilir.

Üçüncü Normal Form (3NF)

Üçüncü normal formda olmak için ilişkinin ikinci normal formda olması gerekir. Ayrıca tüm geçişli bağımlılıklar kaldırılmalıdır; anahtar olmayan bir nitelik, anahtar olmayan başka bir niteliğe işlevsel olarak bağımlı olamaz.

3NF için Süreç

  • Geçişli ilişkiye sahip tabloların her birinden geçişli ilişki(ler)deki tüm bağımlı öznitelikleri kaldırın.
  • Kaldırılan bağımlılıkla yeni tablo(lar) oluşturun.
  • Her tablonun bir belirleyicisi olduğundan ve hiçbir tablonun uygunsuz bağımlılıklar içermediğinden emin olmak için yeni tablo(lar)ı ve değiştirilen tablo(lar)ı kontrol edin.
  • Aşağıdaki dört yeni tabloya bakın.
Student (StudentNo, StudentName, Major)

CourseGrade (StudentNo, CourseNo, Grade)

Course (CourseNo, CourseName, InstructorNo)

Instructor (InstructorNo, InstructorName, InstructorLocation)

Bu aşamada, üçüncü normal formda herhangi bir anormallik olmamalıdır. Bu örnek için bağımlılık diyagramına (aşağıdaki şekil) bakalım. İlk adım, yukarıda tartışıldığı gibi tekrar eden grupları kaldırmaktır.

Student (StudentNo, StudentName, Major)

StudentCourse (StudentNo, CourseNo, CourseName, InstructorNo, InstructorName, InstructorLocation, Grade)

Okul veritabanı için normalleştirme sürecini özetlemek için aşağıdaki şekilde gösterilen bağımlılıkları gözden geçirin.

Şekil; Bağımlılık diyagramı, A. Watt tarafından.

Yukarıdaki şekilde kullanılan kısaltmalar aşağıdaki gibidir:

  • PD: kısmi bağımlılık
  • TD: geçişli bağımlılık
  • FD: tam bağımlılık (Not: FD tipik olarak işlevsel bağımlılık anlamına gelir. FD'nin tam bağımlılık için kısaltma olarak kullanılması sadece aşağıdaki şekilde kullanılmıştır).

Boyce-Codd Normal Formu (BCNF)

Bir tabloda birden fazla aday anahtar varsa, ilişki 3NF'de olsa bile anomaliler ortaya çıkabilir. Boyce-Codd normal formu 3NF'nin özel bir durumudur. Bir ilişki, ancak ve ancak her belirleyici bir aday anahtar ise BCNF'dedir.

BCNF Örnek 1

Aşağıdaki tabloyu (St_Maj_Adv) göz önünde bulundurun.

Student_idMajorAdvisor
111PhysicsSmith
111MusicChan
320MathDobbs
671PhysicsWhite
803PhysicsSmith

Bu tablo için semantik kurallar (veritabanına uygulanan iş kuralları) şunlardır:

  1. Her Öğrenci birkaç dalda uzmanlaşabilir.
  2. Her Ana Dal için, belirli bir Öğrencinin yalnızca bir Danışmanı vardır.
  3. Her Ana Dalın birkaç Danışmanı vardır.
  4. Her Danışman sadece bir Ana Dal'a danışmanlık yapar.
  5. Her Danışman, bir Ana Dalda birden fazla Öğrenciye danışmanlık yapar.

Bu tablo için işlevsel bağımlılıklar aşağıda listelenmiştir. Birincisi aday anahtardır; ikincisi değildir.

  1. Student_id, Major ——>  Advisor
  2. Advisor  ——>  Major

Bu tablo için anomaliler şunlardır:

  1. Sil - öğrenci danışman bilgilerini siler
  2. Ekleme - yeni bir danışmanın bir öğrenciye ihtiyacı var
  3. Güncelleme - tutarsızlıklar

Not: Tek bir öznitelik aday anahtar değildir.

PK, Student_id, Major veya Student_id, Advisor olabilir.

St_Maj_Adv ilişkisini BCNF'ye indirgemek için iki yeni tablo oluşturursunuz:

  1. St_Adv (Student_id, Advisor)
  2. Adv_Maj (Advisor, Major)

St_Adv tablosu

Student_idAdvisor
111Smith
111Chan
320Dobbs
671White
803Smith

Adv_Maj tablosu

AdvisorMajor
SmithPhysics
ChanMusic
DobbsMath
WhitePhysics

BCNF Örnek 2

Aşağıdaki tabloyu (Client_Interview) göz önünde bulundurun.

ClientNoInterviewDateInterviewTimeStaffNoRoomNo
CR7613-May-0210.30SG5G101
CR5613-May-0212.00SG5G101
CR7413-May-0212.00SG37G102
CR561-July-0210.30SG5G102

FD1 – ClientNo, InterviewDate –> InterviewTime, StaffNo, RoomNo  (PK)

FD2 – staffNo, interviewDate, interviewTime –> clientNO      (candidate key: CK)

FD3 – roomNo, interviewDate, interviewTime –> staffNo, clientNo    (CK)

FD4 – staffNo, interviewDate –> roomNo

Bir bağıntı, ancak ve ancak her belirleyici bir aday anahtar ise BCNF'dedir. İlk üç FD'yi içeren bir tablo (Client_Interview2 tablosu) ve dördüncü FD için başka bir tablo (StaffRoom tablosu) oluşturmamız gerekiyor.

Client_Interview2 tablosu

ClientNoInterviewDateInterViewTimeStaffNo
CR7613-May-0210.30SG5
CR5613-May-0212.00SG5
CR7413-May-0212.00SG37
CR561-July-0210.30SG5

StaffRoom tablosu

StaffNoInterviewDateRoomNo
SG513-May-02G101
SG3713-May-02G102
SG51-July-02G102

Normalleştirme ve Veritabanı Tasarımı

Veritabanı tasarımının normalleştirme süreci sırasında, tablo yapıları oluşturulmadan önce önerilen varlıkların gerekli normal formu karşıladığından emin olun. Gerçek dünyadaki pek çok veritabanı yanlış tasarlanmış veya zaman içinde uygunsuz bir şekilde değiştirildiğinde anomalilerle yüklenmiştir. Sizden mevcut veritabanlarını yeniden tasarlamanız ve değiştirmeniz istenebilir. Tablolar düzgün bir şekilde normalleştirilmemişse bu büyük bir girişim olabilir.

Alıştırmalar
Bu alıştırmaları yapmadan önce önceki bölümü ve bu bölümü tamamlayın.

1. Normalleştirme nedir?

2. Bir tablo ne zaman 1NF’de olur?

3. Bir tablo ne zaman 2NF’dedir?

4. Bir tablo ne zaman 3NF’dedir?

5. Aşağıdaki şekilde gösterilen bağımlılık diyagramında belirtilen bağımlılıkların her birini tanımlayın ve tartışın.
Şekil; Soru 5 için, A. Watt tarafından.

6. Yeni bir kolej, öğrencileri ve kursları takip etmek için aşağıdaki şekildeki tablo yapısını kullanır.
Bu tablo için bağımlılık diyagramını çizin.
Şekil; Soru 6 için, A. Watt tarafından.

7. Az önce çizdiğiniz bağımlılık diyagramını kullanarak, karşılaştığınız sorunları çözmek için oluşturacağınız tabloları (üçüncü normal formlarında) gösterin. Sabit tablo için bağımlılık diyagramını çizin.

8. Instant Cover adlı bir ajans İskoçya’daki otellere yarı zamanlı/geçici personel sağlıyor. Aşağıdaki şekil, çeşitli otellerde çalışan acente personelinin harcadığı zamanı listelemektedir. Ulusal sigorta numarası (NIN) her personel için benzersizdir. (a) ve (b) sorularını yanıtlamak için aşağıdaki şekli kullanınız.
Şekil; Soru 8 için, A. Watt tarafından.

—1. Bu tablo güncelleme anormalliklerine karşı hassastır. Ekleme, silme ve güncelleme anomalilerine örnekler veriniz.

—2. Bu tabloyu üçüncü normal forma normalize edin. Varsayımları belirtiniz.

9. Boşlukları doldurun:
—1. _____ bir alt normal form üretir.
—2. Değeri bir satırdaki diğer değerleri belirleyen herhangi bir özniteliğe a(n) _____ denir.
—3. Daha fazla bölünemeyen bir özniteliğin _____ gösterdiği söylenir.
—4. _____ bir tablo satırında depolanan değerlerin temsil ettiği ayrıntı düzeyini ifade eder.
—5. İlişkisel bir tablo _____ grupları içermemelidir.

Ayrıca bkz Ek; Örnek ERD Alıştırmaları

Bibliyografya

Nguyen Kim Anh, Relational Design Theory. OpenStax CNX. 8 Jul 2009 Retrieved July 2014 from http://cnx.org/contents/606cc532-0b1d-419d-a0ec-ac4e2e2d533b@1@1

Russell, Gordon. Chapter 4 – Normalisation. Database eLearning. N.d. Retrived July 2014 from db.grussell.org/ch4.html

Önceki Ders: Fonksiyonel Bağımlılıklar

Sonraki Ders: Veritabanı Geliştirme Süreci

Yorumlar

Bu blogdaki popüler yayınlar

Gelişim ve Kalıtım Eleştirel Düşünme Soruları

Periodonsiyum Klinik Uygulamalar

Dentin Oluşumu