1nf-> 2nf: removes some function dependencies of non-primary attributes on codes. 2nf-> 3nf: removes the function dependency on code passing by non-primary attributes 3nf-> bcnf: removes the part and function dependency of the primary attribute on the code. Example: The following dependencies are full function dependencies: (SNO, CNO)-> grade Sno-> sdept Sdept-> sloc (SNO, CNO)-> teacher (SNO, teacher)-> CNO Teacher-> CNO Sno: Student No. CNO: course No. sdept: department sloc: Address Teacher: Instructor 2nf: S-L-C (SNO, sdept, sloc, CNO, grade) Master code: (SNO, CNO), the above mode does not meet 2nf, can be split as follows: (SNO, CNO, grade) (SNO, sdept, sloc) 3nf: S-D-C (SNO, sdept, sloc) Primary code: SnO The above mode does not meet 3nf. You can split it as follows: (SNO, sdept) (sdept, sloc) Bcnf: SCT (SNO, CNO, teacher) Candidate Code: (SNO, teacher), (SNO, CNO) If the above mode does not meet bcnf, you can split it as follows: (SNO, teacher) (Teacher, CNO) |