Transcript
Page 1: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-1 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļšāļ—āļ—āļĩāđˆ 8* āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļĨāļ° āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļŠāđāļēāļŦāļĢāļąāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜

Functional Dependencies and Normalization for Relational Databases

āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„ 1. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđƒāļ™āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ 2. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ„āļ§āļēāļĄāļ‹āđ‰āđāļēāļ‹āļ­āļ™āļ‚āļ­āļ‡āļ‚āļ­āļĄāļđāļĨāđƒāļ™āļ—āļđāđ€āļžāļīāļĨ āđāļĨāļ°āļāļēāļĢāļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩ 3. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡ Functional Dependency 4. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āđāļē First Normal form āđ„āļ” 5. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āđāļē Second Normal form āđ„āļ” 6. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āđāļē Third Normal form āđ„āļ” 7. āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āļēāđƒāļˆāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āđāļē Boyce-Codd Normal form āđ„āļ”

8.1 āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļŠāđāļēāļŦāļĢāļąāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜

(Informal Design Guidelines for Relational Database)

āđ€āļĄāđˆāļ·āļ­āļ„āļīāļ”āļ§āļēāļāļēāļĢāļ­āļ­āļāđāļšāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜ (Relational database design) āļ„āļ·āļ­āļ­āļ°āđ„āļĢ āļ­āļēāļˆāļˆāļ°āļāļĨāļēāļ§āđ„āļ”āļ§āļēāļ„āļ·āļ­āļāļēāļĢāļžāļĒāļēāļĒāļēāļĄāļˆāļąāļ”āļāļĨāļļāļĄāļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• (Grouping of attributes) āđ€āļžāļ·āđˆāļ­āļˆāļ°āļ—āđāļēāļāļēāļĢāļĢāļ§āļĄ relation schemas āļ—āļĩāđˆāļ”āļĩ āđ‚āļ”āļĒāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđāļšāļ‡ relation schemas āļ­āļ­āļāđ€āļ›āļ™āļŠāļ­āļ‡āļĢāļ°āļ”āļąāļšāļ™āđ‰āļąāļ™āļ„āļ·āļ­

â€Ē āļĢāļ°āļ”āļąāļšāļĄāļļāļĄāļĄāļ­āļ‡āđ€āļŠāļīāļ‡āļ•āļĢāļĢāļāļ°āļ‚āļ­āļ‡āļœāļđāđƒāļŠāļ‡āļēāļ™ (The logical “user view” level) â€Ē āļĢāļ°āļ”āļąāļšāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āļ–āļąāļ‡āļ‚āļ­āļĄāļđāļĨ (The storage “base relation” level)

āđ‚āļ”āļĒāļāļēāļĢāļ­āļ­āļāđāļšāļšāļŦāļĨāļąāļ āđ† āđāļĨāļ§āļˆāļ°āļ„āļēāđāļ™āļķāļ‡āļ–āļķāļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļžāļ·āđ‰āļ™āļāļēāļ™ āļŦāļĢāļ·āļ­ base relations āđāļĨāļ°āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļˆāļ°āļ•āļ­āļ‡āļŦāļēāļ›āļˆāļˆāļąāļĒāļŦāļĢāļ·āļ­ criteria āļŠāđāļēāļŦāļĢāļąāļš good base relations āļ—āļąāđ‰āļ‡āļ™āđ‰āļĩāļ­āļēāļˆāđ€āļĢāļīāđˆāļĄāļžāļīāļˆāļēāļĢāļ“āļēāļ–āļķāļ‡āđāļ™āļ§āļ—āļēāļ‡āļ­āļĒāļēāļ‡āđ„āļĄāđ€āļ›āļ™āļ—āļēāļ‡āļāļēāļĢāđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļ­āļ™ āļŦāļĨāļąāļ‡āļˆāļēāļāļ™āđ‰āļąāļ™āļˆāļ°āļ—āđāļē

āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāļ–āļķāļ‡āđāļ™āļ§āļ—āļēāļ‡āļ­āļĒāļēāļ‡āđ€āļ›āļ™āļ—āļēāļ‡āļāļēāļĢāđƒāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļŸāļ‡āļāļŠāļąāļ™ (Functional dependencies) āđāļĨāļ° āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄ (Normal forms) āđ‚āļ”āļĒāļˆāļ°āđāļšāļ‡āļ­āļ­āļāđ„āļ”āļ”āļąāļ‡āļ™āđ‰āļĩ

â€Ē 1NF (First Normal Form) â€Ē 2NF (Second Normal Form) â€Ē 3NF (Third Normal Form) â€Ē BCNF (Boyce-Codd Normal Form)

āđ‚āļ”āļĒāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļ›āļĢāļ°āđ€āļ āļ—āļ­āļ·āđˆāļ™ āđ† āļ™āļ­āļāļˆāļēāļāļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄ āļ™āđˆāļąāļ™āļ„āļ·āļ­ āļ­āļąāļĨāļāļ­āļĢāļīāļ—āļķāļĄāđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜ (Relational design algorithms) āđ‚āļ”āļĒāđƒāļŠāļ§āļīāļ˜āļĩāļāļēāļĢāļŠāļąāļ‡āđ€āļ„āļĢāļēāļ°āļŦāļ—āļĩāđˆāļˆāļ°āđ„āļ”āļāļĨāļēāļ§āļ–āļķāļ‡āđƒāļ™āļšāļ—āļ•āļ­āđ„āļ›

* āļ­āļēāļ‡āļ­āļīāļ‡āļˆāļēāļāļšāļ—āļ—āļĩāđˆ 10 āļ‚āļ­āļ‡āđ€āļ­āļāļŠāļēāļĢāļ­āļēāļ‡āļ­āļīāļ‡ [1]

Page 2: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-2 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

8.2 āļ‹āļĩāđāļĄāļ™āļ•āļīāļ„āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜ (Semantics of Relation Attributes)

8.2.1 āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆ 1 āđ€āļĄāđˆāļ·āļ­āļžāļīāļˆāļēāļĢāļ“āļēāļ­āļĒāļēāļ‡āđ„āļĄāđ€āļ›āļ™āļ—āļēāļ‡āļāļēāļĢ āļˆāļ°āđ€āļŦāđ‡āļ™āđ„āļ”āļ§āļēāđƒāļ™āđāļ•āļĨāļ°āļ—āļđāđ€āļžāļīāļĨāļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļ™āļąāļ„āļ§āļĢāļˆāļ°āđāļŠāļ”āļ‡āļ–āļķāļ‡āļ„āļēāđ€āļ­āļ™āļ—āļīāļ•āļĩ āļŦāļĢāļ·āļ­āļ­āļīāļ™āļŠāđāļ•āļ™āļ‹

āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ (Relationship instance) āļ‹āđˆāļķāļ‡āļˆāļ°āļ™āđāļēāđ„āļ›āļ›āļĢāļ°āļĒāļļāļāļ•āđƒāļŠāđ„āļ”āļāļąāļšāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđ€āļ”āļĩāđˆāļĒāļ§ (individual relations) āđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ™āđ‰āļąāļ™ āđ‚āļ”āļĒāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āđ€āļ­āļ™āļ—āļīāļ•āļĩāļ—āļĩāđˆāļ•āļēāļ‡āļāļąāļ™āđ„āļĄāļ„āļ§āļĢāļ—āļĩāđˆāļˆāļ°āļ–āļđāļāļĢāļ§āļĄāđ€āļ‚āļēāđ„āļ§āđƒāļ™

āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āđ€āļŠāļ™ (EMPLOYEEs, DEPARTMENTs, PROJECTs) āđāļĨāļ°āļˆāļ°āļ™āđāļēāļ„āļĩāļĒāļ™āļ­āļāļŦāļĢāļ·āļ­ foreign key āļĄāļēāđ€āļžāđˆāļ·āļ­āđƒāļŠāļ­āļēāļ‡āļ–āļķāļ‡āđ€āļ­āļ™āļ—āļīāļ•āļĩāļ­āļ·āđˆāļ™ āđ† āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļ„āļ§āļĢāļˆāļ°āđ€āļāđ‡āļšāđ€āļ­āļ™āļ—āļīāļ•āļĩāđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ (Relationship attributes) āđāļĒāļāļāļąāļ™āđƒāļŦāđ„āļ”āļĄāļēāļāļ—āļĩāđˆāļŠāļļāļ”āđ€āļ—āļēāļ—āļĩāđˆāļˆāļ°āđ€āļ›āļ™āđ„āļ›āđ„āļ” āđ‚āļ”āļĒāļŠāļļāļ”āļ—āļēāļĒāđāļĨāļ§āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļš schema āļŦāļ™āđˆāļķāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āļ­āļ˜āļīāļšāļēāļĒāļ”āļ§āļĒāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ­āļĒāļēāļ‡āļ‡āļēāļĒ āđ†

āđ‚āļ”āļĒ semantics āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• āļ„āļ§āļĢāļ—āļĩāđˆāļˆāļ°āļŠāļ·āđˆāļ­āđ„āļ”āļ‡āļēāļĒāđ†

āļĢāļđāļ›āļ—āļĩāđˆ 8.1 COMPANY

relational database

schema āđāļšāļšāļ‡āļēāļĒ

Page 3: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-3 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩāđˆ 8.2 āļ•āļąāļ§āļ­āļĒāļēāļ‡āļ‚āļ­āļ‡āļŠāļ–āļēāļ™āļ°

āļ‚āļ­āļ‡āļāļēāļ™āļ‚āļ­āļĄāļđāļĨ

āļŠāđāļēāļŦāļĢāļąāļš relational database

schema āđƒāļ™āļĢāļđāļ› 8.1

āļ„āļ§āļēāļĄāļ‹āđ‰āđāļēāļ‹āļ­āļ™āļ‚āļ­āļ‡āļ‚āļ­āļĄāļđāļĨāđƒāļ™āļ—āļđāđ€āļžāļīāļĨ āđāļĨāļ°āļāļēāļĢāļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩ (Redundancy Information and Update Anomalies) āđƒāļ™āļāļēāļĢāļĢāļ§āļĄāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āđ€āļ­āļ™āļ—āļīāļ•āļĩāļŦāļĨāļēāļĒāđ† āļ•āļąāļ§āđ€āļ‚āļēāđ„āļ§āļ”āļ§āļĒāļāļąāļ™āļ­āļēāļˆāļˆāļ°āļ—āđāļēāđƒāļŦāđ€āļāļīāļ”āļ›āļāļŦāļēāđ„āļ” āļāļĨāļēāļ§āļ„āļ·āļ­ āļĄāļĩāļāļēāļĢāđ€āļāđ‡āļšāļ‚āļ­āļĄāļđāļĨ

