NORMALLEŞTİRME Normalleştirmenin amacı

Slides:



Advertisements
Benzer bir sunumlar
Veri Tabanı Yapıları İçerik aşağıdaki Kitaptan alınmıştır.
Advertisements

Microsoft Access Bu program Microsoft program paketinin içerisinde yer alan; çok büyük miktarlardaki verilerin depolanabileceği veritabanı oluşturmamıza.
Veri Tabanı Tasarlama İlk kuralımız, olabildiğince bilgileri parçalamaktır.
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
SQL Structured Query Language
KARMAŞIK SORGULAR.
Varlık-ilişkisel Model
RELATIONAL DATABASE MAGAMENT SYSTEM (RDMS)
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
SQL KOMUTLARI.
ER diyagramının tablolara dönüşümü
Normalizasyon Kuralları & SQL
İLİŞKİSEL VERİ MODELİ Tablolar ile Gösterim
Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
E-R Çizelgelerini İVTYS’ye Dönüştürme
Veri Tabanı Normalizasyonu Devrim ALTINKURT
Varlık-İlişki Modeli Örneği
İndeksler Sibel SOMYÜREK.
İlişkisel Veri Modeli.
Normalleştirmenin amacı Veri fazlalığı ile bağlı sorunlar
Veri Tabanı Yönetim Sistemleri
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
Kavramlar İlişki (Relation)
BÖLÜM 6 SQL SERVER KOMUTLARI.
4 Veri Bütünlüğü ve Constraint’ler
Veritabanı Yönetim Sistemleri-I
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
GÖRÜNÜŞLER (VİEWS). Görünüş Temel tablolar üzerinde yeni bir tablo almak için yapılan işlemlerin sonucu Sanal tablo- gerçekten veri tabanında yoktur ve.
ER Şemaları Kullanılarak İlişkisel Veritabanının Tasarlanması
MySQL Operatörleri ve Fonksiyonları
VERİTABANI ve YÖNETİMİ
Veritabanı Tasarımı ve Yönetimi
Normalizasyon Bütünlük Kısıtları. (integrity constraints) Veritabanında yer alacak değerleri sınırlar. Nesne bütünlüğü: Her nesne “unique” olarak ifade.
Üç Şema Modeli (Three Schema Model)
Varlık-İlişki Modeli (E-R Modeli)
SQL (Structured Query Language). MySQL de Temel Komutlar : CREATE DATABASE isim; verilen isimde bir veri tabanı oluşturur. SHOW DATABASES; Tüm yaratılan.
SQL Komutları (2) Uzm. Murat YAZICI.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Veri Tabanı Dersi 4. Laboratuvarı
İlişkisel Cebir İlişkisel Hesaplama
DEVRE TEOREMLERİ.
COMPANY Veritabanı Örneği (Gereksinimler)
SQL’ e Giriş Uzm. Murat YAZICI.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Bölüm 4: İleri SQL.
COSTUMES KILIKLAR (KOSTÜMLER)
Veritabanı Kavramları
Database for APED Büşra Bilgili | Emirhan Aydoğan | Meryem Şentürk | M. Arda Aydın COMPE 341.
AVL Trees / Slide 1 Silme * Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. * Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazi.
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
VERİ TABANI DERS NOTLARI
E-R Çizelgelerini İVTYS’ye Dönüştürme
Anadolu Üniversitesi Arkeoloji Bölümü
RA-Relational Algebra
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
NİŞANTAŞI ÜNİVERSİTESİ
DML ile veri ekleme, silme ve değiştirme
Sorgu / dml / ddl komutları
NİŞANTAŞI ÜNİVERSİTESİ
Chapter 2 (Bölüm2) The double entry system for assets, liabilities and capital (Varlıklar, borçlar ve sermaye için çift kayıt sistemi)
Before the Battle of Çanakkale. Why a Front in Çanakkale was Opened? In the summer of 1914, the war continued in Europe with all its intensity, and by.
İLERİ VERİ TABANI UYGULAMALARI
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

NORMALLEŞTİRME Normalleştirmenin amacı Veri fazlalığı ile bağlı sorunlar Güncelleme sapmaları (anomalileri) İşlevsel bağımlılıklar İlişkilerin normal biçimleri Normalleştirme süreci Yaygın Kullanılan Normal Biçimler

