Professional Documents
Culture Documents
Normalizasyon
Normalizasyon
Normalizasyon
•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 Adım 1: ER-İlişki
tasarım dönüşümü
Kavramsal Şema
(ER Model)
Mantıksal Şema
(İlişkisel Model
İlişkisel Tasarım İlkeleri
•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)
A B
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.
Staff_No Position
Ö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
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)
• İş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
Fd3
Kısmı bağımlılık
Fd4 d.b
Fd5
Aday anahtara
bağımlılık
Fd6
Aday anahtara bağımlılık
Customer-Rental ilişkisinin 2NF’e dönüştürülmesi
Birincil anahtar
Kısmı bağımlılık
Fd2
Customer-Rental ilişkisinin 2NF’e dönüştürülmesi
Birincil anahtar
Kısmı bağımlılık
Fd3
Customer-Rental ilişkisinin 2NF’e dönüştürülmesi
Birincil anahtar
Fd4
Dolaylı bağımlılık
Customer-Rental ilişkisinin 2NF’e dönüştürülmesi
Birincil anahtar
Fd5
Aday anahtar
Customer-Rental ilişkisinin 2NF’e dönüştürülmesi
Birincil anahtar
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)
Staff_No Branch_No
Branch_NoBAddress
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_Rental 1NF
Property_Owner 2NF
Şirket2(sahip_id, sahip_adı)
sahip_id sahip_adı
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
(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..
ORDER-LINE-1 (order-no, prod-no, ord-qty, line-total)
(prod-no, prod-desc, unit-price)
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
(cust-name, cust-add )
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..
ORDER-2 (order-no, order-date, cust-no, order-total
order-no prod-no
ORDER PRODUCT