āļ‹āđāđ‰āļēāļ‹āļ­āļ™āļ—āđāļēāđƒāļŦāļŠāđ‰āļīāļ™āđ€āļ›āļĨāļ·āļ­āļ‡āđ€āļ™āļ·āđ‰āļ­āļ—āļĩāđˆ āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļˆāļ°āļĄāļĩāļ›āļāļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡āļāļēāļĢāļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩ āļ‹āđˆāļķāļ‡āđ€āļĢāļēāļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āđāļšāļ‡āļ­āļ­āļāđ„āļ”āđ€āļ›āļ™

āļŠāļēāļĄāļ›āļĢāļ°āđ€āļ āļ— āļ™āđˆāļąāļ™āļ„āļ·āļ­ â€Ē āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāđ€āļžāļīāđˆāļĄ (Insertion anomalies) â€Ē āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāļĨāļš (Deletion anomalies) â€Ē āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ (Modification anomalies)

āļ•āļąāļ§āļ­āļĒāļēāļ‡ āđ€āļĄāđˆāļ·āļ­āļžāļīāļˆāļēāļĢāļ“āļēāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ”āļąāļ‡āļ•āļ­āđ„āļ›āļ™āļĩāđ‰ EMP_PROJ ( Emp#, Proj#, Ename, Pname, No_hours) āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāđāļ—āļĢāļ (Insertion Anomalies) āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđāļ—āļĢāļ Project āđƒāļŦāļĄāđ€āļ‚āļēāđ„āļ› āļ™āļ­āļāļˆāļēāļāļ§āļē Employee āļˆāļ°āļ–āļđāļ assign āđ€āļ‚āļēāđ„āļ›āđƒāļ™ Project āļŦāļĢāļ·āļ­āđƒāļ™āļ—āļēāļ‡āļāļĨāļąāļšāļāļąāļ™ āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđ€āļžāļīāđˆāļĄ Employee āđ€āļ‚āļēāđ„āļ›āļ™āļ­āļāļˆāļēāļāļ§āļē Employee āļˆāļ°āļ–āļđāļ assign āđ€āļ‚āļēāđ„āļ›āđƒāļ™ Project āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāļĨāļš (Deletion Anomalies) āđ€āļĄāđˆāļ·āļ­āļĄāļĩāļāļēāļĢāļĨāļš Project āļŦāļ™āđˆāļķāļ‡āļ­āļ­āļāđ„āļ›āļˆāļ°āļŠāļ‡āļœāļĨāđƒāļŦāļĄāļĩāļāļēāļĢāļĨāļš Employee āļ—āļĩāđˆāļ—āđāļēāļ‡āļēāļ™āļ­āļĒāļđāđƒāļ™ Project āļ™āđ‰āļąāļ™ āļŦāļĢāļ·āļ­ āļ­āļĩāļāļ—āļēāļ‡āļŦāļ™āđˆāļķāļ‡

āļ–āļē Employee āļ™āđ‰āļąāļ™āļ—āđāļēāļ‡āļēāļ™āļ­āļĒāļđāđ€āļžāļĩāļĒāļ‡ Project āđ€āļ”āļĩāļĒāļ§ āļāļēāļĢāļĨāļš Employee āļ™āđ‰āļąāļ™āļˆāļ°āļŠāļ‡āļœāļĨāđƒāļŦāļ•āļ­āļ‡āļĨāļš Project āļ—āļĩāđˆāđ€āļāđˆāļĩāļĒāļ§āļ‚āļ­āļ‡ āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ (Modification Anomalies) āđ€āļĄāđˆāļ·āļ­āļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ·āđˆāļ­āļ‚āļ­āļ‡ Project P1 āļˆāļēāļ “Billing” āđ€āļ›āļ™ “Customer-Accounting” āļ‚āļ­āļĄāļđāļĨāļˆāđāļēāđ€āļ›āļ™āļ•āļ­āļ‡

āļ–āļđāļāļ™āđāļēāđ„āļ›āđāļāđ„āļ‚āđƒāļ™āļ­āļĩāļ 100 employees āļ—āļĩāđˆāļ—āđāļēāļ‡āļēāļ™āđƒāļ™ Project P1

Page 4: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-4 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩāđˆ 8.3 āļ•āļąāļ§āļ­āļĒāļēāļ‡āļ‚āļ­āļ‡

Relation schema āļŠāļ­āļ‡āļ­āļąāļ™āļ—āļĩāđˆāđ„āļ”āļœāļĨ

āļāļĢāļ°āļ—āļšāļˆāļēāļāļāļēāļĢ

āļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨ āļĩ

āļĢāļđāļ›āļ—āļĩ āđˆ8.4 āļ•āļąāļ§āļ­āļĒāļēāļ‡āļ‚āļ­āļ‡

āļŠāļ–āļēāļ™āļ° āļŦāļĢāļ·āļ­ state āļ‚āļ­āļ‡

EMP_DEPT āđāļĨāļ°

EMP_PROJ

āļĢāļđāļ›āļ—āļĩāđˆ 8.4 āđāļŠāļ”āļ‡āļ•āļąāļ§āļ­āļĒāļēāļ‡āļ‚āļ­āļ‡āļŠāļ–āļēāļ™āļ° āļŦāļĢāļ·āļ­ state āļ‚āļ­āļ‡ EMP_DEPT āđāļĨāļ° EMP_PROJ āļ—āļĩāđˆāđ€āļ›āļ™āļœāļĨāļĨāļąāļžāļ˜āļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđƒāļŠ Natural Join āđƒāļ™āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđƒāļ™āļĢāļđāļ› 10.2 āļ‹āđˆāļķāļ‡āļ­āļēāļˆāļˆāļ°āļ–āļđāļāđ€āļāđ‡āļšāđ„āļ§āđƒāļ™āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļžāļ·āđˆāļ­āđ€āļŦāļ•āļļāļœāļĨāļ”āļēāļ™āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

Page 5: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-5 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

8.2.2 āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆ 2 āļāļēāļĢāļ­āļ­āļāđāļšāļš Schema āļ—āļĩāđˆāđ„āļĄāļ—āđāļēāđƒāļŦāđ„āļ”āļĢāļąāļšāļœāļĨāļāļĢāļ°āļ—āļšāļˆāļēāļāļāļēāļĢāļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđƒāļ™āļāļēāļĢāđāļ—āļĢāļ āļāļēāļĢāļĨāļš āļŦāļĢāļ·āļ­āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡

āđ‚āļ”āļĒāļŦāļēāļāđ€āļ›āļ™āđ€āļŠāļ™āļ™āđ‰āļąāļ™ āļŦāļēāļāļĄāļĩāļāļēāļĢāđ€āļāļīāļ”āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāļ­āļĒāļēāļ‡āđƒāļ”āļ­āļĒāļēāļ‡āļŦāļ™āđˆāļķāļ‡āđƒāļ™āļ‚āļēāļ‡āļ•āļ™ āđ€āļĢāļēāļˆāđāļēāđ€āļ›āļ™āļ—āļĩāđˆāļˆāļ°āļ•āļ­āļ‡āļ„āđāļēāļ™āļķāļ‡āļ–āļķāļ‡āđ€āļĄāđˆāļ·āļ­āļ—āđāļēāļāļēāļĢ

āļŠāļĢāļēāļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

8.2.3 āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆ 3 āđ€āļĄāđˆāļ·āļ­āļ„āđāļēāļ™āļķāļ‡āļ–āļķāļ‡āļ„āļēāļ™āļąāļĨ (Null value) āđƒāļ™āļ—āļđāđ€āļžāļīāļĨ āļžāļšāļ§āļēāđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ­āļēāļˆāđ€āļ›āļ™āđ„āļ›āđ„āļ”āļ—āļĩāđˆāļˆāļ°āļĄāļĩāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āļ—āļđāđ€āļžāļīāļĨāļĄāļąāļāļĄāļĩāļ„āļē

āđ€āļ›āļ™āļ™āļąāļĨ āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļĩāđˆāļĄāļąāļāļˆāļ°āļžāļšāļ„āļēāļ™āļąāļĨāļ”āļąāļ‡āļāļĨāļēāļ§āļŠāļēāļĄāļēāļĢāļ–āļ™āđāļēāđ„āļ›āļŠāļĢāļēāļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļŦāļĢāļ·āļ­āļĢāļĩāđ€āļĨāļŠāļąāļ™āđƒāļŦāļĄāļžāļĢāļ­āļĄāļāļąāļšāļ„āļēāļ„āļĩāļĒāļŦāļĨāļąāļ

(Primary key) āđ„āļ” āđ€āļ™āđˆāļ·āļ­āļ‡āļˆāļēāļāļāļēāļĢāļĄāļĩāļ„āļēāļ™āļąāļĨ (Null) āļ­āļēāļˆāļ—āđāļēāđƒāļŦāđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđ„āļ” āļŦāļĢāļ·āļ­āđƒāļŠāđ„āļ”āđāļ•āđ„āļĄāļ–āļđāļāļ•āļ­āļ‡ āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļ­āļēāļˆāđ€āļāļīāļ”āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļĩāđˆāļĄāļĩāļ„āļēāđāļ•āđ„āļĄāļ—āļĢāļēāļšāļ„āļēāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™ āļŦāļĢāļ·āļ­āļ­āļēāļˆāļĄāļĩāļ„āļēāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđāļ•āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ™āđāļēāļĄāļēāđƒāļŠāļ‡āļēāļ™āđ„āļ” āļŦāļĢāļ·āļ­

āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āļēāļ—āļđāđ€āļžāļīāļĨāđāļšāļš Spurious āļ„āļ·āļ­ āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ—āļĩāđˆāđ„āļĄāļ”āļĩāļ™āļąāļāļ‚āļ­āļ‡āļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āļˆāļ°āļāļ­āđƒāļŦāđ€āļāļīāļ”āļœāļĨāļĨāļąāļžāļ˜āļ—āļĩāđˆ

āļœāļīāļ”āļžāļĨāļēāļ”āļŠāđāļēāļŦāļĢāļąāļšāđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™ JOIN āļ­āļēāļˆāļˆāļ°āļ™āđāļēāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āļē "lossless join" āđ„āļ›āđƒāļŠāļŠāđāļēāļŦāļĢāļąāļšāļĒāļ·āļ™āļĒāļąāļ™āļœāļĨāļĨāļąāļžāļ˜āļ—āļĩāđˆāļĄāļĩ

āļ„āļ§āļēāļĄāļŠāđāļēāļ„āļąāļāļŠāđāļēāļŦāļĢāļąāļšāđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™ JOIN

8.2.4 āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆ 4 āđ„āļĄāļ„āļ§āļĢāļ­āļ­āļāđāļšāļšāļĢāļĩāđ€āļĨāļŠāļąāļ™āđ€āļžāļ·āđˆāļ­āļŠāļ™āļ­āļ‡āļ„āļ§āļēāļĄāļ•āļ­āļ‡āļāļēāļĢāđāļ„āđƒāļ™āļŠāļ§āļ™āļ‚āļ­āļ‡āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚ JOIN āđāļĨāļ°āļāļēāļĢāļ—āđāļē Natural Join āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āđƒāļ”āđ† āđ„āļĄāļ„āļ§āļĢāļŠāļĢāļēāļ‡āļ—āļđāđ€āļžāļīāļĨāđāļšāļš spurious āļˆāļ°āļĄāļĩāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāļŠāđāļēāļ„āļąāļāļŠāļ­āļ‡āļ›āļĢāļ°āļāļēāļĢāđƒāļ™āļāļēāļĢāļ—āđāļēāļ”āļĩāļ„āļ­āļĄāđ‚āļžāļŠāļīāļŠāļąāļ™ āļ™āđˆāļąāļ™āļ„āļ·āļ­ â€Ē Non-additive āļŦāļĢāļ·āļ­ losslessness āļ‚āļ­āļ‡ corresponding join â€Ē Preservation āļ‚āļ­āļ‡ functional dependencies. āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āļ—āļīāđ‰āļ‡āļ„āļļāļ“āļŠāļĄāļšāļ•āļī (a) āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŠāđāļēāļ„āļąāļāļ­āļĒāļēāļ‡āļĄāļēāļ āđāļĨāļ°āđƒāļ™āļ‚āļ“āļ°āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ­āļēāļˆāļĨāļ°āļ—āļīāđ‰āļ‡āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī (b) āļ—āļĩāđˆāļĒāļ·āļ”āļŦāļĒāļļāļ™āļ™āļ­āļĒāļāļ§āļē āļ—āļąāđ‰āļ‡āļ™āđ‰āļĩāđƒāļŦāļ”āļđāļ•āļ­āđƒāļ™āļšāļ—āļ—āļĩāđˆ 11

āļĢāļđāļ›āļ—āļĩ āđˆ8.5 āļ•āļąāļ§āļ­āļĒāļēāļ‡āļāļēāļĢ

āļ­āļ­āļāđāļšāļšāļ—āļĩāđˆāđ„āļĄāļ”āļĩ

āļŠāđāļēāļŦāļĢāļąāļš

āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ EMP_PROJ

Page 6: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-6 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩāđˆ 8.5 āđ€āļ›āļ™āļ•āļąāļ§āļ­āļĒāļēāļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ—āļĩāđˆāđ„āļĄāļ”āļĩāļŠāđāļēāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ EMP_PROJ āđƒāļ™āļĢāļđāļ› 8.3b (a) Relation schemas EMP_LOCS āđāļĨāļ° EMP_PROJ1 (b) āļœāļĨāļ‚āļ­āļ‡āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāļŠāļ§āļ™āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļ‚āļ­āļ‡ EMP_PROJ āļˆāļēāļāļĢāļđāļ› 8.4 āļ•āļ­āļˆāļēāļ EMP_LOCS āđāļĨāļ°

EMP_PROJ1.

āļĢāļđāļ›āļ—āļĩāđˆ 8.6 āļœāļĨāļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•

NATURAL JOIN

āļĢāļđāļ›āļ—āļĩāđˆ 8.6 āđāļŠāļ”āļ‡āļœāļĨāļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ• NATURAL JOIN āđ€āļ‚āļēāļāļąāļšāļ—āļđāđ€āļžāļīāļĨāļ‚āļēāļ‡āļšāļ™āđ€āļŠāļ™āļ›āļĢāļ° āđƒāļ™ EMP_PROJ1 āđāļĨāļ° EMP_LOCS āļˆāļēāļāļĢāļđāļ› 8.5 āļ‹āđˆāļķāļ‡āļˆāļ°āļŠāļ‡āļœāļĨāđƒāļŦāđ€āļāļīāļ”āļāļēāļĢāļŠāļĢāļēāļ‡āļ—āļđāđ€āļžāļīāļĨāđāļšāļš spurious

8.3 āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ (Functional dependencies: FDs) āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ (Functional dependencies : FDs) āļ–āļđāļāļ™āđāļēāđ„āļ›āđƒāļŠāđƒāļ™āļāļēāļĢāļāđāļēāļŦāļ™āļ”āļ§āļīāļ˜āļĩāđƒāļ™āļāļēāļĢāļ§āļąāļ”āļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“āļ‚āļ­āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āļ­āļĒāļēāļ‡āđ€āļ›āļ™āļ—āļēāļ‡āļāļēāļĢ āļŦāļĢāļ·āļ­āđ€āļĢāļĩāļĒāļāđ„āļ”āļ§āļēāđ€āļ›āļ™āļāļēāļĢāļ§āļąāļ” "Goodness" āļ‚āļ­āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ™āļąāđˆāļ™āđ€āļ­āļ‡ āđ‚āļ”āļĒ FDs āđāļĨāļ° āļ„āļĒāļĩāļˆāļ°āļ–āļđāļāļ™āđāļēāđ„āļ›āđƒāļŠāđƒāļ™āļāļēāļĢāļāđāļēāļŦāļ™āļ”āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄ (Normal Forms) āļŠāđāļēāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđƒāļ”āđ† āđ‚āļ”āļĒ

Page 7: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-7 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

FDs āļĒāļąāļ‡āļ—āđāļēāļŦāļ™āļēāļ—āļĩāđˆāđ€āļ›āļ™āļ‚āļ­āļˆāđāļēāļāļąāļ”āļ—āļĩāđˆāļ—āđāļēāļāļēāļĢāļ”āļĩāđ„āļĢāļŸ (Derive) āļĄāļēāļˆāļēāļāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ āļēāļĒāđƒāļ™

(interrelationships) āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āļ‚āļ­āļĄāļđāļĨ

āđ€āļ‹āļ•āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• X āđƒāļ™āđ€āļŠāļīāļ‡āļŸāļ‡āļāļŠāļąāļ™āļˆāļ°āļ—āđāļēāļŦāļ™āļēāļ—āļĩāđˆāļāđāļēāļŦāļ™āļ”āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• āļ–āļēāļ„āļēāļ‚āļ­āļ‡ X āļŠāļēāļĄāļēāļĢāļ–āļāđāļēāļŦāļ™āļ”āļ„āļēāļ—āļĩāđˆāđ€āļ›āļ™

āđ€āļ­āļāļĨāļąāļāļĐāļ“āļŦāļĢāļ·āļ­ Unique value āļŠāđāļēāļŦāļĢāļąāļš Y X -> Y āļ–āļ·āļ­āđ„āļ”āļ§āļēāđ€āļĄāļ·āđˆāļ­āđ„āļĢāļāđ‡āļ•āļēāļĄāļ—āļĩāđˆāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ—āļđāđ€āļžāļīāļĨāļĄāļĩāļ„āļēāđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļŠāđāļēāļŦāļĢāļąāļš X āļ„āļēāļžāļ§āļāļ™āļąāđ‰āļ™āļˆāļ°āļ•āļ­āļ‡āļĄāļĩāļ„āļēāđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļŠāđāļēāļŦāļĢāļąāļš Y āļŠāđāļēāļŦāļĢāļąāļšāļŠāļ­āļ‡āļ—āļđāđ€āļžāļīāļĨ t1 āđāļĨāļ° t2 āļ‹āđˆāļķāļ‡āđ€āļ›āļ™āļ­āļīāļ™āļŠāđāļ•āļ™āļ‹ r(R) āđƒāļ™āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļ–āļē t1[X]=t2[X] āđāļĨāļ§ t1[Y]=t2[Y] X -> Y āđƒāļ™ R āļˆāļ°āļ—āđāļēāļŦāļ™āļēāļ—āļĩāđˆāļāđāļēāļŦāļ™āļ”āļ‚āļ­āļˆāđāļēāļāļąāļ”āđƒāļ™āļ—āļļāļāđ† āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ‚āļ­āļ‡āļ­āļīāļ™āļŠāđāļ•āļ™āļ‹ r (R) FDs āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĩāļĒāļ™āļŠāļąāļāļāļĢāļ“āđ€āļŠāļīāļ‡āđāļœāļ™āļ āļēāļžāļ”āļąāļ‡āđāļŠāļ”āļ‡āđƒāļ™āļĢāļđāļ›āļ—āļĩāđˆ 8.3 āđ‚āļ”āļĒāđāļ•āļĨāļ°āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļˆāļ°āđ€āļ‚āļĩāļĒāļ™āđāļ—āļ™āđ„āļ”āļ”āļ§āļĒāđ€āļŠāļ™āļ•āļĢāļ‡āđāļ™āļ§āļ™āļ­āļ™ āļ—āļĩāđˆāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ”āļēāļ™āļ‹āļēāļĒ (Left-hand side) āļˆāļ°āđ€āļŠāļ·āđˆāļ­āļĄāļāļąāļšāđ€āļŠāļ™āļ•āļĢāļ‡āļ”āļąāļ‡āļāļĨāļēāļ§āļ”āļ§āļĒāđ€āļŠāļ™āļ•āļĢāļ‡ āđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ”āļēāļ™āļ‚āļ§āļē (Right-hand side) āļˆāļ°āđ€āļŠāļ·āđˆāļ­āļĄāļ”āļ§āļĒāļĨāļđāļāļĻāļĢāļ—āļĩāđˆāļŠāļĩāđ‰āđ„āļ›āļĒāļąāļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ™āđ‰āļąāļ™

āļ•āļąāļ§āļ­āļĒāļēāļ‡āļ‚āļ­āļ‡āļ‚āļ­āļˆāđāļēāļāļąāļ”āļ‚āļ­āļ‡ FD

Social security number āđ€āļ›āļ™āļ•āļąāļ§āļāđāļēāļŦāļ™āļ” Employee name āļˆāļ°āđ„āļ”āļ§āļē

SSN -> ENAME Project number āđ€āļ›āļ™āļ•āļąāļ§āļāđāļēāļŦāļ™āļ” Project name āđāļĨāļ° Location āļˆāļ°āđ„āļ”āļ§āļē

PNUMBER -> {PNAME, PLOCATION} Social security number āļ‚āļ­āļ‡ Employee āđāļĨāļ° Project number āđ€āļ›āļ™āļ•āļąāļ§āļāđāļēāļŦāļ™āļ”āļˆāđāļēāļ™āļ§āļ™āļŠāļąāđˆāļ§āđ‚āļĄāļ‡āļ•āļ­āļŠāļąāļ›āļ”āļēāļŦāļ—āļĩāđˆ Employee āļ—āđāļēāļ‡āļēāļ™āđƒāļ™ project {SSN, PNUMBER} -> HOURS

āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļĒāļąāļ‡āđ€āļ›āļ™āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĢāļ·āļ­āļ‚āļ­āļˆāđāļēāļāļąāļ”āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđƒāļ™āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āđ‚āļ”āļĒāļ‚āļ­āļˆāđāļēāļāļąāļ”āļˆāļ°āđ€āļ›āļ™āļ•āļąāļ§āļĒāļķāļ”āļ„āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđƒāļ™āļ—āļļāļāļ­āļīāļ™āļŠāđāļ•āļ™āļ‹ r(R) āđ€āļŠāļ™ āđ€āļĄāđˆāļ·āļ­āļāđāļēāļŦāļ™āļ” K āđ€āļ›āļ™āļ„āļĩāļĒāļ‚āļ­āļ‡ R āļ”āļąāļ‡āļ™āđ‰āļąāļ™ K āđƒāļ™āđ€āļŠāļīāļ‡āļŸāļ‡āļāļŠāļąāļ™āļˆāļ°āđ€āļ›āļ™āļ•āļąāļ§āļāđāļēāļŦāļ™āļ”āļ—āļļāļāđ† āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđƒāļ™ R āļ”āļ§āļĒ āļ­āļĒāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļžāļīāļˆāļēāļĢāļ“āļēāđ„āļ”āļˆāļēāļāļ­āļīāļ™āļŠ

āđāļ•āļ™āļ‹āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āđāļ•āļ•āļ­āļ‡āļ–āļđāļāļāđāļēāļŦāļ™āļ”āļ‚āļķāđ‰āļ™āļ­āļĒāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ—āļĩāđˆāļĢāļĩāđ€āļĨāļŠāļąāļ™āļ™āđ‰āļąāļ™āļ–āļđāļāļŠāļĢāļēāļ‡āļ‚āļķāđ‰āļ™

8.4 āļāļŽāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡āļ‚āļ­āļ‡ FD (Inference rules of FD) āđ€āļĄāđˆāļ·āļ­āļāđāļēāļŦāļ™āļ”āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ (FDs) F āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ­āļēāļ‡āļ–āļķāļ‡ FDs āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļˆāļēāļāļāļēāļĢāđƒāļŠāļāļŽāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡ (Inference rules) āļ‚āļ­āļ‡ Armstrong āļ”āļąāļ‡āļ™āđ‰āļĩ â€Ē IR1. (Reflexive) If Y subset-of X, then X -> Y â€Ē IR2. (Augmentation) If X -> Y, then XZ -> YZ (XZ āđāļ—āļ™ X U Z) â€Ē IR3. (Transitive) If X -> Y and Y -> Z, then X -> Z Armstrong (1974) āđ„āļ”āđāļŠāļ”āļ‡āđƒāļŦāđ€āļŦāđ‡āļ™āļ§āļēāđƒāļ™āļāļēāļĢāđƒāļŠāļāļŽāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡āļ‚āļ­ IR1, IR2, IR3 āđ€āļ›āļ™āļāļāļ—āļĩāđˆāđ€āļ›āļ™āđ€āļŠāļĩāļĒāļ‡āļŦāļ™āļķāđˆāļ‡

(Sound) āđāļĨāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“ (Complete) āđ‚āļ”āļĒāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđ€āļŠāļĩāļĒāļ‡ (Sound) āļ„āļ·āļ­ āļŠāđāļēāļŦāļĢāļąāļšāđ€āļ‹āļ•āļ‚āļ­āļ‡ FDs F āļšāļ™āđ€āļ„āļēāļĢāļēāļ‡āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ—āļĩāđˆāđ„āļ”āļˆāļēāļāļāļēāļĢāđƒāļŠāļāļāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡ IR1 āļ–āļķāļ‡ IR3 āļšāļ™āđ€āļ‹āļ• F āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ„āļ”āļāļąāļšāļ—āļļāļāļ­āļīāļ™āļŠāđāļ•āļ™āļ—āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āđāļĨāļ°āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“ (Complete) āļ„āļ·āļ­ āļāļēāļĢāđƒāļŠāļāļāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡ IR1 āļ–āļķāļ‡ IR3 āļšāļ™āđ€āļ‹āļ• F āļ‹āđāđ‰āļēāđ† āļˆāļ™āđ„āļĄāļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ”āđ†āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļ­āļēāļ‡āļ–āļķāļ‡āđ„āļ”āļ­āļĩāļ āļœāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļˆāļēāļāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡āļˆāļ°āđ„āļ”āđ€āļ‹āļ•āļ‚āļ­āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ—āļĩāđˆ

āđ€āļ›āļ™āđ„āļ›āđ„āļ”āļ—āļąāđ‰āļ‡āļŦāļĄāļ” (All possible dependencies) āļŦāļĢāļ·āļ­āļŠāļ§āļ™āļ›āļ”āļ‚āļ­āļ‡āđ€āļ‹āļ• F (Closure of F: F+) āļŠāđāļēāļŦāļĢāļąāļšāļāļŽāļ­āļēāļ‡āļ–āļķāļ‡āļ­āļ·āđˆāļ™ āđ† āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ™āđāļēāđ„āļ›āđƒāļŠ āđ„āļ”āđāļ

â€Ē (Decomposition) If X -> YZ, then X -> Y and X -> Z â€Ē (Union) If X -> Y and X -> Z, then X -> YZ

Page 8: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-8 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

â€Ē (Psuedotransitivity) If X -> Y and WY -> Z, then WX -> Z āđ‚āļ”āļĒāđƒāļ™āļāļŽāļŠāļēāļĄāļ­āļąāļ™āļ‚āļēāļ‡āļ—āļēāļĒāļ™āļķāđ‰āļˆāļ°āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļšāļ‚āļ­āļ­āļ·āđˆāļ™ āđ† āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āđāļ›āļĨāļ‡āđ„āļ”āļˆāļēāļāļāļēāļĢāđƒāļŠāļāļ IR1, IR2 āđāļĨāļ° IR3

āļāļēāļĢāļ­āļ­āļāđāļšāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāļ™āđ‰āļąāļ™āļœāļđāļ­āļ­āļāđāļšāļšāļˆāļ°āļāđāļēāļŦāļ™āļ”āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ F āļ•āļēāļĄāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•

āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļ‹āđˆāļķāļ‡āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāļāļāļāļēāļĢāļ­āļēāļ‡āļ–āļķāļ‡āđƒāļ™āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļ—āļĩāđˆāļĒāļąāļ‡āļ„āļ‡āđƒāļŠāđ„āļ”āļŠāđāļēāļŦāļĢāļąāļšāļ—āļļāļāļ­āļīāļ™āļŠāđāļ•āļ™āļ‹āđƒāļ™ R āļ­āļĩāļāļ§āļīāļ˜āļĩāļŦāļ™āđˆāļķāļ‡āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļŠāļ§āļĒāđƒāļ™āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļˆāļēāļ F āļ™āđˆāļąāļ™āļ„āļ·āļ­āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāđāļ•āļĨāļ°

āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• X āļ—āļĩāđˆāļ­āļĒāļđāļ—āļēāļ‡āļ”āļēāļ™āļ‹āļēāļĒāļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļšāļēāļ‡āļŸāļ‡āļāļŠāļąāļ™ āđāļĨāļ§āļžāļīāļˆāļēāļĢāļ“āļēāđ€āļ‹āļ•āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ—āļĩāđˆ

āļ‚āļķāđ‰āļ™āļāļąāļš X āļŦāļĢāļ·āļ­āļāļĨāļēāļ§āđ„āļ”āļ§āļēāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļŠāļēāļĄāļēāļĢāļ–āļ–āļđāļāļžāļīāļˆāļēāļĢāļ“āļēāđ„āļ”āļˆāļēāļāļāļēāļĢāļŦāļēāļŠāļ§āļ™āļ›āļ”āļ‚āļ­āļ‡ X (Closure of X : X+) āļ‚āļ­āļ‡āļ—āļļāļāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• X āļ™āđˆāļąāļ™āđ€āļ­āļ‡

8.4.1 āđ€āļ‹āļ•āļ—āļĩāđˆāđ€āļ—āļēāļāļąāļ™āļ‚āļ­āļ‡ FDs (Equivalence of Sets of FDs) āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ F āļˆāļ°āļ–āļđāļāđ€āļĢāļĩāļĒāļāļ§āļēāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ (Cover) āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ E āļ–āļēāļ—āļļāļ

āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ E āļ­āļĒāļđāđƒāļ™ F+ āļŦāļĢāļ·āļ­āļāļĨāļēāļ§āđ„āļ”āļ§āļēāļ—āļļāļāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ E āļŠāļēāļĄāļēāļĢāļ–āļ–āļđāļāļ­āļēāļ‡āļ–āļķāļ‡āđ„āļ”āļˆāļēāļ F āđ„āļ”

āļŠāļ­āļ‡āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ E āđāļĨāļ° F āļˆāļ°āļĄāļĩāļ„āļēāđ€āļ—āļēāļāļąāļ™ (Equivalent) āļ–āļē E+ = F+ āđ‚āļ”āļĒāļāļēāļĢāļĄāļĩāļ„āļēāđ€āļ—āļēāļāļąāļ™āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āļēāļ—āļļāļāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ E āļŠāļēāļĄāļēāļĢāļ–āļ–āļđāļāļ­āļēāļ‡āļ–āļķāļ‡āđ„āļ”āļˆāļēāļ F āđāļĨāļ°āļ—āļļāļāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ F āļˆāļ°āļ–āļđāļāļ­āļēāļ‡āļ–āļķāļ‡āđ„āļ”āļˆāļēāļ E āļ™āđˆāļąāļ™āļ„āļ·āļ­āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ E āđāļĨāļ° F āļˆāļ°āđ€āļ—āļēāļāļąāļ™ āļ–āļē E āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ F āđāļĨāļ° F āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ E āļ™āđˆāļąāļ™āđ€āļ­āļ‡

8.4.2 āđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ” (Minimal sets of FDs) āđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ” F āļ‚āļ­āļ‡āđ€āļ‹āļ•āļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ E āđƒāļ”āđ† āļˆāļ°āļĢāļ­āļ‡āļĢāļąāļšāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāļ—āļļāļāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩ

āđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ E āļ­āļĒāļđāđƒāļ™ F+ āļ‚āļ­āļ‡ F āđāļĨāļ°āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ”āļąāļ‡āļāļĨāļēāļ§āļ‚āļ­āļ‡ F āļˆāļ°āļŦāļēāļĒāđ„āļ›āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļŦāļ™āđˆāļķāļ‡āļ‚āļ­āļ‡ F āļ–āļđāļāļ•āļąāļ”āļ—āļīāđ‰āļ‡āđ„āļ› āđ‚āļ”āļĒ F āļˆāļ°āļ•āļ­āļ‡āđ„āļĄāļĄāļĩāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ‹āđāđ‰āļēāļ‹āļ­āļ™āđāļĨāļ° E āļˆāļ°āļ•āļ­āļ‡āļ­āļĒāļđāđƒāļ™āļĢāļđāļ›āđāļšāļšāļĄāļēāļ•āļĢāļāļēāļ™ (Standard Form) F āļˆāļ°āļ–āļđāļāļāļĨāļēāļ§āđ„āļ”āļ§āļēāđ€āļ›āļ™āđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ”āļ‚āļ­āļ‡ E āđ„āļ” āļ–āļēāđ€āļ‹āļ• F āļŠāļēāļĄāļēāļĢāļ–āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļ•āļ­āđ„āļ›āļ™āļĩāđ‰ â€Ē āļ—āļļāļāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™ F āļĄāļĩāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļēāļ‡āļ‚āļ§āļēāļĄāļ·āļ­ (Right-hand side) āđ€āļ›āļ™āļ‹āļīāļ‡āđ€āļāļīāļĨāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• (Single

attribute) â€Ē āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđāļ—āļ™āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X->A āđƒāļ™ F āļ”āļ§āļĒāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ Y->A āđ‚āļ”āļĒ Y āđ€āļ›āļ™āļ‹āļąāļšāđ€āļ‹āļ•āļ‚āļ­āļ‡ X āđāļĨāļ§āļĒāļąāļ‡āļ„āļ‡āļĄāļĩ

āļ„āļēāđ€āļ‹āļ•āļ‚āļ­āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ€āļ—āļēāļāļąāļš F â€Ē āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āļāđāļēāļˆāļąāļ”āļ„āļēāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ”āđ† āļˆāļēāļ F āđāļĨāļ§āļĒāļąāļ‡āļ„āļ‡āļĄāļĩāļ„āļēāđ€āļ‹āļ•āļ‚āļ­āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđ€āļ—āļēāļāļąāļš F āđ€āļ‹āļ•āļ‚āļ­āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļŦāļ™āđˆāļķāļ‡āļ­āļēāļˆāļĄāļĩāđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ”āđ„āļ”āļŦāļĨāļēāļĒāđ€āļ‹āļ• āļˆāļķāļ‡āļ­āļēāļˆāļ•āļ­āļ‡āļĄāļĩāļāļēāļĢāļāđāļēāļŦāļ™āļ”āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚

āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđƒāļ™āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ” āđ€āļŠāļ™ āļāļēāļĢāļāđāļēāļŦāļ™āļ”āđƒāļŦāđ€āļ‹āļ•āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āļ­āļĒāļŠāļļāļ”āļ•āļ­āļ‡

āļĄāļĩāļˆāđāļēāļ™āļ§āļ™āļ‚āļ­āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđƒāļ™āđ€āļ‹āļ•āļ™āļ­āļĒāļ—āļĩāđˆāļŠāļļāļ” āđ€āļ›āļ™āļ•āļ™ (āļ•āļąāļ§āļ­āļĒāļēāļ‡ āļžāļīāļˆāļēāļĢāļ“āļēāļ­āļąāļĨāļāļ­āļĢāļīāļ—āļķāļĄ8.2 āđāļĨāļ° 8.4)

8.5 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ (Normalization of Relation) āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ (Normalization) āļ„āļ·āļ­ āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļˆāļēāļ FDs āđāļĨāļ°āļ„āļĩāļĒāļŦāļĨāļąāļ āđ€āļžāļ·āđˆāļ­āļĨāļ”āļ„āļ§āļēāļĄ

āļ‹āđāđ‰āļēāļ‹āļ­āļ™āļ‚āļ­āļ‡āļ‚āļ­āļĄāļđāļĨ āđāļĨāļ°āļĨāļ”āļ­āļąāļžāđ€āļ”āļ—āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩ āđ‚āļ”āļĒāļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāđ„āļĄāļ”āļĩāļŦāļĢāļ·āļ­āđ„āļĄāļ™āļēāļžāļķāļ‡āļžāļ­āđƒāļˆāļˆāļ°āļ–āļđāļāđāļ•āļāļ­āļ­āļāđ€āļ›āļ™āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāđ€āļĨāđ‡āļāļĨāļ‡

āđ€āļžāļ·āđˆāļ­āđƒāļŦāļĢāļĩāđ€āļĨāļŠāļąāļ™āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āđ€āļ›āļ™āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāļ”āļĩ

āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļˆāļ°āļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āļ­āļĒāļđāļšāļ™āļ„āļĩāļĒāļŦāļĨāļąāļ āļŦāļĢāļ·āļ­ Primary Key āđ‚āļ”āļĒāļĄāļĩāļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļ—āļĩāđˆāļ•āļ­āļ‡āļŠāļ™āđƒāļˆāļ”āļąāļ‡āļ™āđ‰āļĩ

Page 9: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-9 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

â€Ē āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ â€Ē āļāļēāļĢāđƒāļŠāļ‡āļēāļ™āļ‚āļ­āļ‡āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄ â€Ē āļ„āđāļēāļˆāđāļēāļāļąāļ”āļ„āļ§āļēāļĄāļ‚āļ­āļ‡āļ„āļĩāļĒāđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• â€Ē āļāļēāļĢāđ€āļ‚āļēāļĢāļ§āļĄāļ‚āļ­āļ‡āļ„āļĩāļĒ āđƒāļ™

- First Normal Form (1NF) - Second Normal Form (2NF) - Third Normal Form (3NF)

āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄ (Normal Form) āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļŦāļ™āļķāđˆāļ‡āđ† āļ„āļ·āļ­āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļ—āļĩāđˆāļĢāļ°āļšāļļāļ§āļēāļĢāļĩāđ€āļĨāļŠāļąāļ™āļĄāļĩāļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļŠāļđāļ‡āļŠāļļāļ”āļ—āļĩāđˆāļ”āļīāļāļĢāļĩāđƒāļ” āļŦāļĢāļ·āļ­āļ”āļīāļ

āļĢāļĩāļ‚āļ­āļ‡āļāļēāļĢāļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ—āļĩāđˆāļĢāļĩāđ€āļĨāļŠāļąāļ™āļ™āđ‰āļąāļ™āļœāļēāļ™āļāļēāļĢāļ™āļ­āļĢāļĄāļąāļĨāđ„āļĨāļ‹āđāļĨāļ§ āđ‚āļ”āļĒ 2NF, 3NF, BCNF āļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āļ­āļĒāļđāļšāļ™āļ„āļĩāļĒ āđāļĨāļ° FDs āļ‚āļ­āļ‡āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļŦāļ™āļķāđˆāļ‡ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ 4NF āļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āļ­āļĒāļđāļšāļ™āļ„āļĩāļĒ āđāļĨāļ° Multi-valued dependencies : MVDs āđāļĨāļ° 5NF āļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āļ­āļĒāļđāļšāļ™āļ„āļĩāļĒ āđāļĨāļ° Join dependencies : JDs (āļ­āļēāļ‡āļ–āļķāļ‡āđƒāļ™āļšāļ—āļ—āļĩāđˆ 11) āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļĒāļąāļ‡āļ•āļ­āļ‡āļāļēāļĢāļŠāļ§āļ™āļ‚āļ­āļ‡āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ (Additional properties) āđ€āļžāļ·āđˆāļ­āđ€āļ›āļ™āļ•āļąāļ§āļāļēāļĢāļąāļ™āļ•āļĩāļāļēāļĢāļ­āļ­āļāđāļšāļšāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ—āļĩāđˆāļ”āļĩ (Good relation design)

8.5.1 āļāļēāļĢāđƒāļŠāļ‡āļēāļ™āļ‚āļ­āļ‡āļ™āļ­āļĢāļĄāļĨāļąāļŸāļ­āļĢāļĄ āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļˆāļ°āļ–āļđāļāļ™āđāļēāđ„āļ›āđƒāļŠāđƒāļ™āļāļēāļĢāļ—āđāļēāļ‡āļēāļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ„āļ”āļœāļĨāļĨāļąāļžāļ˜āļ‚āļ­āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ—āļĩāđˆāļĄāļĩāļ„āļļāļ“āļ āļēāļžāļ”āļĩ āđāļĨāļ°āļ•āļĢāļ‡āļ•āļēāļĄāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆ

āļ•āļ­āļ‡āļāļēāļĢ āđ‚āļ”āļĒāļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļˆāļ°āļŠāļ§āļĒāđƒāļŦāļ™āļąāļāļ­āļ­āļāđāļšāļšāļŦāļĢāļ·āļ­āļœāļđāđƒāļŠāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļ‚āļēāđƒāļˆāļ‚āļ­āļˆāđāļēāļāļąāļ” (Constraints) āļ‚āļ­āļ‡āļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ„āļ”āļŠāļąāļ”āđ€āļˆāļ™āļĄāļēāļāļĒāļīāđˆāļ‡āļ‚āļķāđ‰āļ™ āļ”āļąāļ‡āļ™āđ‰āļąāļ™āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđƒāļ™āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāđƒāļ™āļ›āļˆāļˆāļļāļšāļąāļ™āļˆāļķāļ‡āđƒāļŦāļ„āļ§āļēāļĄāļŠāļ™āđƒāļˆāļāļąāļšāļāļēāļĢāļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™

āđƒāļ™āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĨāđāļēāļ”āļąāļšāļŠāļđāļ‡ āļ„āļ·āļ­ 3NF BCNF āļŦāļĢāļ·āļ­ 4NF āļ­āļĒāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄ āļāļēāļĢāļ­āļ­āļāđāļšāļšāļāļēāļ™āļ‚āļ­āļĄāļđāļĨāļ™āđ‰āļąāļ™āđ„āļĄāļˆāđāļēāđ€āļ›āļ™āļ—āļĩāđˆāļˆāļ°āļ•āļ­āļ‡āļ—āđāļēāļāļēāļĢāļ™āļ­āļĢāļĄāļēāđ„āļĨāļ‹āđƒāļŦāđ„āļ”āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĨāđāļēāļ”āļąāļšāļŠāļđāļ‡āļŠāļļāļ” āļĢāļĩāđ€āļĨāļŠāļąāļ™

āļ­āļēāļˆāļ„āļ‡āđ„āļ§āļ—āļĩāđˆāļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĢāļ°āļ”āļąāļšāđ„āļĄāļŠāļđāļ‡āļ™āļąāļ āđ€āļžāļ·āđˆāļ­āđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļŦāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ āđ‚āļ”āļĒāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđƒāļ™āļāļēāļĢāļĢāļ§āļĄ (Join) āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāļĄāļĩāļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĢāļ°āļ”āļąāļšāļŠāļđāļ‡āđƒāļŦāđ€āļ›āļ™āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĢāļ°āļ”āļąāļšāļ•āđˆāđāļēāļĨāļ‡āļ™āļąāđ‰āļ™āđ€āļĢāļĩāļĒāļāļ§āļēāļāļēāļĢāļ”āļĩāļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ (Denormalization)

8.5.2 āļ„āđāļēāļˆāđāļēāļāļąāļ”āļ‚āļ­āļ‡āļ„āļĩāļĒāđāļĨāļ°āđāļ­āļ—āļĢāļīāļšāļ§āļīāļ•āļ—āļĩāđˆāđ€āļ‚āļēāļĢāļ§āļĄāđƒāļ™āļ„āļĩāļĒ

āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒ (Superkey) āļ‚āļ­āļ‡āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R = {A1, A2, ...., An} āļ„āļ·āļ­āđ€āļ‹āļ•āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• S āļ‹āđˆāļķāļ‡āđ€āļ›āļ™āļ‹āļąāļšāđ€āļ‹āļ•āļ‚āļ­āļ‡ R āļ—āļĩāđˆāļĄāļĩāļ„āļļāļ“āļŠāļĄāļąāļšāļīāļ•āļ„āļ·āļ­āđ„āļĄāļĄāļĩāļŠāļ­āļ‡āļ—āļđāđ€āļžāļīāļĨ t1 āđāļĨāļ° t2 āđƒāļ” āđ† āđƒāļ™ legal relation state r āļ‚āļ­āļ‡ R āļ—āļĩāđˆāļˆāļ°āļĄāļĩāļ„āļē t1[S] = t2[S] āļ„āļĩāļĒ (key) K āļ„āļ·āļ­āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒāļŦāļ™āđˆāļķāļ‡āļ—āļĩāđˆāļĄāļĩāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ āļ„āļ·āļ­ āđ€āļĄāđˆāļ·āļ­āļĨāļšāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđƒāļ”āđ† āļ­āļ­āļāļˆāļēāļ K āļˆāļ°āļ—āđāļēāđƒāļŦ K āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļ™āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒāđ„āļ”āļ­āļĩāļāļ•āļ­āđ„āļ› āļ–āļēāđƒāļ™āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļĄāļĩāļ„āļĩāļĒāļĄāļēāļāļāļ§āļēāļŦāļ™āđˆāļķāļ‡āļ„āļĩāļĒ āđāļ•āļĨāļ°āļ„āļĩāļĒāļˆāļ°āļ–āļđāļāđ€āļĢāļĩāļĒāļāļ§āļē Candidate key āđ‚āļ”āļĒāļˆāļ°āļĄāļĩ Candidate key āļŦāļ™āđˆāļķāļ‡āđƒāļ™āļ™āļąāđ‰āļ™āļ–āļđāļāđ€āļĨāļ·āļ­āļāđƒāļŦāđ€āļ›āļ™āļ„āļĩāļĒāļŦāļĨāļąāļāļŦāļĢāļ·āļ­ Primary key āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļˆāļ°āđ€āļ›āļ™āļ„āļĩāļĒāļŠāđāļēāļĢāļ­āļ‡āļŦāļĢāļ·āļ­ Secondary keys āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ‚āļ­āļ‡āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āđ€āļ›āļ™āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļŦāļĨāļąāļāļŦāļĢāļ·āļ­ Prime attribute āļ–āļēāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ™āđ‰āļąāļ™āđ€āļ›āļ™āļŠāļĄāļēāļŠāļīāļāļ‚āļ­āļ‡ Candidate key āđƒāļ”āđ† āđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļˆāļ°āđ„āļĄāđ€āļ›āļ™āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļŦāļĨāļąāļāļŦāļĢāļ·āļ­ Nonprime attribute āļ–āļēāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđ„āļĄāđ€āļ›āļ™āļŠāļĄāļēāļŠāļīāļāļ‚āļ­āļ‡ Candidate key āđƒāļ”āđ€āļĨāļĒ

8.5.3 First Normal Form āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļ­āļąāļ™āļ”āļąāļšāļŦāļ™āļķāđˆāļ‡ (1NF) āļˆāļ°āđ„āļĄāļ­āļ™āļļāļāļēāļ•āļĢāļĩāđ€āļĨāļŠāļąāļ™āļĄāļĩāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļŦāļĨāļēāļĒāļ„āļē (Multivalued attribute) āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļœāļŠāļĄ (Composite attribute) āđāļĨāļ°āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āđāļšāļšāļĢāļ§āļĄāļāļąāļ™ āđ‚āļ”āļĒāļ„āļēāļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļĩāđˆāļ­āļ™āļļāļāļēāļ•āļŠāđāļēāļŦāļĢāļąāļš 1NF āļˆāļ°āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āđ€āļ›āļ™ Single atomic value āđ€āļ—āļēāļ™āđ‰āļąāļ™

Page 10: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-10 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩāđˆ 8.8 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ‚āļ­āļ‡

1NF

āļĢāļđāļ›āļ—āļĩāđˆ 8.8 āđāļŠāļ”āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 1NF āđ‚āļ”āļĒāļ—āļĩāđˆ (a) Relation schema āļ—āļĩāđˆāļĒāļąāļ‡āđ„āļĄāđ„āļ”āļ­āļĒāļđāđƒāļ™ 1NF (b) āļ•āļąāļ§āļ­āļĒāļēāļ‡ āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ‚āļ­āļ‡ DEPARTMENT (c) 1NF āđ€āļ§āļ­āļĢāļŠāļąāđˆāļ™āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđ€āļ”āļīāļĄāļžāļĢāļ­āļĄāļāļąāļšāļ„āļēāļ‹āđāđ‰āļēāļ‹āļ­āļ™

āļŠāđāļēāļŦāļĢāļąāļšāļāļēāļĢāļ—āđāļēāđƒāļŦāļĢāļĩāđ€āļĨāļŠāļąāļ™ Department āđƒāļ™āļĢāļđāļ›āļ—āļĩāđˆ 8.8 āļ­āļĒāļđāđƒāļ™ 1NF āļŠāļēāļĄāļēāļĢāļ–āļ—āđāļēāđ„āļ” 3 āļ§āļīāļ˜āļĩāļ”āļąāļ‡āļ™āđ‰āļĩ â€Ē āļ™āđāļē DLOCATIONS āđāļĒāļāļ­āļ­āļāđ€āļ›āļ™āļ­āļĩāļāļĢāļĩāđ€āļĨāļŠāļąāļ™āļŦāļ™āļķāđˆāļ‡āļ„āļ·āļ­ DEPT_LOCATIONS (DNUMBER,

DLOCATION) āđ‚āļ”āļĒāđƒāļŠ DNUMBER āđ€āļ›āļ™āļ„āļĩāļĒāļŦāļĨāļąāļ â€Ē āļ‚āļĒāļēāļĒāļ„āļĩāļĒāļŦāļĨāļąāļāļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āđƒāļŦāđ€āļ›āļ™ {DNUMBER, DLOCATION} āđāļ•āļ§āļīāļ˜āļĩāļ™āđ‰āļĩāļĄāļĩāļ‚āļ­āđ€āļŠāļĩāļĒāļ„āļ·āļ­āļˆāļ°āļ—āđāļēāđƒāļŦāļĄāļĩāļāļēāļĢāđ€āļāđ‡āļš

āļ‚āļ­āļĄāļđāļĨāļ‹āđāđ‰āļēāļ‹āļ­āļ™ â€Ē āļŦāļēāļāļ—āļĢāļēāļšāļˆāđāļēāļ™āļ§āļ™āļ—āļĩāđˆāļĄāļēāļāļ—āļĩāđˆāļŠāļļāļ”āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļŦāļĨāļēāļĒāļ„āļē āđ€āļŠāļ™ āļŦāļēāļāļ—āļĢāļēāļšāļ§āļē DEPARTMENT āļ™āđ‰āļąāļ™āļˆāļ°āļĄ āļĩ

DLOCATION āđ„āļ”āļĄāļēāļāļ—āļĩāđˆāļŠāļļāļ”āļŠāļēāļĄāđāļŦāļ‡ āļŠāļēāļĄāļēāļĢāļ–āļ—āđāļēāđ„āļ”āđ‚āļ”āļĒāđāļ—āļ™āļ—āļĩ āđˆ DLOCATION āļ”āļ§āļĒ DLOCATION1 DLOCATION2 āđāļĨāļ° DLOCATION3 āđāļ•āļ§āļīāļ˜āļĩāļ™āđ‰āļĩāļˆāļ°āļĄāļĩāļ‚āļ­āđ€āļŠāļĩāļĒāļ„āļ·āļ­ āļ­āļēāļˆāļĄāļĩāļ„āļēāļ™āļąāļĨāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđ„āļ” āđāļĨāļ°āļ—āđāļēāđƒāļŦāļāļēāļĢāļŠāļ·āļšāļ„āļ™

āļĒāļēāļāļ‚āļķāđ‰āļ™

Page 11: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-11 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩāđˆ 8.9 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 1NF āļŠāļ­āļ‡ Project

āļĢāļđāļ›āļ—āļĩāđˆ 8.9 āđāļŠāļ”āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 1NF āđ‚āļ”āļĒāļ—āļĩāđˆ (a) Relation schema āļ—āļĩāđˆāļĒāļąāļ‡āđ„āļĄāđ„āļ”āļ­āļĒāļđāđƒāļ™ 1NF (b) āļ•āļąāļ§āļ­āļĒāļēāļ‡ āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ‚āļ­āļ‡ Project (c) 1NF āđ€āļ§āļ­āļĢāļŠāļąāđˆāļ™āļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜

8.5.4 Second Normal Form āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĨāđāļēāļ”āļąāļšāļ—āļĩāđˆāļŠāļ­āļ‡ (2NF) āļ‚āļķāđ‰āļ™āļ­āļĒāļđāļāļąāļšāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļŠāļĄāļšāļđāļĢāļ“ (Full functional dependency) āđ‚āļ”āļĒ āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> Y āļˆāļ°āđ€āļ›āļ™āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāđ€āļ•āđ‡āļĄ āļ–āļēāļĄāļĩāļāļēāļĢāļ™āđāļēāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđƒāļ”āđ†āļ­āļ­āļāļˆāļēāļ X āđāļĨāļ§āļ—āđāļēāđƒāļŦāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āđ‰āļąāļ™āļ–āļđāļāļ—āđāļēāļĨāļēāļĒ āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> Y āļˆāļ°āđ€āļ›āļ™āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļšāļēāļ‡āļŠāļ§āļ™ (Partial functional dependency) āļ–āļēāļĄāļĩāļāļēāļĢāļ™āđāļēāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđƒāļ”āđ†āļ­āļ­āļāļˆāļēāļ X āđāļĨāļ§āļĒāļąāļ‡āļ„āļ‡āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāļ™āđ‰āļąāļ™āđ„āļ§ āļ™āđˆāļąāļ™āļ„āļ·āļ­ āļŠāđāļēāļŦāļĢāļąāļšāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• A āļ—āļĩāđˆāļ­āļĒāļđāđƒāļ™ X āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ (X-{A}) -> Y

āļŠāđāļēāļŦāļĢāļąāļšāđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āļ­āļĒāļđāđƒāļ™ 2NF āļ–āļēāļ—āļļāļ Nonprime attribute āđƒāļ™ R āđ€āļ›āļ™āļŸāļ‡āļāļŠāļąāļ™āļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļ‚āļķāđ‰āļ™āļ­āļĒāļđāļāļąāļšāļ„āļĩāļĒāļŦāļĨāļąāļ

āļ•āļąāļ§āļ­āļĒāļēāļ‡

Page 12: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-12 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

{SSN, PNUMBER} -> HOURS āđ€āļ›āļ™āļŸāļ‡āļāļąāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļŠāļĄāļšāļđāļĢāļ“ āđ€āļ™āđˆāļ·āļ­āļ‡āļˆāļēāļāđ€āļĄāļ·āđˆāļ­āļ•āļąāļ” SSN āļŦāļĢāļ·āļ­

PNUMBER āļ­āļ­āļāļˆāļēāļ {SSN, PNUMBER} āļˆāļ°āđ„āļĄāļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ SSN -> HOURS āļŦāļĢāļ·āļ­ NUMBER -> HOURS

{SSN, PNUMBER} -> ENAME āđ€āļ›āļ™āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļšāļēāļ‡āļŠāļ§āļ™ āđ€āļ™āđˆāļ·āļ­āļ‡āļˆāļēāļāđ€āļĄāļ·āđˆāļ­āļ•āļąāļ” PNUMBER āļ­āļ­āļāļˆāļēāļ {SSN, PNUMBER} āļĒāļąāļ‡āļ„āļ‡āļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ SSN -> ENAME āđ€āļŦāļĨāļ·āļ­āļ­āļĒāļđ

āļĢāļđāļ›āļ—āļĩ āđˆ8.10 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 1NF āļŠāļ­āļ‡ Project

āļĢāļđāļ›āļ—āļĩāđˆ 8.10 āđāļŠāļ”āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 2NF āđāļĨāļ° 3NF (a) Relation schema āļ—āļĩāđˆāļĒāļąāļ‡āđ„āļĄāđ„āļ”āļ­āļĒāļđāđƒāļ™ 1NF (b) āļ™āļ­āļĢāļĄāļąāļĨāđ„āļĨāļ‹ EMP PROJ āđ€āļ‚āļēāļŠāļđ 2NF (c) āļ™āļ­āļĢāļĄāļąāļĨāđ„āļĨāļ‹ EMP_DEPT āđ€āļ‚āļēāļŠāļđ 3NF

8.5.5 Third Normal Form āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļĨāđāļēāļ”āļąāļšāļ—āļĩāđˆāļŠāļēāļĄ (3NF) āļ‚āļķāđ‰āļ™āļ­āļĒāļđāļāļąāļš Transitive dependency āļ™āđˆāļąāļ™āļ„āļ·āļ­āļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> Y āđƒāļ™āđ€āļ„āļēāļĢāļēāļ‡ R āļˆāļ°āđ€āļ›āļ™ Transitive dependency āļ–āļēāļĄāļĩāđ€āļ‹āļ•āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• Z āļ‹āđˆāļķāļ‡āđ„āļĄāđƒāļŠāļ—āļąāđ‰āļ‡ Candidate key āđāļĨāļ°āđ„āļĄāđƒāļŠāļ‹āļąāļšāđ€āļ‹āļ•āļ‚āļ­āļ‡āļ„āļĩāļĒāđƒāļ”āđ†āļ‚āļ­āļ‡ R āļ—āļĩāđˆāļĄāļĩ X -> Z āđāļĨāļ° Z -> Y āļ•āļąāļ§āļ­āļĒāļēāļ‡

SSN -> DMGRSSN āđ€āļ›āļ™ Transitive dependency āđ€āļ™āđˆāļ·āļ­āļ‡āļˆāļēāļāļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ SSN -> DNUMBER āđāļĨāļ° DNUMBER -> DMGRSSN

Page 13: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-13 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

SSN -> ENAME āļ‹āđˆāļķāļ‡āđ€āļ›āļ™ Non-transitive dependency āđ€āļ™āđˆāļ·āļ­āļ‡āļˆāļēāļāđ„āļĄāļĄāļĩāđ€āļ‹āļ•āļ‚āļ­āļ‡āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ• Z āļ—āļĩāđˆāļ—āđāļēāđƒāļŦāļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ SSN -> X āđāļĨāļ° X -> ENAME āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āļ­āļĒāļđāđƒāļ™ 3NF āļ–āļē R āđ€āļ›āļ™ 2NF āļ—āļĩāđˆāđ„āļĄāļĄāļĩāđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āđāļšāļš Non-prime āļ—āļĩāđˆāđ€āļ›āļ™ Transitive dependency āļ—āļĩāđˆāļ‚āļķāļ™āđ‰āļ­āļĒāļđāļāļąāļšāļ„āļĩāļĒāļŦāļĨāļąāļ

āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ āđƒāļ™āļāļēāļĢāļ™āļ­āļĢāļĄāļēāđ„āļĨāļ‹āļĨāđāļēāļ”āļąāļšāļ—āļĩāđˆāļŠāļēāļĄāđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> Y āđāļĨāļ° Y -> Z āđ‚āļ”āļĒāļĄāļĩ X āđ€āļ›āļ™āļ„āļĩāļĒāļŦāļĨāļąāļ āđ€āļĢāļēāļžāļīāļˆāļēāļĢāļ“āļēāļ›āļāļŦāļēāļ™āļĩāđ‰

āđƒāļ™āļāļēāļĢāļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ­āļąāļ™āļ”āļąāļšāļŠāļēāļĄāđ€āļĄāļ·āđˆāļ­ Y āđ„āļĄāđ„āļ”āđ€āļ›āļ™ Candidate key āđ€āļ—āļēāļ™āđ‰āļąāļ™ āđāļ•āļ–āļē Y āđ€āļ›āļ™ Candidate key āļˆāļ°āđ„āļĄ

āļˆāđāļēāđ€āļ›āļ™āļ•āļ­āļ‡āļžāļīāļˆāļēāļĢāļ“āļēāđ€āļĢāļ·āđˆāļ­āļ‡ Transitive dependency āļ•āļąāļ§āļ­āļĒāļēāļ‡ āļžāļīāļˆāļēāļĢāļ“āļē EMP (SSN, Emp#, Salary ). āļ”āļąāļ‡āļ™āđ‰āļąāļ™ SSN -> Emp# -> Salary āđ€āļĄāđˆāļ·āļ­ Emp# āđ€āļ›āļ™ Candidate key āļˆāļ°āđ„āļĄāļˆāđāļēāđ€āļ›āļ™āļ•āļ­āļ‡āļžāļīāļˆāļēāļĢāļ“āļē Transitive dependency āļ™āđ‰āļĩāđƒāļ™āļāļēāļĢāļ—āđāļē 3NF

8.5.6 General Normal Form āđƒāļ™āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļ—āļĩāđˆāļžāļīāļˆāļēāļĢāļ“āļēāļ‚āļēāļ‡āļ•āļ™āļ™āđ‰āļąāļ™āļˆāļ°āđ€āļ›āļ™āļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāđ€āļ‰āļžāļēāļ°āļ„āļĩāļĒāļŦāļĨāļąāļāđ€āļ—āļēāļ™āđ‰āļąāļ™ āđ‚āļ”āļĒāđ„āļĄāļĄāļĩāļāļēāļĢāļ™āđāļē Candidate key

āļĄāļēāļžāļīāļˆāļēāļĢāļ“āļēāļ”āļ§āļĒ āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļ—āļąāđˆāļ§āđ„āļ› (General normal form) āļˆāļķāļ‡āđ€āļ›āļ™āļāļēāļĢāļ—āđāļēāļ™āļ­āļĢāļĄāļēāđ„āļĨāļ‹āļ—āļĩāđˆāļ™āđāļēāļ—āļļāļ Candidate key āđƒāļ™āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļĄāļēāļžāļīāļˆāļēāļĢāļ“āļē āđ‚āļ”āļĒ Prime attribute āļ„āļ·āļ­āđāļ­āļ—āļ•āļĢāļīāļšāļīāļ§āļ•āļ—āļĩāđˆāđ€āļ›āļ™āļŠāļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡ Candidate key āđƒāļ”āđ†āđƒāļ™ R āđāļĨāļ°āļŸāļ‡āļāļŠāļ™āļąāļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļŠāļĄāļšāļđāļĢāļ“āđāļĨāļ°āđāļšāļšāļšāļēāļ‡āļŠāļ§āļ™ āđāļĨāļ° Transitive dependency āļˆāļ°āļ–āļđāļāļ™āđāļēāļĄāļēāđƒāļŠāļŠāđāļēāļŦāļĢāļąāļšāļ—āļļāļ Candidate key General definition of second normal form āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āļ­āļĒāļđāđƒāļ™āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļ—āļąāđˆāļ§āđ„āļ›āļ­āļąāļ™āļ”āļąāļšāļŠāļ­āļ‡ (Second normal form) āļ–āļēāļ—āļļāļ Nonprime attribute āđ„āļĄāļĄāļĩāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩāđāļšāļšāļšāļēāļ‡āļŠāļ§āļ™āļ—āļĩāđˆāļ‚āļķāđ‰āļ™āļ­āļĒāļđāļāļąāļšāļ„āļĩāļĒāđƒāļ”āđ†āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ General definition of third normal form

āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āļ­āļĒāļđāđƒāļ™āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļ—āļąāđˆāļ§āđ„āļ›āļ­āļąāļ™āļ”āļąāļšāļŠāļ­āļ‡ (Third normal form) āļ–āļēāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> A āđƒāļ™ R āļĄāļĩ (a) X āđ€āļ›āļ™āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒāļ‚āļ­āļ‡ R āļŦāļĢāļ·āļ­ (b) A āđ€āļ›āļ™ Prime attribute āļ‚āļ­āļ‡ R āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ Boyce-Codd normal form āđ„āļĄāļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ€āļāļīāļ”āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚ (b) āļ‚āļēāļ‡āļ•āļ™

Page 14: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-14 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩ āđˆ8.11 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡

2NF āđāļĨāļ° 3NF

āļĢāļđāļ›āļ—āļĩāđˆ 8.11 āđāļŠāļ”āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ 2NF āđāļĨāļ° 3NF āđ‚āļ”āļĒāļ—āļĩāđˆ (a) āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ LOTS āļāļąāļš functional dependencies FD1 āļ–āļķāļ‡ FD4 (b) āđāļĒāļāđ€āļ‚āļēāļŠāļđ āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ 2NF LOTS āđāļĨāļ° LOTS (c) āđāļĒāļāđ€āļ‚āļēāļŠāļđ āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ LOTS āđ€āļ‚āļēāļŠāļđ āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ 3NF āđƒāļ™āļĢāļđāļ› LOTS1A āđāļĨāļ° LOTS1B (d) āļœāļĨāļŠāļĢāļļāļ›āļ™āļ­āļĢāļĄāļąāļĨāđ„āļĨāļ‹āđ€āļ‹āļŠāļąāđˆāļ™āļ•āļ­āđ€āļ™āļ·āđˆāļ­āļ‡ (Progressive normalization āļ‚āļ­āļ‡ LOTS)

8.5.7 Boyce-Codd Normal Form (BCNF) āđ€āļ„āļēāļĢāļēāļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ R āļˆāļ°āļ­āļĒāļđāđƒāļ™ Boyce-Codd Normal Form (BCNF) āļ–āļēāļŸāļ‡āļāļŠāļąāļ™āļ™āļąāļĨāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ X -> A āđƒāļ™ R āļĄāļĩ

X āđ€āļ›āļ™āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒāļ‚āļ­āļ‡ R āđƒāļ™āđāļ•āļĨāļ°āļ™āļ­āļĢāļĄāļąāļĨāļŸāļ­āļĢāļĄāļˆāļ°āļ–āļđāļāļšāļąāļ‡āļ„āļąāļšāđ„āļ§āļŠāļąāļ”āđ€āļˆāļ™ āđ‚āļ”āļĒāļ—āļļāļāļĢāļĩāđ€āļĨāļŠāļąāļ™ 2NF āļˆāļ°āļ•āļ­āļ‡āļ­āļĒāļđāļ āļēāļĒāđƒāļ™ 1NF āđƒāļ™āļ‚āļ“āļ°āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļ—āļļāļ āđ†

āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜ 3NF āļˆāļ°āļ­āļĒāļđāđƒāļ™ 2NF āđāļĨāļ°āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļ—āļļāļāđ† BCNF āļˆāļ°āļ•āļ­āļ‡āļ­āļĒāļđāļ āļēāļĒāđƒāļ™ 3NF āļ—āļąāđ‰āļ‡āļ™āđ‰āļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāļ—āļĩāđˆāļ­āļĒāļđāļ āļēāļĒāđƒāļ• 3NF āļˆāļ°āļ•āļ­āļ‡āđ„āļĄāļ­āļĒāļđāđƒāļ™ BCNF āđ‚āļ”āļĒāđ€āļ›āļēāļŦāļĄāļēāļĒāļ„āļ·āļ­āļĄāļĩāļ—āļļāļāđ† āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ­āļĒāļđāđƒāļ™ BCNF (āļŦāļĢāļ·āļ­ 3NF)

Page 15: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-15 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļđāļ›āļ—āļĩ āđˆ8.12 āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡

BCNF

āļĢāļđāļ›āļ—āļĩāđˆ 8.12 āđāļŠāļ”āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ BCNF āđ‚āļ”āļĒāļ—āļĩāđˆ (a) BCNF āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ āļ‚āļ­āļ‡ LOTS1A āļžāļĢāļ­āļĄāļ”āļ§āļĒ functional dependency FD2 āļ—āļĩāđˆāļŦāļēāļĒāđ„āļ›āđƒāļ™āļāļēāļĢāļ—āđāļē Decomposition (b) A schematic relation āļžāļĢāļ­āļĄāļāļąāļš FDs; āđ‚āļ”āļĒāļ—āļĩāđˆāļ­āļĒāļđāđƒāļ™ 3NF āđāļ•āđ„āļĄāđ„āļ”āļ­āļĒāļđāđƒāļ™ BCNF.

āļĢāļđāļ›āļ—āļĩ āđˆ8.13 āļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜

TEACH

āļĢāļđāļ›āļ—āļĩāđˆ 8.13 āđāļŠāļ”āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™ TEACH āļ—āļĩāđˆāļ­āļĒāļđāđƒāļ™ 3NF āđāļ•āđ„āļĄāļ­āļĒāļđāđƒāļ™ BCNF

āđƒāļ™āļāļēāļĢāđ€āļ‚āļēāļ–āļķāļ‡ BCNF āđ‚āļ”āļĒāļāļēāļĢ decomposition āļˆāļ°āļžāļšāļ§āļē FDs āļŠāļ­āļ‡āļ•āļąāļ§āļ—āļĩāđˆāļ›āļĢāļēāļāļāđƒāļ™āļĢāļĩāđ€āļĨāļŠāļąāļ™ TEACH fd1: {student, course} -> instructor fd2: instructor -> course {student, course} āđ€āļ›āļ™ Candidate key āļ‚āļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ™āđ‰āļĩ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđāļŠāļ”āļ‡ FDs āļ”āļąāļ‡āđāļŠāļ”āļ‡āđƒāļ™āļĢāļđāļ›āļ—āļĩāđˆ 8.12(b) āđ‚āļ”āļĒ

STUDENT āļ„āļ·āļ­ A COURSE āđ€āļ›āļ™ B āđāļĨāļ° INSTRUCTOR āđ€āļ›āļ™ C āđ€āļĄāđˆāļ·āļ­āļžāļīāļˆāļēāļĢāļ“āļēāļĢāļđāļ›āđāļšāļšāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļĩāļˆāļ°āđ€āļŦāđ‡āļ™āļ§āļē

Page 16: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-16 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāļ­āļĒāļđāđƒāļ™ 3NF āđāļ•āđ„āļĄāļ­āļĒāļđāđƒāļ™ BCNF āđ€āļĄāđˆāļ·āļ­āļ—āđāļēāļāļēāļĢ Decomposition āļĢāļĩāđ€āļĨāļŠāļąāļ™ (āļžāļīāļˆāļēāļĢāļ“āļēāļˆāļēāļ āļ­āļąāļĨāļāļ­āļĢāļīāļ—āļķāđˆāļĄāđƒāļ™ 11.3) āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āđāļ•āļāļĢāļĩāđ€āļĨāļŠāļąāļ™āđ„āļ” 3 āļĨāļąāļāļĐāļ“āļ°āļ—āļĩāđˆāđ€āļ›āļ™āđ„āļ›āđ„āļ” āđ„āļ”āđāļ {student, instructor} āđāļĨāļ° {student, course}

{course, instructor } āđāļĨāļ° {course, student} {instructor, course } āđāļĨāļ° {instructor, student}

āļāļēāļĢāđāļ•āļāļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļąāđ‰āļ‡ 3 āđāļšāļšāļ‚āļēāļ‡āļ•āļ™āļˆāļ°āļ—āđāļēāđƒāļŦāļŠāļđāļāđ€āļŠāļĩāļĒāļ”āļĩāđ€āļžāļ™āđ€āļ”āļ™āļ‹āļĩ FD1 āđ„āļ› āđāļ•āļāļēāļĢāđāļ•āļāļĢāļĩāđ€āļĨāļŠāļąāļ™āļ—āļĩāđˆāļ•āļ­āļ‡āļāļēāļĢāļĄāļĩāđ€āļžāļĩāļĒāļ‡āļāļēāļĢāđāļ•āļ

āļĢāļĩāđ€āļĨāļŠāļąāļ™āđāļšāļšāļ—āļĩāđˆāļŠāļēāļĄ āđ€āļžāļĢāļēāļ°āđ„āļĄāļŠāļĢāļēāļ‡ spurious tuples āļŦāļĨāļąāļ‡āļāļēāļĢ join (āļ‹āđˆāļķāļ‡āļˆāļ°āđƒāļŦāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āļē non-additivity property) āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āļĄāļĩāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļžāļ·āđˆāļ­āļ—āļĩāđˆāļˆāļ°āļāđāļēāļŦāļ™āļ”āļ§āļēāđƒāļ™āļāļēāļĢāļ—āđāļē binary decomposition āļŦāļĢāļ·āļ­ āļāļēāļĢāļ—āđāļē decomposition āđ„āļ›āđ€āļ›āļ™āļĢāļĩāđ€āļĨāļŠāļąāļ™ āļŦāļĢāļ·āļ­āļĢāļĩāđ€āļĨāļŠāļąāļ™āļŠāļ­āļ‡āļĢāļĩāđ€āļĨāļŠāļąāļ™āļ–āļ·āļ­āļ§āļēāđ€āļ›āļ™ nonadditve āļŦāļĢāļ·āļ­ lossless āļ‹āđˆāļķāļ‡āļˆāļ°āđ„āļ”āļāļĨāļēāļ§āļ–āļķāļ‡āđƒāļ™ āļŠāļ§āļ™āļ—āļĩāđˆ 11.1.4 āļ āļēāļĒāđƒāļ•āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī LJ1 āđāļĨāļ°āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļĒāļąāļ‡āđ€āļ›āļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āļē third decomposition āļ‚āļēāļ‡āļ•āļ™āļĢāļ­āļ‡āļĢāļąāļšāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ•āļēāļĄāļ—āļĩāđˆāļ•āļ­āļ‡āļāļēāļĢ

Page 17: chapter08 functional dependencies and normalization for relational databases

2110422 āļāļēāļĢāļ­āļ­āļāđāļšāļšāļĢāļ°āļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āļ­āļĄāļđāļĨ 8-17 āļ āļēāļ„āļ§āļīāļŠāļēāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢ āļ„āļ“āļ°āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ āļˆāļļāļŽāļēāļĨāļ‡āļāļĢāļ“āļĄāļŦāļēāļ§āļīāļ—āļĒāļēāļĨāļąāļĒ

āđāļšāļšāļāļāļŦāļąāļ” 1. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāđāļ™āļ§āļ„āļīāļ”āļ‚āļ­āļ‡ Functional Dependency 2. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāđāļ™āļ§āļ„āļīāļ”āļ‚āļ­āļ‡āļ‹āļĩāđāļĄāļ™āļ•āļīāļ„āļ‚āļ­āļ‡āļāļēāļ™āļ‚āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜ 3. āļˆāļ‡āđāļĒāļāļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđāļĨāļ°āļ­āļ˜āļīāļšāļēāļĒāļ­āļ°āļ™āļ­āļĢāļĄāļēāļĨāļĩāđāļ•āļĨāļ°āļ›āļĢāļ°āđ€āļ āļ— 4. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāđāļ•āļāļ•āļēāļ‡āļ‚āļ­āļ‡ āļ„āļĩāļĒ āļ‹āļđāđ€āļ›āļ­āļĢāļ„āļĩāļĒ āđāļĨāļ° āļ„āļĩāļĒāļŦāļĨāļąāļ 5. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āļ™āļ­āļĢāļĄāļēāđ„āļĨāđ€āļ‹āļŠāļąāļ™ 6. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āļ—āļĩāđˆāđ„āļ”āļˆāļēāļ BCNF 7. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāđāļ•āļāļ•āļēāļ‡āļĢāļ°āļŦāļ§āļēāļ‡ 1NF āđāļĨāļ° 2NF 8. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāđāļ•āļāļ•āļēāļ‡āļĢāļ°āļŦāļ§āļēāļ‡ 2NF āđāļĨāļ° 3NF 9. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāđāļ•āļāļ•āļēāļ‡āļĢāļ°āļŦāļ§āļēāļ‡ 3NF āđāļĨāļ° BCNF 10. āļžāļīāļˆāļēāļĢāļ“āļēāļ§āļēāļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļ—āđāļēāđƒāļ™āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ BCNF āđ„āļ”āļŦāļĢāļ·āļ­āđ„āļĄ

11. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡ Transitive āđāļĨāļ° Non-transitive FD 12. āļˆāļ‡āļ­āļ˜āļīāļšāļēāļĒāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ āđāļĨāļ° āļ„āļ§āļēāļĄāđāļ•āļāļ•āļēāļ‡āļ‚āļ­āļ‡ Equivalence sets of FDs āđāļĨāļ° Minimal sets of FDs


Recommended