Tasarım sürecinde Normalleştirmenin yeri Kavramsal tasarım Adım 1: ER-İlişki dönüşümü Adım 2: Normalleştirme: Tasarımı geliştirme Kavramsal Şema (ER Model) Mantıksal Tasarım Mantıksal Şema (İlişkisel Model

İlişkisel Tasarım İlkeleri İlişkilerin anlamsal bütünlüğü olmalıdır Veri tekrarlanmaları önlenmelidir: sapmalar: ekleme, silme, değişiklik yapma Null değerlerden mümkün oldukça kaçınılmalıdır Yorumlama zorluğu: Belli değil, erişile bilen değil, uygulana bilen değil Yapay birleşmelrden kaçınılmalıdır

Normalleştirme İlişkisel veri tabanlarının geliştirilme aşaması olan mantıksal veri modelinin oluşturulmasında başlıca hedef, verilerin, veriler arasındaki ilişkilerin ve sınırlamaların kesin, tam ifade edilmesidir. Bu hedefe ulaşmak için uygun ilişkiler kümesi tanımlanmalıdır. Böyle ilişkilerin tanımlanması işlevine normalleştirme denir. Normalleştirme- veri gereksinimlerinde tanımlanmış olan, arzu olunan nitelikleri bulunan ilişkiler kümesinin üretilmesi sürecidir.

Normalleştirme (devamı) Kötü tasarlanmış veri tabanlarının, sapmalar nedeniyle kullanım zorlukları bulunmaktadır: Sapmalar: Değiştirme –özelliğin değerinin değiştirilmesi veri tabanının tutarsızlığına neden ola bilir Ekleme – bazı tasarım kusurlarından dolayı satır eklenmesi mümkün olmaya bilir Silme - satır silinmesi bilgilerin beklenmeyen kaybına neden ola bilir Normalleştirme tüm bu sapmaların kaldırılması için veri tabanı tasarımında yapılan düzenli süreçtir.

Değiştirme Sapması (örnek) ŞİRKETLER(şirket_adı, şirket_adresi,kuruluş_tarihi, sahip_adı, sahiplik_belgesi, pay ) Eğer şirketin üç sahibi varsa, ŞİRKETLER ilişkisinde bu şirket için üç satır olacaktır Eğer bu şirket yeni adrese taşınmış olsa, şirketin adresi her üç satırda uyumlu biçimde değiştirilmelidir. Şirketin yeni adresinin her üç satırda değil, bir veya iki satırda kaydedilmesi veya yanlış kaydedilmesi veri tabanının tutarsız durumuna neden olacaktır.

Ekleme Sapması (örnek) ŞİRKETLER(şirket_adı, şirket_adresi,kuruluş_tarihi, sahip_adı, sahiplik_belgesi, pay ) Varsayalım ki, üç kişi yeni şirket kuruyor: Üç kurucunun henüz sahiplik belgeleri (titles) yoktur Sermaye hisseleri henüz paylaştırılmayıp Yeni şirket ŞİRKETLER ilişkisine ilave edilemez, çünkü satırın tüm özelliklerini değerlendirmek için yeterli bilgi yoktur. satırı tamamlamak için null değer kullanılmalıdır

Silme Sapması (örnek) ŞİRKETLER(şirket_adı, şirket_adresi, kuruluş_tarihi, sahip_adı, sahiplik_belgesi, pay ) Varsayalım ki, şirketin sahiplerinden birisi belirli bir süre için sahiplikten çekilmiştir. Ama hisseleri şirkette kalmaktadır. Eğer bu kişiye ait satır ŞİRKETLER ilişkisinden silinirse, onun şirkette ne kadar hissesi olduğu hakkında bilgiyi de kaybetmiş oluruz.

Veri Fazlalığı ve Güncelleme Sapmaları (örnek)

Staff_Branch ilişkisinde güncelleme sapmaları (ekleme) 1. Varsayalım ki, Branch_Staff ilişkisine yeni personelin kayıtları eklenmelidir. Bu halde personelin çalışacağı şubenin bilgileri de girilmelidir. Örneğin, yeni personel B7 şubesine kabul edilmişse, bu şubenin bilgileri öyle kaydedilmelidir ki, bu bilgiler B7 şubesi bilgileri bulunan diğer satırlardaki bilgilerle aynı olsun, yani veri tutarsızlığı oluşmasın. Bu muhtemel hatanı önlemek için Staff_Branch ilişkisinin iki ilişkiye parçalanması (Staff ve Branch) gerekmektedir. 2. Varsayalım ki, yeni şube oluşturulmuş, ama bu şubeye henüz personel atanmamıştır. Personel bilgileri yerine null değerler yazıla bilir. Ama Staff_No ilişkide birincil anahtar olduğundan null değer alamaz. Bu ikilemi önlemek için Staff_Branch ilişkisinin iki ilişkiye parçalanması (Staff ve Branch) gerekmektedir. Staff_Branch(Staff_No,SName,SAddress, Position, Salary, Banch_no,BAddress, Tel_No)

Staff_Branch ilişkisinde güncelleme sapmaları (silme) 1. Varsayalım ki, Branch_Staff ilişkisinden şubede çalışan sonuncu personel hakkındaki bilgiler de silinmelidir Ama bu bilgilerin silinmesi, şube hakkındaki bilgilerin de kaybına neden olacaktır.(böyle ki, bu şube hakkında bilgiler ilişkinin diğer hiçbir satırında bulunmuyor). Örneğin, ilişkiden SA9 (Mary Howe) bilgilerinin silinmesi ile B7 şubesi hakkındaki bilgileri de kaybedeceğiz. Bu olası itkileri önlemek için Staff_Branch ilişkisinin iki ilişkiye parçalanması (Staff ve Branch) gerekmektedir. Staff_Branch(Staff_No,SName,SAddress, Position, Salary, Banch_no,BAddress, Tel_No)

Staff_Branch ilişkisinde güncelleme sapmaları (güncelleme) Varsayalım ki, Branch_Staff ilişkisinden her hangi bir şubenin bir veya birkaç özellik değerini değiştirmek gerekmektedir.Örneğin, B7 şubesinin telefon numarası değiştirilmelidir. Bunun için ise Staff_Branch ilişkisindeki B7 şubesinde çalışan personellere uygun tüm satırlar güncellenmelidir. Eğer tüm gereken satırlar güncellenmezse bu veri tabanının tutarsızlığına neden olacaktır.Yani, B7 şubesi hakkındaki bilgileri içeren farklı satırlarda şubenin telefon numaraları farklı görünecektir. Staff_Branch(Staff_No,SName,SAddress, Position, Salary, Banch_no,BAddress, Tel_No)

Veri Fazlalığı ve Güncelleme Sapmaları (devamı) Ekleme anormalliği Silme Anormalliği Değiştirme anormalliği

Ne yapmalı? Mantıksal tasarım sürecinde oluşturulmuş her bir veri ilişkisini ayrılıkta gözden geçirmeli ve arzu olunan niteliklere ulaşmak için ilişkileri “iyileştirmeli” Normal biçimler Atomik değerler (1NF) Anahtarlara ve bağımlılıklara göre tanımlana bilir. İşlevsel bağımlılıklar ( 2NF, 3NF, BCNF) Normalleştirme Normalleştirme,”yukarıdan aşağıya” metodolojisinin uygulandığı ve ardışık parçalamalar ve arındırmalar yolu ile yeni ilişkilerin oluşturulduğu tasarım sürecidir.

Normalleştirme sorunları Şema arzu olunan normal biçimlere nasıl parçalanmalıdır? Kaynak şemanın anlamsal bütünlüğünü korumak için parçalanmış şemalara hangi kıstaslar koyulmalıdır? Yeniden yapılabilirlik: kaynak şemanın yeniden elde edilmesi  yapay bitiştirmeler yoktur Parçalamada kayıp olmaması: bilgi kaybı yoktur Kısıtlamaların korunması: kaynak şemada bulunan kısıtlamalar parçalanmış ilişkilerde tanımlanan kısıtlamalarla uygulanabilir olmalıdır. Bitiştirme işlemlerinden dolayı sorguların işlem süresi yükseliyor

İşlevsel Bağımlılıklar İşlevsel bağımlılık- ilişkideki özellikler arasındaki bağlantıları ifade ediyor. Eğer A ve B, R ilişkisinin özellikleri ise , ve A’nın her bir değerine B’nin kesin bir değeri uygun ise B işlevsel olarak A’ya bağımlıdır.(A B) B A B, A’ya işlevsel bağımlıdır

İşlevsel Bağımlılıklar İşlevsel bağımlılık ilişkisel veri tabanının iki özellikler kümesi arasındaki kısıtlamayı ifade ediyor. Eğer X ve Y aynı T ilişkisinin özellikleri kümeleri ise, o zaman X  Y , X’in işlevsel olarak Y’ni tanımlaması anlamını veriyor: X’deki özellik değerleri Y’deki özellik değerlerini tekdeğerli tanımlar T’deki her hangi iki t1 ve t2 satırları için t1[X] = t2[X] olması t1[Y] = t2[Y] anlamına gelir (Eğer T ilişkisinin iki satırı X sütunu(sütunları)üzere aynıdırsa, onların Y sütunu(sütunları) da aynı olmalıdır)

İşlevsel bağımlılıklar ŞİRKETLER(şirket_adı, şirket_adresi, kuruluş_tarihi, sahip_adı, sahiplik_belgesi, pay ) şirket_adı  şirket adresi şirket_adı  kuruluş_tarihi şirket_adı, sahip_id  sahiplik_belgesi şirket_adı, sahip_id  pay şirket_adı, sahiplik_belgesi  sahip_id sahip_id  sahip_adı

İşlevsel Bağımlılıklar Belirleyici- bağımlılık işaretinin solundaki özellik veya özellikler grubuna işlevsel bağımlılığın belirleyicisi denir Position Staff_no’ya işlevsel bağımlıdır Position Staff_No Staff number SL21 Manager Staff_no Position’a işlevsel bağımlı değil Position X Staff_No Staff Number SL21 Staff Number SG5 Manager

Staff-Branch İlişkisi üzere işlevsel bağımlılıklar Staff_No SName Branch_No BAddress Staff_No SAddress Branch_No Tel_no Staff_No Position BAddress Tel_No Staff_No Salary BAddress Branch_No Staff_No Branch_No Staff_No BAddress Tel_No Branch_No Staff_No Tel_No Tel_No BAddress Staff_No,Branch_No,BAddress , Tel_No belirleyicilerdir. (Her şubenin bir telefonu olduğunu varsayıyoruz) Staff_Branch (Staff_No,SName,SAddress, Position, Salary, Banch_no,BAddress, Tel_No)

Normal Biçimler arasında bağlılık

Tekrarlanan Gruplar Tekrarlanan grup, birincil anahtar değeri için birden fazla değeri bulunan özellik veya özellikler kümesidir Örnek: aşağıdaki örnekte şube ve personel bilgileri ,her bir personelle irtibat telefonları verilmiştir. (contact number –tekrarlanan gruptur) staffNo job dept dname city contact number SL10 Salesman 10 Sales Stratford 018111777, 018111888, 079311122 SA51 Manager 20 Accounts Barking 017111777 DS40 Clerk 20 Accounts Barking OS45 Clerk 30 Operations Barking 079311555 Tasarımda Tekrarlanan gruplara izin verilmez, tüm özellikler bölünmez olmalıdır,yani tablonun her hücresinde tek bir değer bulunmalıdır

Normalolmayan biçim- Unnormalized Form -(UNF) Bir veya daha fazla tekrarlanan gruplar içeren ikiboyutlu tablo normal olmayan tablodur Normal olmayan tablo oluşturmak için Bilgi kaynaklarından verileri ikiboyutlu tabloya aktarmak yeterlidir.

Birinci Normal Biçim Normal olmayan biçim (unnormalized form)-UNF- tablonun satırlarında özellik veya özellikler çokdeğerli ifade edilmişse böyle tablo normal olmayan biçimdedir Birinci normal biçim (1NF) -ilişkinin her hücresi (satır ve sütunların kesişmesi) yalnız ve yalnız bir değer içeriyorsa, bu ilişki birinci normal biçimdedir.

UNF’den 1NF’e dönüştürme Normalleştirilmemiş tablon için anahtar olacak özellik veya özellikler kümesini belirlemeli. Normal olmayan tablodaki tekrarlanan grubun her öğesini anahtarla bir yerde tanımlamalı (gruptaki her değer için anahtarı tekrarlamalı)

UNF’den 1NF’e dönüş Tüm anahtar özellikler tanımlanmıştır Tabloda tekrarlanan gruplar yoktur Tüm özellikler birincil anahtara bağımlıdır

İkinci Normal Biçim (2NF) Tam işlevsel bağımlılk kavramına dayalıdır: A ve B ilişkinin özellikleridir, B özelliği A özelliğine işlevsel bağımlı olup A’nın her hangi altkümesine bağımlı değilse o zaman B, A’ya tam bağımlıdır, 2NF – Birinci normal biçimde olup her bir birincil anahtar olmayan özellikleri birincil anahtardan tam bağımlı ise (kısmı bağımlılığın olmaması) bu ilişki ikinci normal biçimdedir

1NF’den 2NF’e dönüştürme 1NF ilişkisi için birincil anahtarı tanımlamalı İlişkideki işlevsel bağımlılıkları tanımlamalı Eğer birincil anahtar üzere kısmı bağımlılıklar varsa bu bağımlılıkları oluşturan özellikleri onların belirleyicilerinin kopyası ile yeni bir ilişkiye taşımalı

İkinci Normal Biçim Tam işlevsel bağımlılık- A ve B ilişkinin özellikleri ise, eğer B, işlevsel olarak A’ya bağımlı ise, ama A’nın her hangi alt kümesine bağımlı değilse, o zaman B özelliği A özelliğine tam işlevsel bağımlıdır A ve B özellikleri (özellikler kümeleri) işlevsel bağımlı ise (A B) ve A özellikler kümesinden her hangi özelliğin çıkarılması bu bağımlılığı bozmazsa, A B bağımlılığına kısmı bağımlılık denir Staff_No,SName Branch_No Bağımlılğı tam işlevsel bağımlılık değil, çünkü, Branch_no aynı zamanda Staff_No özelliğine de işlevsel bağımlıdır.

İkinci Normal Biçim Eğer ilişki birinci normal biçimde ise ve her bir birincil anahtar olmayan özellik birincil anahtardan tam işlevsel bağımlı ise , bu ilişki ikinci normal biçimdedir (2NF) 1NF’den 2NF’e geçmek için kısmı bağımlılıklar kaldırılmalıdır.

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Customer_No,Property_No özellikler kümesini birincil anahtar olarak kabul ettiğimizi varsayıyoruz İşlevsel bağımlılıklar Fd1 Customer_No,Property_No  RentStart, RentFinish (tam bağımlılık) Fd2 Customer_No  CName (kısmı bağımlılık) Fd3 Property_No  PAdderss,Rent,Owner_No, OName (kısmı bağımlılık) Fd4 Owner_No  Owner_name (dolaylı bağımlılık) FD5 Customer_No,RentStart  Property_no, PAdderss,RentFinish, Rent, Owner_No,OName (aday anahtara bağımlılık) Fd6 Property_No,RentStart  Customer_no, CName,RentFinish (aday anahtara bağımlılık)

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd1 Fd2 Fd3 Fd4 Fd5 Fd6 Birincil anahtara tam bağımlık Kısmı bağımlılık Kısmı bağımlılık d.b Aday anahtara bağımlılık Aday anahtara bağımlılık

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd2 Kısmı bağımlılık

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd1 Birincil anahtar

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd3 Kısmı bağımlılık

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd4 Dolaylı bağımlılık

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd5 Aday anahtar

Customer-Rental ilişkisinin 2NF’e dönüştürülmesi Birincil anahtar Customer_No Property_no CName PAddress Rent Start Rent Finish Rent Owner_no OName Fd6 Aday anahtar

Customer-Rental İlişkisinin 2NF’e dönüştürülmesi

Customer_Rental İlişkisinin 2NF’e dönüştürülmesi Customer_Rental (Customer_No,Property_No, CName, PAddress, RentStart, RentFinish, Rent, Owner_No,OName) Customer_No (Customer_No,CName) Rental (Customer_No,Property_No, RentStart,RentFinish) Property_Owner(Property_No, PAddress,Rent, Owner_No,OName)

Üçüncü Normal Biçim (3NF) Dolaylı bağımlılık kavramına dayanmaktadır: A, B ve C ilişkinin özellikleridir; A  B ve B  C ise O zaman C A’dan B özelliği aracılığıyla dolaylı bağımlıdır 3NF - 1NF ve 2NF de olup, birincil anahtar olmayan özelliklerinin birincil anahtara dolaylı bağımlı olmadığı ilişkidir.

2NF’den 3NF’e dönüştürme Birincil anahtarı 2NF’de tanımlamalı İlişkideki işlevsel bağımlılıkları tanımlamalı. Eğer birincil anahtara işlevsel bağımlılık varsa bu bağımlılığı oluşturan özellikleri belirleyicilerinin kopyası ile birlikte yeni bir ilişkiye taşımalı

3NF’e dönüştürme sonuçları Prevent referential integrity violation by adding a JOB_CODE PROJECT (PROJ_NUM, PROJ_NAME) ASSIGN (PROJ_NUM, EMP_NUM, HOURS) EMPLOYEE (EMP_NUM, EMP_NAME, JOB_CLASS) JOB (JOB_CODE, JOB_DESCRIPTION, CHG_HOUR)

Üçüncü Normal Biçim Dolaylı bağımlılık- A, B ve C ilişkinin özellikleri ise ve A  B ve B  C ise, o zaman C, A’dan B aracılığıyla dolaylı bağımlıdır. Staff_No  Branch_No Branch_NoBAddress Üçüncü normal biçim (3NF)- eğer ilişki birinci ve ikinci normal biçimde ise ve birincil anahtar olmayan özellikler birincil anahtardan dolaylı bağımlı değilse , bu ilişki üçüncü normal biçimdedir

Üçüncü Normal Biçim Customer, Rental ve Property_Owner ilişkilerindeki işlevsel bağımlılıklar : Customer ilişkisi Fd2 Customer_No  CName Rental İlişkisi Fd1 Customer_No,Property_No  RentStart,RentFinish FD5 Customer_No,RentStart  Property_no, RentFinish Fd6 Property_No,RenStart  Customer_no, RentFinish Property_Owner İlişkisi Fd3 Property_No Paddress, Rent,Owner_No,OName Fd6 Owner_No  OName Customer ve Rental ilişkilerinde dolaylı bağımlılık yoktur. Tüm birincil olmayan özellikler birincil anahtara işlevsel bağımlıdır

Property_Owner ilişkisinin 3NF’e dönüştürülmesi Property_Owner ilişkisinde OName özelliğinin dışında tüm özellikler birincil anahtara işlevsel bağımlıdır. OName ise aynı zamanda Owner_No’ya bağımlıdır (Fd4). 3NF’e dönüştürmek için dolaylı bağımlılık kaldırılmalıdır. Bunu 2 yeni ilişki oluşturmakla yapa bileriz: Property_for_Rent (Property_No,PAdderss,Rent,Owner_No) Owner (Owner_No,OName)

Customer_Rental tablosunun 1NF’den 3NF’e dönüştürülmesi Property_Owner 2NF Customer Rental Property_for_rent Owner 3NF

Customer_Rental tablosunun 3NF ilişkilerinin alınması

ŞİRKETLER ilişkisinin normalleştirme sonuçu parçalanması ŞİRKET1(şirket_adı, şirket_adresi, kuruluş_tarihi, sahip_id, sahip_belgesi, pay) Şirket_adı  şirket_adresi, kuruluş_tarihi Şirket_adı, sahip_id  sahip_belgesi, pay Şirket-adı, sahip_belgesi  sahip_id Şirket2(sahip_id, sahip_adı) sahip_id  sahip_adı Şirket1 yeniden parçalanıyor: Şirket1(şirket_adı, şirket_adresi, kuruluş_tarihi) Şirket12(şirket_adı, sahip_id, sahip_belgesi, pay)

Stages of Normalisation Unnormalised (UDF) First normal form (1NF) Remove repeating groups Second normal form (2NF) Remove partial dependencies Third normal form (3NF) Remove transitive dependencies Boyce-Codd normal form (BCNF) Remove remaining functional dependency anomalies Fourth normal form (4NF) Remove multivalued dependencies Fifth normal form (5NF) Remove remaining anomalies

Unnormalised Normal Form (UNF) Definition: A relation is unnormalised when it has not had any normalisation rules applied to it, and it suffers from various anomalies. This only tends to occur where the relation has been designed using a ‘bottom-up approach’. i.e., the capturing of attributes to a ‘Universal Relation’ from a screen layout, manual report, manual document, etc...

Unnormalised Normal Form (UNF) ORDER (order-no, order-date, cust-no, cust-name, cust-add, (prod-no, prod-desc, unit-price, ord-qty, line-total)*, order-total

First Normal Form (1NF) Definition: A relation is in 1NF if, and only if, all its underlying attributes contain atomic values only. Remove repeating groups into a new relation A repeating group is shown by a pair of brackets within the relational schema. ORDER (order-no, order-date, cust-no, cust-name, cust-add, (prod-no, prod-desc, unit-price, ord-qty, line-total)*, order-total Steps from UNF to 1NF: Remove the outermost repeating group (and any nested repeated groups it may contain) and create a new relation to contain it. Add to this relation a copy of the PK of the relation immediately enclosing it. Name the new entity (appending the number 1 to indicate 1NF) Determine the PK of the new entity Repeat steps until no more repeating groups.

Example - UNF to 1NF ORDER (order-no, order-date, cust-no, cust-name, cust-add, (prod-no, prod-desc, unit-price, ord-qty, line-total)*, order-total 1. Remove the outermost repeating group (and any nested repeated groups it may contain) and create a new relation to contain it. (rename original to indicate 1NF) ORDER-1 (order-no, order-date, cust-no, cust-name, cust-add, order-total (prod-no, prod-desc, unit-price, ord-qty, line-total) 2. Add to this relation a copy of the PK of the relation immediately enclosing it. ORDER-1 (order-no, order-date, cust-no, cust-name, cust-add, order-total (order-no, prod-no, prod-desc, unit-price, ord-qty, line-total) 3. Name the new entity (appending the number 1 to indicate 1NF) ORDER-LINE-1 (order-no, prod-no, prod-desc, unit-price, ord-qty, line-total) 4. Determine the PK of the new entity ORDER-LINE-1 (order-no, prod-no, prod-desc, unit-price, ord-qty, line-total)

Second Normal Form (2NF) Definition: A relation is in 2NF if, and only if, it is in 1NF and every non-key attribute is fully dependent on the primary key. Remove partial functional dependencies into a new relation Steps from 1NF to 2NF: Remove the offending attributes that are only partially functionally dependent on the composite key, and place them in a new relation. Add to this relation a copy of the attribute(s) which are the determinants of these offending attributes. These will automatically become the primary key of this new relation. Name the new entity (appending the number 2 to indicate 2NF) Rename the original entity (ending with a 2 to indicate 2NF)

Example - 1NF to 2NF ORDER-LINE-1 (order-no, prod-no, prod-desc, unit-price, ord-qty, line-total) 1. Remove the offending attributes that are only partially functionally dependent on the composite key, and place them in a new relation. ORDER-LINE-1 (order-no, prod-no, ord-qty, line-total) (prod-desc, unit-price) 2. Add to this relation a copy of the attribute(s) which determines these offending attributes. These will automatically become the primary key of this new relation.. (prod-no, prod-desc, unit-price) ORDER-LINE-1 (order-no, prod-no, ord-qty, line-total) 3. Name the new entity (appending the number 2 to indicate 2NF) PRODUCT-2 (prod-no, prod-desc, unit-price) 4. Rename the original entity (ending with a 2 to indicate 2NF) ORDER-LINE-2 (order-no, prod-no, ord-qty, line-total)

Third Normal Form (3NF) Definition: A relation is in 3NF if, and only if, it is in 2NF and every non-key attribute is non-transitively dependent on the primary key. Remove transitive dependencies into a new relation Steps from 2NF to 3NF: Remove the offending attributes that are transitively dependent on non-key attribute(s), and place them in a new relation. Add to this relation a copy of the attribute(s) which are the determinants of these offending attributes. These will automatically become the primary key of this new relation. Name the new entity (appending the number 3 to indicate 3NF) Rename the original entity (ending with a 3 to indicate 3NF)

Example - 2NF to 3NF ORDER-2 (order-no, order-date, cust-no, cust-name, cust-add, order-total 1. Remove the offending attributes that are transitively dependent on non-key attributes, and place them in a new relation. (cust-name, cust-add ) ORDER-2 (order-no, order-date, cust-no, order-total 2. Add to this relation a copy of the attribute(s) which determines these offending attributes. These will automatically become the primary key of this new relation.. (cust-no, cust-name, cust-add ) ORDER-2 (order-no, order-date, cust-no, order-total 3. Name the new entity (appending the number 3 to indicate 3NF) CUSTOMER-3 (cust-no, cust-name, cust-add ) 4. Rename the original entity (ending with a 3 to indicate 3NF) ORDER-3 (order-no, order-date, cust-no, order-total

Example - Relations in 3NF CUSTOMER-3 (cust-no, cust-name, cust-add ) ORDER-3 (order-no, order-date, cust-no, order-total ORDER-LINE-2 (order-no, prod-no, ord-qty, line-total) PRODUCT-2 (prod-no, prod-desc, unit-price) CUSTOMER ORDER ORDER-LINE PRODUCT places placed by contains part of shows belongs to cust-no order-no prod-no order-no, prod-no