Normalization การตรวจสอบความถู กต้องของการออกแบบระบบฐานข้อมู ล ้ ้ า ต้องมีขบวนการการตรวจสอบอย่างเป็ นขันตอน เราเรียกขบวนการนี ว่ Normalization. Normalization is a formal method involved with a series of test to help database designer to be able to identify the optimal grouping of attributes for each relation in the relational schema. Normalization can be applied to individual relations so that database can be normalized to a specific form to prevent the possible occurrence of update anomaly. Data Redundancy and Update Anomalies วัคถุประสงค์หลักของการออกแบบระบบฐานข้อมูลคือ การจัดกลุ่ม attributes ในแต่ละรีเลชันเพื ่ อ่ ลดความซ้าซ้อนของข้อมูล ซึง่ ส่งผลถึงการประหยัดเนื้อทีใ่ นการจัดเก็บ ฐานข้อมูลด้วย รีเลชันที ่ ม่ ขี อ้ มูลซ้าซ้อนมาก ก่อปั ญหา UPDATE ANOMALIES ซึง่ แบ่ง ออกเป็ น 3 ประเภทคือ Insertion anomalies Deletion Anomalies Modification Anomalies Insertion Anomalies Deletion Anomalies Modification Anomalies Insertion Anomalies To insert the details of new members of staff into the Staff_Branch relation, we must include the details of the branch at which the staff are to be located. Deletion Anomalies If we delete a row from the Staff_Branch relation that represents the last member of staff located at a branch, the details about that branch are also lost from the database. Modification Anomalies If we want to change the value of one of the attributes of a particular branch in the Staff_Branch relation, we must update the rows of all staff located at that branch. If this modification is not carried out on all the appropriate rows of the Staff_Branch relation, the data base will become inconsistent. Staff_Branch Relation Staff_No SName SAddress Position Salary Branch_No BAddress Tel_No SL21 John White 19 Taylor St, London Manager 30000 B5 22 Dear Rd,London 02-704-8109 SG37 Ann Beech 81 George St, Glasgow Snr Asst 12000 B3 163 Main St,Glasgow 02-953-8018 SG14 David Ford 63 Ashby St, Glasgow Deputy 18000 B3 163 Main St,Glasgow 02-255-8128 SA9 Mary Howe 2 Elm Pl, Aberdeen Assistant 9000 B7 16 Argyll St, Aberde 02-775-4995 SG5 Susan Brand 5 Gt Western Rd, Glas Manager 24000 B3 163 Main St,Glasgow 02-987-1234 SL41 Julie Lee 28 Malvern St,Kilburn Assistant 9000 B5 22 Dear Rd,London 02-342-5616 Snew1 Julie Lee Yupin New 228Ngamvongvan,BKK Malvern St,Kilburn Assistant Snr Mgr 9000 22000 B3 163 Main St,Glasgow 02-255-8128 NULL NULL NULL NULL NULL B8 16 Lake Show 02-221-8128 Delete Anomalies Staff_Branch Relation Staff_No SName SAddress Position Salary Branch_No BAddress Tel_No SL21 John White 19 Taylor St, London Manager 30000 B5 22 Dear Rd,London 02-704-8109 SG37 Ann Beech 81 George St, Glasgow Snr Asst 12000 B3 163 Main St,Glasgow 02-953-8018 SG14 David Ford 63 Ashby St, Glasgow Deputy 18000 B3 163 Main St,Glasgow 02-255-8128 SA9 Mary Howe 2 Elm Pl, Aberdeen Assistant 9000 B7 16 Argyll St, Aberde 02-775-4995 SG5 Susan Brand 5 Gt Western Rd, Glas Manager 24000 B3 163 Main St,Glasgow 02-987-1234 SL41 Julie Lee 28 Malvern St,Kilburn Assistant 9000 B5 22 Dear Rd,London 02-342-5616 Modification Anomalies Staff_Branch Relation Staff_No SName SAddress Position Salary Branch_No BAddress Tel_No SL21 John White 19 Taylor St, London Manager 30000 B5 22 Dear Rd,London 02-704-8109 SG37 Ann Beech 81 George St, Glasgow Snr Asst 12000 B3 163 Main St,Glasgow 02-953-8018 SG14 David Ford 63 Ashby St, Glasgow Deputy 18000 B3 163 Main St,Glasgow 02-255-8128 SA9 Mary Howe 2 Elm Pl, Aberdeen Assistant 9000 B7 16 Argyll St, Aberde 02-775-4995 SG5 Susan Brand 5 Gt Western Rd, Glas Manager 24000 B3 163 Main St,Glasgow 02-987-1234 SL41 Julie Lee 28 Malvern St,Kilburn Assistant 9000 B5 22 Dear Rd,London 02-342-5616 Functional Dependencies One of the main concepts associated with normalization is functional dependency, which describes the relationship between attributes. นิยามของกฎเกณฑ์ ของการขึน้ ต่ อกัน (Definition of Functional Dependency) ระบุไว้วา่ สมมุติให้ B เป็ นแอตทริ บิวตัวหนึ่ง และ A แอตทริ บิวอีกตัว หนึ่ง ( A อาจเป็ นเซ็ตของแอตทริ บิวก็ได้) เรากล่าวว่า B เป็ นฟังก์ชนั่ การขึ้นอยู่ กับ A (denoted A B) ก็ต่อเมื่อค่าของ A สามารถใช้ในการเลือก (determine) ค่าของ B ได้เพียง 1 ค่าเสมอ สัญญลักษณ์การขึ้นต่อกัน (A B) อ่านได้ดงี นี้ B มีฟังก์ชนการขึ ั่ น้ อยูก่ บั A หรือ A มีฟังก์ชนในการเลื ั่ อก B หรือ B ขึน้ กับ A Functional Dependencies อนุญาตให้ผใู้ ช้ระบุกฏเกณฑ์การขึน้ ต่อกัน ด้วย attribute ทีไ่ ม่ได้เป็ น candidate key ได้ เช่น (โดยที่ ไม่ได้เป็ น candidate key) สาหรับทุก ๆ แถวในรีเลชัน่ r หากแถวใดทีม่ คี า่ ในแอตทริบวิ เหมือนกัน ระบบต้อง รับประกันว่า ในบรรดาแถวเหล่านัน้ ต้องมีคา่ ของแอตทริบวิ ทีเ่ หมือนกันด้วย กล่าวคือ ถ้า holds on R ดังนัน้ ถ้า t1[] = t2[] ระบบต้องรับประกันว่า t1[] = t2[] Given a relation R, attribute y of R is dependent on attribute x of R if and only if whenever two tuples of R agree on their x-value, they must necessarily agree on their y-value. A B is functionally dependent on A B When a functional dependency exists, the attribute or group Of attributes on the left-hand side of the arrow is called the determinant. Position is functionally Staff_No Position dependent on Staff_No SL21 Position System Engineer Staff_No is not functionally dependent on Position System Engineer Staff_No SL21 SG5 Staff_No SName, Saddress, Position, Salary, Branch_No Branch_No BAddress, Tel_No BAddress Branch_No Normalization is a formal method involved with a series of test to help database designer to be able to identify the optimal grouping of attributes for each relation in the relational schema. Unnormalized Form 1st Normal Form 2nd Normal Form The process of normalization is a formal method that identifies relations based on primary key (or candidate keys in the case of BCNF the functional dependencies among their attributes. 3rd Normal Form Boyce-Codd Normal Form Normalization can be applied to individual relations so that database can be normalized to a specific form to prevent the possible occurrence of update anomaly. Relationships of Normal Forms 1NF 2NF 3NF/BCNF 4NF 5NF Higher DKNF Normal forms Case Study The DreamHome company manages property on behalf of the owners, and as part of this service, the company takes care of the property’s rental. To simplify this example, we assume that a customer rents a given property only once, and cannot rent more than one property at any one time. Unnormalized form (UNF) : A table that contains one or more repeating groups. Customer_Rental Relation Custome_No CName Property_No PAddress Rent RentStart RentFinish Owner_No OName CR76 John Kay PG4 6 Lawrence St, 350 1-Jul-94 31-Aug-96 CO40 Tina Murphy PG16 5 Norwar Dr 450 1-Sep-96 1-Sep-98 CO93 Tony Shaw PG4 6 Lawrence St, 350 1-Sep-92 10-Jan-94 CO40 Tina Murphy PG36 2 Manor Rd, 375 10-Oct-94 1-Dec-95 CO93 Tony Shaw PG16 5 Norwar Dr 450 1-Jan-96 10-Aug-96 CO93 Tony Shaw CR56 Aline Stewart A repeating group is an attribute or group of attributes within a table that occurs with multiple values for a single occurrence of the key attribute (s) for that table. The term key refers to the attribute (s) That uniquely identify each row within the unnormalized table. First normal form (1NF) : A relation in which the intersection of each row and column contains one and only one value. Customer_Rental Relation Custome_No Property_No CName PAddress Rent RentStart RentFinish Owner_No OName CR76 PG4 John Kay 6 Lawrence St, 350 1-jul-94 31-Aug-96 CO40 Tina Murphy CR76 PG16 John Kay 5 Norwar Dr 450 1-Sep-98 1-Sep-98 CO93 Tony Shaw CR56 PG4 Aline Stew 6 Lawrence St, 350 10-Jun-94 10-Jun-94 CO40 Tina Murphy CR56 PG36 Aline Stew 2 Manor Rd, 375 1-Dec-95 1-Dec-95 CO93 Tony Shaw CR56 PG16 Aline Stew 5 Norwar Dr 450 10-Aug-96 10-Aug-96 CO93 Tony Shaw For the relational data model, it is important to recognize that it is only first normal form(1NF) that is critical in creating appropriate relations. All the subsequent normal forms are optional. However, to avoid the update anomalies, it is recommended that we proceed to at least 3NF. Set of the Functional Dependency of Customer_Rental relation fd1 Customer_No, Property_No RentStart, RentFinish fd2 Customer_No CName fd3 Property_No PAddress, Rent, Owner_No, OName fd4 Owner_No OName fd5 Customer_No, RentStart Property_No, PAddress, RentFinish, Rent, Owner, OName (Candidate key) fd6 Property_No, RentStart Customer_No, CName, RentFinish (Candidate key) (Primary key) (Partial dependency) (Partial dependency) (Transitive dependency) Customer_No Property_No CName PAddress RentStart RentFinish Rent Owner_No OName (Primary key) fd1 fd2 (Partial dependency) (Partial dependency) fd3 fd6 (Transitive dependency) fd5 (Candidate key) fd6 (Candidate key) Second Normal Form (2NF) : A relation that is in the first normal form and every non-primary key attribute is fully functionally dependent on the primary key. Full functional : dependency Indicates that if A and B are attributes of a relation, B is fully functionally dependent on A if B is functionally dependent on A, but not on any proper subset of A. ถ้า B เป็ น Non-Key attribute ซึง่ มีฟังก์ชนการขึ ั่ น้ ต่อกันอยูก่ บั ส่วนใดส่วนหนึ่งของคียห์ ลัก เราจะเรียกว่า B partial dependence on A. Partial dependency ต้องถูกขจัดออกโดยการแยก ออกไปตัง้ เป็ นตารางใหม่ เพือ่ ให้ Non-Key attribute ตัวนี้ fully dependent on คียห์ ลัก Customer_No Property_No CName PAddress RentStart RentFinish Rent Owner_No OName (Primary key) fd1 fd2 (Partial dependency) fd3 (Partial dependency) Customer (Customer_No, CName) Rental (Customer_No, Property_No, RentStart, RentFinish) Property_Owner (Property_No, PAddress, Rent, Owner_No, OName) Rental Relation Customer Relation Customer_No Property_No RentStart RentFinish John Kay CR76 PG14 1-Jul-94 31-Aug-96 Aline Stewart CR766 PG16 1-Sep-96 1-Sep-98 CR56 PG4 1-Sep-92 10-Jun-94 CR56 PG36 10-Oct-94 1-Dec-95 CR56 PG16 1-Jan-96 Customer_No CName CR76 CR56 Property-Owner Relation Property_No PAddress Rent Owner_No OName PG14 6 Lawrence St, 350 CO40 Tina Murphy PG16 5 Norwar Dr 450 CO93 Tony Shaw PG36 2 Manor Rd, 375 CO93 Tony Shaw 10-Aug-96 2NF applies to relations with composite keys, that is, relations with a primary key composed of two or more attributes. A relation with a single attribute primary key is automatically in at least 2NF. Transitive dependency Customer (Customer_No, CName) Rental (Customer_No, Property_No, RentStart, RentFinish) Property_Owner (Property_No, PAddress, Rent, Owner_No, OName) Transitive dependency Property-Owner Relation Property_No PAddress Rent Owner_No OName PG14 6 Lawrence St, 350 CO40 Tina Murphy PG16 5 Norwar Dr 450 CO93 Tony Shaw PG36 2 Manor Rd, 375 CO93 Tony Shaw Customer Relation Rental Relation Customer_No CName Customer_No Property_No RentStart RentFinish CR76 John Kay CR76 PG14 1-Jul-94 31-Aug-96 CR56 Aline Stewart CR766 PG16 1-Sep-96 1-Sep-98 CR56 PG4 1-Sep-92 10-Jun-94 CR56 PG36 10-Oct-94 1-Dec-95 CR56 PG16 1-Jan-96 10-Aug-96 Transitive dependency : A condition where A, B, and C are attributes of a relation such that if A B and B C, then C is transitively dependent on A via B (provided that A is not functionally dependent on B or C). Definition of Third Normal Form: A relation that is in first and second normal form, and in which no non-primary key attribute is transitively dependent on the primary key. Customer (Customer_No, CName) Rental (Customer_No, Property_No, RentStart, RentFinish) Property_Owner (Property_No, PAddress, Rent, Owner_No, OName) Property-for-Rent Relation Owner Relation Property_No PAddress Rent Owner_No Owner_No OName PG14 6 Lawrence St, 350 CO40 C040 Tina Murphy PG16 5 Norwar Dr 450 CO93 Co93 Tony Shaw PG36 2 Manor Rd, 375 CO93 Customer_Rental Relation Custome_No Property_No CName PAddress Rent RentStart RentFinish Owner_No OName CR76 PG4 John Kay 6 Lawrence St, 350 1-jul-94 31-Aug-96 CO40 Tina Murphy CR76 PG16 John Kay 5 Norwar Dr 450 1-Sep-98 1-Sep-98 CO93 Tony Shaw CR56 PG4 Aline Stew 6 Lawrence St, 350 10-Jun-94 10-Jun-94 CO40 Tina Murphy CR56 PG36 Aline Stew 2 Manor Rd, 375 1-Dec-95 1-Dec-95 CO93 Tony Shaw CR56 PG16 Aline Stew 5 Norwar Dr 450 10-Aug-96 10-Aug-96 CO93 Tony Shaw Customer (Customer_No, CName) Rental (Customer_No, Property_No, RentStart, RentFinish) Property (Property_No, PAddress, Rent, Owner_No) Owner (Owner_No, Oname) Customer_Rental 1NF Property_Owner Customer Rental Property_for_Rent 2NF Owner 3NF Rental Relation Customer_No Property_No RentStart RentFinish CR76 PG14 1-Jul-94 31-Aug-96 CR766 PG16 1-Sep-96 1-Sep-98 CR56 PG4 1-Sep-92 10-Jun-94 CR56 PG36 10-Oct-94 1-Dec-95 CR56 PG16 1-Jan-96 Customer Relation Customer_No CName CR76 John Kay CR56 Aline Stewart Property-Owner Relation 10-Aug-96 Property_No PAddress Rent Owner_No Owner Relation PG14 6 Lawrence St, 350 CO40 Owner_No OName PG16 5 Norwar Dr 450 CO93 CO40 Tina Murphy PG36 2 Manor Rd, 375 CO93 CO93 Tony Shaw From 3NF to Boyce-Codd Normal Form (BCNF) BCNF is based on functional dependencies that take into account all candidate keys in a relation. For a relation with only one candidate key, 3NF and BCNF are equivalent. The difference between 3NF and BCNF is that for a functional dependency AB, 3NF allows this dependency in a relation if B is a primary-key attribute and A is not a candidate key. Whereas, BCNF insists that for this dependency to remain in a relation, A must be a candidate key. Therefore, BCNF is a stronger form of 3NF, such every relation in BCNF is also in 3NF. Boyce-Codd : normal form (BCNF) A relation is in BCNF if and only if every determinant is a candidate key. Violation of BCNF is quite rare, since it may only happen under specific conditions. The potential to violate BCNF may occur in relation that • contains two (or more) composite candidate keys and • which overlap, that is share at least one attribute in common Case Study In this example, Client_Interview relation is presented. It contains details of the arrangements for interviews of clients by members of staff of the DreamHome company. The members of staff involved in interviewing clients are allocated to a specific room on the day of interview. However, a room may be allocated to several members of staff as required throughout a working day. A client is only interviewed once on a given date, but may be requested to attend further interviews at later dates. This relation has three candidate keys: (Client_No, Interview_Date), (Staff_No, Interview_Date, Interview_Time), and (Room_No, Interview_Date, Interview_Time). Therefore the Client_Interview relation has three composite candidate keys, which overlap by sharing the common attribute Interview_Date. We select Client_No, Interview_Date) to act as the primary key for this relation. Client_Interview (Client_No, Inverview_Date, Interview_Time, Staff_No, Room_No) The Client_Interview relation has the following functional dependencies : Client_No, Interview_Date Interview_Time, Staff_No, Room_No (Primary key) Fd2 Staff_No, Interview_Date, Interview_Time Client_No (Candidate key) Fd3 Room_No, Interview_Date, Interview_Time Staff_No, Client_No (Candidate key) Fd4 Staff_No, Interview_Date Room_No Fd1 Client_No Interview_Date Interview_Time Staff_No Room_No CR76 13-May-98 10:30 SG5 G101 CR56 13-May-98 12:00 SG5 G101 CR74 13-May-98 12:00 SG37 G102 CR56 1-Jul-98 10:30 SG5 G102 Client_Interview Relation Interview (Client_No, Interview-Date, Interview_Time, Staff_No) Staff_Room (Staff_No, Interview-Date, Room_No) Interview Relation Client_No Interview_Date Interview_Time Staff_No CR76 13-May-98 10:30 SG5 CR56 13-May-98 12:00 SG5 CR74 13-May-98 12:00 SG37 CR56 1-Jul-98 10:30 SG5 Staff_Room Relation Staff_No Interview_Date Room_No SG5 13-May-98 G101 SG37 13-May-98 G102 SG5 1-Jul-98 G102 Review of Normalization (1NF to BCNF) The DreamHome company manages property on behalf of the owners, and as part of this service the company undertakes regular inspections of the property by members of staff. When staff are required to undertake these inspections, they are allocated a company car for use on the day of the inspections. However, a car may be allocated to several members of staff, as required throughout the working day. A member of staff may inspect several properties on a given date, but a property is only inspected once on a given date. Property_Inspection Relation Property_No PAddress IDate ITime Comments Staff_No SName Car_Reg PG4 6 Lawrence St, 18-Oct-96 10:00 Need to replace crockery SG37 Ann Beech M231 JGR 22-Apr-97 09:00 In good order SG14 David Ford M533 HDR 1-Oct-98 12:00 Damp rot in bathroom SG14 David Ford N721 HFR 22-Apr-96 13:00 Replace room carpet SG14 David Ford M533 HDR 24-Oct-97 14:00 Good condition SG37 Ann Beech N721 HFR PG16 5 Norwar Dr Property_Inspection (Property_No, PAddress, IDate, ITime, Comments, Staff_No, SName, OName) 1NF : Property_Inspection Relation Property_No IDate ITime PAddress Comments Staff_No SName Car_Reg PG4 18-Oct-96 10:00 6 Lawrence St, Need to replace crockery SG37 Ann Beech M231 JGR PG4 22-Apr-97 09:00 6 Lawrence St, In good order SG14 David Ford M533 HDR PG4 1-Oct-98 12:00 6 Lawrence St, Damp rot in bathroom SG14 David Ford N721 HFR PG16 22-Apr-96 13:00 5 Norwar Dr Replace room carpet SG14 David Ford M533 HDR PG16 24-Oct-97 14:00 5 Norwar Dr Good condition SG37 Ann Beech N721 HFR Property_Inspection (Property_No, IDate, ITime, PAddress, Comments, Staff_No, SName, OName) Property_No IDate ITime PAddress Comments Staff_No SName Car_Reg FD1 FD2 FD3 (Primary key) (Partial dependency) (Transitive dependency) FD4 FD5 FD6 (Candidate key) (Candidate key) Property_No IDate ITime PAddress Comments Staff_No SName Car_Reg FD1 (Primary key) (Partial dependency) FD2 Remove Partial dependency (decompose the relation) to obtain 2NF Property Relation Property_No PAddress PG4 6 Lawrence St, PG16 5 Norwar Dr Property_Inspection Relation Property_No IDate ITime Comments Staff_No SName Car_Reg PG4 18-Oct-96 10:00 Need to replace crockery SG37 Ann Beech M231 JGR PG4 22-Apr-97 09:00 In good order SG14 David Ford M533 HDR PG4 1-Oct-98 12:00 Damp rot in bathroom SG14 David Ford N721 HFR PG16 22-Apr-96 13:00 Replace room carpet SG14 David Ford M533 HDR PG16 24-Oct-97 14:00 Good condition SG37 Ann Beech N721 HFR Property Relation (Property_No, PAddress) Property_No PAddress PG4 6 Lawrence St, PG16 5 Norwar Dr Property_Inspection Relation Property_No IDate ITime Comments Staff_No SName Car_Reg FD1 FD3 (Primary key) (Transitive dependency) FD4 (Candidate key) FD5 FD6 (Candidate key) Property Relation Property_No PAddress PG4 6 Lawrence St, PG16 5 Norwar Dr Remove Transitive dependency (decompose the relation) to obtain 3NF Staff Relation Staff_No SName SG37 Ann Beech SG14 David Ford Property_Inspection Relation Property_No IDate ITime Comments Staff_No Car_Reg PG4 18-Oct-96 10:00 Need to replace crockery SG37 M231 JGR PG4 22-Apr-97 09:00 In good order SG14 M533 HDR PG4 1-Oct-98 12:00 Damp rot in bathroom SG14 N721 HFR PG16 22-Apr-97 13:00 Replace room carpet SG14 M533 HDR PG16 24-Oct-97 14:00 Good condition SG37 N721 HFR Property Relation Staff Relation Property_No PAddress Staff_No SName PG4 6 Lawrence St, SG37 Ann Beech PG16 5 Norwar Dr SG14 David Ford Remove remaining anomalies from functional dependencies to obtain BCNF Property_Inspection Relation Property_No IDate ITime Comments Staff_No Car_Reg Staff_Car (Staff_No, IDate, Car_Reg) Inspection (Property_No, IDate, ITime, Comments, Staff_No) From BCNF to Fourth Normal Form (4NF) Although BCNF removes any anomalies due to functional dependencies, further research led to the identification of another type of dependency called multi-valued dependency (MVD), which can cause similar design problems for relations in terms of data redundancy. ตารางต่อไปนี้เป็ น BCNF แต่ยงั เกิดปั ญหา update anomalies Lect_Sub_Research Relation Lecturer_Name Subject Research Yuen Data Structure Natural Language Processing Yuen Data Structure Protocal Analyzer Yuen Discrete Math Natural Language Processing Yuen Discrete Math Protocal Analyzer Yuen Data Base Natural Language Processing Yuen Data Base Protocal Analyzer Chalerrmsak Data Structure Protocal Analyzer Chalerrmsak Data Structure Compiler Utilities Chalerrmsak Data Structure Natural Language Processing Multi-valued : dependency (MVD) Represents a dependency between attributes (for example, A, B, and C) in a relation, such that for each value of A there is a set of values for B, and a set of values for C. However, the set of values for B and C are independent of each other. A > B A > C Lecturer > Subject Lecturer > Research Lec_Sub_Research Relation Lecturer_Name Lec_Sub Relation Lecturer_Name Subject Subject Research Yuen Data Structure Natural Language Processing Yuen Data Structure Yuen Data Structure Protocal Analyzer Yuen Discrete Math Yuen Discrete Math Natural Language Processing Yuen Data Base Yuen Discrete Math Protocal Analyzer Chalerrmsak Data Structure Yuen Data Base Natural Language Processing Yuen Data Base Protocal Analyzer Lec_Research Relation Chalerrmsak Data Structure Protocal Analyzer Lecturer_Name Chalerrmsak Data Structure Compiler Utilities Yuen Natural Language Processing Chalerrmsak Data Structure Natural Language Processing Yuen Protocal Analyzer Chalerrmsak Protocal Analyzer Chalerrmsak Compiler Utilities Chalerrmsak Natural Language Processing Research Unnormalized form (UNF) Remove repeating groups First normal form (1NF) Remove partial dependencies Second normal form (2NF) Remove transitive dependencies Third normal form (3NF) Remove remaining anomalies From functional dependencies Boyce-Codd form (BCNF) Remove multi-valued dependencies Fourth normal form (4NF)
© Copyright 2026 Paperzz