Normal forms ทฤษฎีของการทา Normalization เป็ นเรื่ องเกี่ยวกับการพิจารณาว่า relation ที่ กาหนดให้ อยูใ่ นรู ปแบบ Normal form ใด คือ มีความถูกต้องตรงกับกฎเกณฑ์ขอ้ บังคับ หรื อเงื่อนไขบางอย่างที่กาหนดไว้ Universe of Relations (normalized and unnormalized) 1 NF relations (normalized relations) 2 NF relations 3 NF relations BCNF relations 4NF relations PJ/NF (5 NF) relations Further Normalization การทา Normalization เป็ นหลักสาคัญของการทา Database design ซึ่ งเรี ยก ว่า Logical database design ส่ วนของ Physical database design เกี่ยวกับ Internal level เช่น จัดการเกี่ยวกับ File เพื่อให้ access เร็ วที่สุด, I/O access น้อยที่สุด Normalization คือ วิธีการซึ่ ง - บอกให้ทราบว่า relation นั้น มีปัญหาเกิดขึ้นหรื อไม่ - ถ้ามีปัญหาเกิดขึ้น จะขจัดปั ญหานั้นออกอย่างไร คือ เครื่ องมือ (Tool) ที่ช่วยให้ design database ในลักษณะเป็ น Conceptual Schema design ได้โดยที่มีปัญหาน้อยที่สุด หรื ออาจไม่มีเลย Functional dependency (FD) “Functional dependence” หรื อ “Functional dependency” Relation R มี attribute x, y attribute y เป็ น “Functional dependence” กับ attribute x เขียนเป็ นสัญลักษณ์ R.x --> R.y หรื อ x y เรี ยกว่า y functional dependent on x (y ขึ้นกับ x อย่าง function หรื อ x functional determines y (x เป็ นตัวกาหนด y) ก็ต่อเมื่อ แต่ละค่าของ x ใน R จะมีค่า y ของ R ที่สอดคล้องกับ x เพียงค่าเดียวเท่านั้น (attribute x,y อาจเป็ น Composite attribute) DEPARTMENT DEP-NO MANAGER DATE-ESTABLISHED PROJECTS PROJECT-NO PARTS DEP-NO BUDGET COLOR WEIGHT JOBS PART-USE PART-NO PART-NO PROJECT-NO QTY-USED JOB-NO PROJECT-NO COST นิยาม A relation R is in first normal form (1 NF) if and only if All underlying domains contain atomic values only Relation ใดๆ อยูใ่ น 1 NF ก็ต่อเมื่อ Simple domains ทั้งหมดมีแต่ Atomic Values (ไม่มี repeating group) Unnormalized S# STATUS CITY P# QTY S1 20 London P1 300 P2 200 P3 400 P4 200 P5 100 P6 100 P1 300 P2 400 S2 10 Paris S3 10 Paris P2 200 S4 20 London P2 200 P4 300 P5 400 Normalized (1 NF) S# STATUS CITY P# QTY S1 20 London P1 300 S1 20 London P2 200 S1 20 London P3 400 S1 20 London P4 200 S1 20 London P5 100 S1 20 London P6 100 S2 10 Paris P1 300 S2 10 Paris P2 400 S3 10 Paris P2 200 S4 20 London P2 200 S4 20 London P4 300 S4 20 London P5 400 S# STATUS P# CITY QTY FD diagram in relation FIRST S# P# STATUS CITY QTY นิยาม Relation ใดๆ อยูใ่ น 2 NF ก็ต่อเมื่อ Relation นั้นอยูใ่ น 1 NF และทุกๆ Nonkey attribute นั้น Fully FD กับ Primary key จาก FIRST SECOND (S#,STATUS,CITY) SP (S#,P#,QTY) STATUS S# S# QTY CITY P# FD in the relation SECOND and SP SECOND SP S# STATUS CITY S# P# QTY S1 20 London S1 P1 300 S2 10 Paris S1 P2 200 S3 10 Paris S1 P3 400 S4 20 London S1 P4 200 S5 30 Athens S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P2 200 S4 P2 200 S4 P4 300 S4 P5 400 นิยาม Relation ใดๆ อยูใ่ น 3 NF ก็ต่อเมื่อ Relation นั้นอยูใ่ น 2 NF และทุกๆ Nonkey attribute นั้น ต้องไม่มี transitive กับ Primary key SECOND (S#,STATUS,CITY) SC (S#,CITY) CS (CITY,STATUS) S# CITY CITY STATUS FD in the relation SC and CS SC S# CITY CITY STATUS S1 London Athens 30 S2 Paris London 20 S3 Paris Paris 10 S4 London Rome 50 S5 Athens CS นิยาม Relation ใดๆ อยูใ่ น 3 NF ก็ต่อเมื่อ Nonkey attribute มีคุณสมบัติ 2 ข้อ ดังนี้ 1. Mutually independent 2. Fully dependent on the primary key Nonkey attribute คือ attribute ใดๆ ที่ไม่ใช่ส่วนหนึ่ งส่ วนใดของ primary key ใน relation Mutually independent คือ attribute ตั้งแต่ 2 attributes ขึ้นไป ไม่มี FD กับ attribute อื่นใดเลย คือ Nonkey ทั้งหมดจะต้องเป็ นอิสระต่อกันอย่างเด็ดขาดไม่เกี่ยวข้องกัน PNAME SNAME S# ADDRESS P# COLOR QTY WEIGHT STATUS S# CITY P# ORDERS ORDER-NO ORDER-DATE Ord1 6 June 1996 Ord2 3 May 1996 ORDER-LINE PART-NO P1 P6 PART-NO P5 P6 P2 QTY-ORDERED 10 30 QTY-ORDERED 10 50 20 ORDERS ORDER-NO ORDER-DATE PART-NO QTY-ORDERED Ord1 Ord1 Ord2 Ord2 Ord2 6 June 1996 6 June 1996 3 May 1996 3 May 1996 3 May 1996 P1 P6 P5 P6 P2 10 30 10 50 30 ORDERS ORDER-NO ORDER-DATE Ord1 Ord2 6 June 1996 3 May 1996 ORDERS-CONTENTS ORDER-NO PART-NO QTY-ORDERED Ord1 Ord1 Ord2 Ord2 Ord2 P1 P6 P5 P6 P2 10 30 10 50 30 ORDER-NO QTY-ORDERS PART-NO ORDER-DATE ORDER-NO QTY-ORDERED PART-NO ORDER-NO ORDER-DATE PROJECTS PROJECT-ID PERSON-ID MANAGER TIME-SPENT Proj1 J1 Vichi 30 Proj2 J1 Joe 12 Proj1 J2 Vichi 11 Proj2 J2 Joe 79 Proj3 J2 Brown 17 Proj1 J3 Vichi 3 WORK PROJECTS PROJECT-ID MANAGER Proj1 Vichi Proj2 Joe Proj3 Brown PROJECT-ID PERSON-ID TIME-SPENT Proj1 Proj2 Proj1 Proj2 Proj3 Proj1 J1 J1 J2 J2 J2 J3 30 12 11 79 17 3 PROJECT-ID TIME-SPENT PERSON-ID MANAGER PROJECT-ID TIME-SPENT PERSON-ID PROJECT-ID MANAGER VEHICLES REGISTRATION OWNER MODEL MANUFACTOR NO-CYLINDER YX-01 George Laser Ford 4 YJ-77 Mary Falcon Ford 6 YW-30 George Corolla Toyota 4 YJ-37 Mary Laser Ford 4 YJ-83 Andrew Corolla Toyota 4 OWNER REGISTRATION-NO MODEL MANUFACTOR NO-CYLINDER OWNER REGISTRATION-NO MODEL MANUFACTOR MODEL NO-CYLINDERS MANUFACTOR REGISTRATION REGISTRATION-NO OWNER MODEL MANUFACTOR YX-01 YJ-77 YW-30 YJ-37 YJ-83 George Mary George Mary Andrew Laser Falcon Corolla Laser Corolla Ford Ford Toyota Ford Toyota VEHICLES1 MODEL MANUFACTOR NO-CYLINDER Laser Falcon Corolla Ford Ford Toyota 4 6 4 1. LOAN APPLICATION 1. 2. 3. 4. LOAN-APPLICTIONNO APPLICANT APPLICANT-ADDRESS LOAN-TYPE 1 Jill Canberra Home 2 Joe Sydney Mortgage 3 Jill Canberra Personal 4 Max Melbourne Home Each Loan application has APPLICANT and is identified by unique value of LOAN-APPLICATION –NO Each Loan application-no has one LOAN-TYPE. Each Loan application-no has one APPLICANT-ADDRESS. An applicant can make many applications. 2. CUSTOMER –INVOICES CUSTOMER NAME INVOICENO CUSTOMER ADDRESS CUSTOMER SERVICE SERVICE COST SERVICE DATE Joe 6 Sydney Repair 120 June,1992 Joe 6 Sydney Course 320 July,1992 Jill 3 Canberra Repair 80 August,1992 Joe 6 Sydney Repair 150 October199 2 Rules for CUSTOMER –INVOICES: 1. Each invoice is to one customer and is identified by a unique value of INVOIC-NO 2. A number of CUSTOMER –INVOICES can be included on one invoice. 3. There is a separate SERVICE-COST for each CUSTOMER – INVOICES on an invoice. 4. MACHINE-USE OPERATOR MACHNE DATE QTY-PARTS PRODUCTS TIME-SPENT ON-MACHNE Joe Mach 1 1 June 1992 15 10 Joe Mach 2 1 June 1992 20 12 Bill Mach 1 1 June 1992 12 6 Bill Mach 2 2 June 1992 20 14 Rules for MACHINE-USE: 1. A machine only bused one operator on a given date. 2. An operator can use any number of machines the one day. T3. TIME-SPEN-ON –MACHHINE is the time spent by an operator on the machine on given DATE, QTY-PARTS-PRODUCES is quantity of parts produced on that machine by the operator on the given date Boyce/Codd Normal form (BCNF) นิยาม Relation ใดๆ อยูใ่ น BCNF ก็ต่อเมื่อ ทุกๆ Determinant ที่มีอยู่ เป็ น Candidate key ด้วย S# STATUS SNAME CITY Relation S(S#,SNAME,STATUS,CITY) Candidate key มี S#, SNAME Determinant มี S#, SNAME STATUS, CITY นั้น Mutually independent กัน คือ FD S.CITY ----- S.STATUS Example 2 S# S1 SNAME Smith P# P1 QTY 300 S1 Smith P2 200 S1 Smith P3 400 S1 Smith P4 200 relation SSP (S#,SNAME,P#,QTY) S# P# QTY SNAME Candidate key มี (S#,P#), (SNAME,P#) Determinant มี (S#,P#), (SNAME,P#), S#, SNAME การแก้ปัญหา คือ แยก SSP เป็ น 2 projection SS (S#, SNAME) กับ SP (S#, P#, QTY) หรื อ SS (S#, SNAME) กับ SP (SNAME,P#, QTY) Example 3 S J T Smith Smith Jones Jones Math Physics Math Physics Prof.White Prof.Green Prof.White Prof.Brown relation SJT (S,J,T) S = Student, J = Subject, T = Teacher วิชาใดๆ แต่ละ Student จะถูกสอนโดย Teacher เพียงคนเดียว (S,J) ---- T แต่ละ Teacher นั้นจะสอนได้เพียง Subject เดียว (แต่ Subject หนึ่ง อาจสอนโดยหลายๆ Teacher ได้) T --- J S T J Candidate key มี (S,J), (S,T) Determinant มี (S,J), (S,T), T แก้ปัญหาโดย ST(S,T) และ TJ(T,J) ST มี Candidate key คือ (S,T) ไม่มี determinant TJ มี Candidate key คือ T determinant คือ T Example 4 relation EXAM(S,J,P) S = Student, J = Subject, P = Position ความหมายของ Exam tuple (S,J,P) คือ Student S สอบ Subject J และได้ Position P ใน class ข้อบังคับ - ไม่มีโอกาสที่ 2 student จะได้ Position เดียวกัน ใน Subject เดียวกัน S J P J Candidate key มี (S,J), (J,P) Determinant มี (S,J), (J,P) S P นิยาม ของ MVD (Multi Value dependency) Relation R ใดๆ ที่มี Attribute A, B, C (อาจเป็ น Composite attribute) แล้วมี MVD R.A -> R.B เกิดขึ้น ก็ต่อเมื่อ Set ของค่า B จะขึ้นกับค่า A เท่านั้น และเป็ นอิสระกับค่า C (R.A - R.B อ่านว่า R.B “Multi dependent” กับ R.A หรื อ R.A “Multi determine” กับ R.B ทุกๆครั้งที่ relation R ใดๆ R(A,B,C) มี MVD R.A --> R.B สรุ ปได้วา่ มี MVD R.A ---> R.C ด้วย เพราะ B, C เป็ นอิสระต่อกัน เขียนแทนด้วย R.A ---> R.B / R.C MVD เป็ น general case (กรณี ทวั่ ไป) ของ FD FD เป็ น special case (กรณี ทวั่ ไป) ของ MVD นิยามของ 4 NF Relation R อยูใ่ น 4 NF ก็ต่อเมื่อ เมื่อไรก็ตามที่มี MVD ใน R เช่น A ---> B แล้ว ทุกๆ attribute ของ R มี FD กับ A ด้วย นัน่ คือ ถ้ามี MVD A ---> B แล้ว MVD นั้นเป็ น FD A -- B ด้วย หรื อ ถ้า R อยูใ่ น 4 NF แล้ว R นั้นอยูใ่ น BCNF และทุกๆ MVD ใน R จริ งๆ เป็ น FD Example COURSE TEACHER TEXT Physics Prof.Gran Prof.Brown Prof.Gran Basic mechanics Principles of optics Basic mechanics Vector analysis Trigonometry Maths CTX มี 2 MVD 1. CTX.COURSE ----- CTX.TEACHER 2. CTX.COURSE --- CTX.TEXT CTX COURSE TEACHER TEXT Physics Physics Physics Physics Math Math Math Prof.Gran Prof.Gran Prof.Brown Prof.Brown Prof.Gran Prof.Gran Prof.Gran Basic mechanics Principles of optics Basic mechanics Principles of optics Basic mechanics Vector analysis Trigonometry แยกเป็ น 2 relation ย่อย (Projection) CT CT(COURSE,TEACHER) และ CX(COURSE,TEXT) COURSE TEACHER Physics Physics Math Prof.Gran Prof.Brown Prof.White CX COURSE TEXT Physics Physics Math Math Math Basic mechanics Principles of optics Basic mechanics Vector analysis Trigonometry นิยาม 5 NF Relation R อยูใ่ น 5 NF หรื อ “Projection-join normal form” (PJ/NF) ก็ต่อเมื่อ ทุกๆ JD ที่มีอยูใ่ น R เป็ นผลสื บเนื่องมาจาก หรื อ เป็ นผลสรุ ปมาจาก (consequence / imply) Candidate key ของ R Relation R ใดๆ มีคุณสมบัติ “Join dependency” (JD) * (X,Y,….,Z) ก็ต่อเมื่อ R = join ของ Projection X,Y,…,Z โดยที่ X,Y,…,Z คือ subset ใดๆของ set ของ attribute ของ R Example 1 Relation S (S#,SNAME,STATUS,CITY) Candidate key มี 2 ตัว : S#, SNAME Relation นี้มี 2 JD 1. * ((S#,SNAME,STATUS), (S#,STATUS)) S = Join ของ (S#,SNAME,STATUS) กับ (S#,CITY) ด้วย S# JD เป็ น consequence จาก S# ซึ่ งเป็ น Candidate key 2. * ((S#,SNAME), (S#,STATUS), (SNAME,CITY)) (S#,SNAME) (S#,STATUS) Join over S# (S#,SNAME,STATUS) (SNAME,CITY) Join Over SNAME มี JD ทั้งหมด 2 ตัว และ JD ทั้งสองเป็ น consequence ของ Candidate key ดังนั้น S อยูใ่ น 5 NF Example 2 Relation SPJ (S#,P#,J#) หมายถึง Supplier คนหนึ่ง ส่ ง Part หนึ่งไปใช้ใน Project หนึ่ง S P J S1 S1 S2 S1 P1 P2 P1 P1 J2 J1 J1 J1 Relation SPJ เป็ น All key และไม่มี FD หรื อ MVD --- 4 NF แยกได้ 3 projections SP, PJ, JS SP(S#,P#), PJ(P#,J#), JS(J#,S#) Join ของ SP กับ PJ ด้วย P# ได้ SPJ เดิม กับอีก 1 tuple เพิ่มมา และเมื่อ join กับ JS ด้วย (J#,S#) จะได้ SPJ ดังเดิม SP PJ S# P# P# J# S1 S1 S2 P1 P2 P1 P1 P2 P1 J2 J1 J1 SPJ Join Over P# S P J S1 S1 S1 S2 S2 P1 P1 P2 P1 P1 J2 J1 J1 J2 J1 JS J# S# J2 J1 J1 S1 S1 S2 Join Over(J#,S#) Original SPJ ตัวอย่ างของการทา Normalize Order-Entry System ประกอบด้วยข้อมูลเกี่ยวกับ Customers, Item และ orders CUSTOMER – Customer number (unique) - Ship to address (several per customer) - Balance - Credit Limit - Discount ORDER - Order number (unique) - Customer number - Ship to address - Date of order - Detail lines (several per customer) - item number - quantity ordered - quantity out ITEM - Item number (unique) - Manufacturing plants - Quantity on hand at each plant - Stock danger level for each plant - Item description BAL ADDRESS CUST CREDLIM DISCOUNT QTYORD ORD# QTYOUT LINE# DESCN ITEM# PLANT# FD diagram DATE QTYOH DANGER CUST (CUST#, BAL,CREDIT,DISCOUNT) SHIPTO (ADDRESS, CUST#) ORDHEAD (ORD#, ADDRESS, DATE) ORDLINE (ORD#, LINE#, ITEM#, QTYORD, QTYOUT) ITEM (ITEM#, DESCN) IP (ITEM#, PLANT#, QTYOH, DANGER) Department Employee Job Salary History Project Office Phone -The Company ประกอบด้วยหลายๆแผนก (department) - แต่ละแผนก (department) ประกอบด้วยกลุ่มพนักงาน (employee) กลุ่มของ Project และกลุ่มของ office - แต่ละ employee มีประวัติการทางานที่ผา่ นมา (job history) และแต่ละ job มีเงินเดือน(salary) ที่เคยได้รับมา - แต่ละ office ประกอบด้วยกลุ่มของโทรศัพท์ (phone) Department ประกอบด้วย department number(unique), งบประมาณ (budget) และ manager (unique) Employee ประกอบด้วย employee number (unique), current project number, office number, phone number, แต่ละ job ในอดีตที่เคยทา (plus date and salary) Project ประกอบด้วย project number (unique), budget Office ประกอบด้วย office number (unique), area in square feet และ number (unique) of all phones in that office DBUDGET AREA DEP# OFF# PHONE# JOBTITLE EMP# PROJ# DATE SALARY FD diagram MGR# PBUDGET DEPARTMENT (DEPT#, DBUDGET,MGR#) EMPLOYEE (EMP#,DEP# PROJ#,PHONE#) SALHIST (EMP#, DATE, JOBTITLE, SALARY) PROJECT (PROJ#, DEPT#, PBUDGET) OFFICE (OFF#, DEPT#, AREA) PHONE (PHONE#, OFF#) Process ในการทา Normalization 1. 0 NF ------ 1 NF - Examine for reports ถ้ามี repeating group ให้เขียนเป็ น flat file - Remove from relation remove repeating group ออกจาก relation - Create new relation แยก relation ออกเป็ นหลายๆ Projection - Include key relation ใหม่ ต้องมี key จาก relation เดิมรวมอยูด่ ว้ ย 2. 1 NF ------ 2 NF ถ้ามี Concatinated key ให้พิจารณา (ถ้าเป็ น Simple key จะเป็ น 2 NF) - Check each attribute against the whole key ตรวจสอบแต่ละ attribute กับ key ว่า attribute ใด ที่ข้ ึนกับเพียงบางส่ วนของ Key ถ้ามีให้พิจารณาขั้นต่อไป - Remove attribute and copy partial key to new relation remove attribute ที่ข้ ึนกับเพียงบางส่ วนของ key กับ Partial key นั้นมา สร้าง relation ใหม่ - Optimizing กรณี ที่มีหลายๆ relation เมื่อทาถึงขั้นตอนนี้แล้ว ปรากฏว่ามีบาง relation ที่มี Primary key เหมือนกัน จะนา relation ดังกล่าวรวมเข้าด้วยกัน 3. 2 NF -------- 3 NF - Examine each attribute พิจารณาแต่ละ attribute ว่ามี transitive FD หรื อไม่ - พิจารณาว่า Nonkey ใด ขึ้นกับ Nonkey อื่นบ้าง - remove Nonkey ที่ข้ ึนกับ Nonkey ด้วยกัน ออกมาสร้าง relation ใหม่ - หา key ของ relation ใหม่ - optimizing นา relation ที่มี Primary key เหมือนกันมารวมกัน เช่น Primary key เป็ น (x1,x2,x3) หรื อ (x3,x1,x2) ก็ได้ 4. BCNF - Relation R อยูใ่ น BCNF ก็ต่อเมื่อทุกๆ FD ใน R เป็ น consequenceของ Candidate keys ของ R 5. 4 NF - Relation R อยูใ่ น 4 NF ก็ต่อเมื่อ ทุกๆ MVD ใน R เป็ น consequence ของ Candidate ของ R 6. 5 NF - Relation R อยูใ่ น 5 NF ก็ต่อเมื่อ ทุกๆ JD ใน R เป็ น consequence ของ Candidate keys ของ R 1. จุดประสงค์ท้ งั หมดของ Normalization process - ขจัด Redundancy - หลีกเลี่ยง Update anomaly - สร้างการ design ที่ represent real world ได้ดี - บังคับให้มี Integrity constraint ได้ง่าย 2. Normalization guidelines เป็ นเพียงแนวทางเท่านั้น บางครั้งมีเหตุผลที่จะไม่ทา normalizing เลย เช่น Name and Address relation NADDR (NAME,STREET,CITY,STATE,ZIP) มี FD NAME ---- (STREET,CITY,STATE,ZIP) ZIP ---- (CITY,STATE) STREET,CITY,STATE ใช้บ่อย และ ZIP ไม่มีการเปลี่ยนแปลงบ่อย 3. Dependency และ Futhur Normalization เป็ น “Semantic” โดย ธรรมชาติ นัน่ คือ เกี่ยวกับความหมายของ Data 4. Normalization เป็ นประโยชน์สาหรับ Database design แต่ Normalization ไม่ได้แก้ไขปั ญหาได้ทุกสิ่ งทุกอย่าง
© Copyright 2026 Paperzz