Functional dependency

Page 1

คําศัพทที่เกี่ยวของ FD

(Functionally Dependent or Functional Dependency) Full FD (Full Functional Dependency) Partial Dependency Transitive Dependency Multivalued Dependency

Normalization อ. พรอนันต เอี่ยมขจรชัย สาขาวิชาเทคโนโลยีสารสนเทศ 204204 DBASE DES & DEV

FD (Functional Dependency)

ความสัมพันธระหวางคางของ Attribute แบบฟงกชัน Attribute หนึ่ ง หรื อ มากกว า หนึ่ ง Attribute ประกอบกั น สามารถระบุ คาของ Attribute อื่นๆ ในทูเพิ เพิล (Tuple) Tuple) หนึ่งไดชัดเจน แบงไดเปน 2 รูปแบบ คือ

แบบ 1 : 1

แบบ m : 1

Stu_ID

Stu_ID

3

204204 DBASE DES & DEV

4

มีฟงกชันขึ้นกับ x (y เปน FD กับ x) ก็ตอเมื่อถา 2 ทูเพิ เพิลใน R มีคาของ x ตรงกันแลว ทั้งสอง ทูเพิ เพิลจะตองมีคาของ y ตรงกัน เชน relation R มี attribute x, y จะไดวา R.x. R.y. ความหมาย : x เปนตัวกําหนดคา (determine (determine)) ของ y หรือคาของ y ขึ้นอยูกับคาของ x (y depends on x หรือ y เปน FD กับ x) y

Stu_Name Dependency-attribute

204204 DBASE DES & DEV

D_Complete

กําหนดให x และ y เปน Attribute ของ relation R

เชน ความสัมพันธระหวาง รหัสพนักงานและชื่อพนักงาน เมื่อระบุคาของรหัสพนักงาน (Emp_ID (Emp_ID)) จะสามารถทราบชื่อพนักงาน (Emp_Name) Emp_Name) ที่มีรหัสตามที่ระบุได

Determinant-attribute

Course_No

Functional Dependency : นิยาม

Dependency-attributes

DeterminantDeterminant-attribute คือ Attribute ที่ระบุคาแลวสามารถแสดงคาของ DependencyDependency-attribute ได

Stu_ID

Stu_Name

แบบ m : 1

ความสัมพันธที่เกิดขึ้นมักถูกนิยามดวยรูปแบบทางคณิตศาสตร Determinant-attributes

2

ตัวอยาง Functional Dependency แบบ 1 : 1

คาของ Attribute ทางดานซาย 1 คา บงบอกคาของ Attribute ทางขวา 1 คา คาของ Attribute ทางดานซายตั้งแต 1 คาขึ้นไป บงบอก คาของ Attribute ทางขวา 1 คา

204204 DBASE DES & DEV

204204 DBASE DES & DEV

1

5

204204 DBASE DES & DEV

6

1


Functional Dependency

: รูปแบบการเขียน

Functional Dependency : ประเภท

FDs : determinant-attribute

dependency-attribute

Functional Dependency ที่เกิดขึ้นจากความสัมพันธระหวาง Determinant และ Dependencyอย Dependencyอยางละ 1 คา Stu_ID

FDs : Student_ID

Student_ID

Student_Name

Student_Name

7

Stu_ID, Course_No

หรือ เปน FD ที่มี Determinant ที่มีขนาดเล็กที่สุด และ สามารถระบุถึง Dependency ได

D_Complete D_Complete

Full Functional Dependency D1 : Perdon_ID Address D2 : Perdon_ID, Person_name

9

204204 DBASE DES & DEV

: ตัวอยาง

Address

D3 : Product_line, Item_no Use_qty D4 : Product_line, Item_no, Manager Use_qty

D1 และ D3 เปน Full Functional Dependency 11

10

Partial Dependency

204204 DBASE DES & DEV

8

ถา y เปน FD กับ x และไมเปน FD กับ Subset ใดๆ ของ x

204204 DBASE DES & DEV

สรุป

Advisor

Attribute y ของ relation R จะเปน Full FD บน Attribute x ของ relation R

Manager

Course_No

School

Full Functional Dependency : นิยาม

Functional Dependency ที่ใช Determinant มากกวา 1 คา เพื่ออางถึง Dependency Stu_ID

Stu_Name

204204 DBASE DES & DEV

Functional Dependency ที่มีความสัมพันธ 2 ทาง โดยที่ Determinant และ Dependency สามารถระบุคาของอีกฝายหนึ่งได Project_Name

Functional Dependency ที่เกิดขึ้นจากความสัมพันธระหวาง Determinant 1 คา กับ Dependency หลายคา Stu_ID

204204 DBASE DES & DEV

Stu_Name

เนื่องจาก relation หนึ่งที่มี Determinant มากกวา 1 ตัว (มี Primary key มากกวา 1 Attributes) Attributes) เปนคียผสม (Composite (Composite key) key) ความสัมพันธระหวางคาของ Attribute แบบบางสวน เกิดขึ้นเมื่อ Attribute ที่เปน Determinant บางตัวของ PK สามารถระบุคาของ Attributes อื่นๆ ที่ไมใช PK ของ relation ได (Non (Non--key attribute) attribute) ความสัมพันธแบบนี้จะทําให เกิดปญหา ในเรื่องความซ้ําซอน และ การปรับปรุงขอมูล

204204 DBASE DES & DEV

12

2


ตัวอยาง

Transitive Dependency

Stu_ID

Course_No

D_Complete

Course_Name

Stu_ID, Course_No

D_Complete

Course_No

Course_Name

204204 DBASE DES & DEV

204204 DBASE DES & DEV

13

ตัวอยาง

14

Multivalued Dependency

Stu_ID

Stu_Name

School_ID

School_Name

ความสัมพันธนี้จะเกิดขึ้นกับ relation ที่ประกอบดวย Attribute อยางนอย 3 Attribute และเปน relation ที่ Attribute หนึ่งสามารถระบุคาของ Attribute อื่นๆ ใน relation ไดมากกวาหนึ่งคา

ความสัมพันธในลักษณะดังกลาว เรียกวา

Transitive Dependency

Stu_ID

Stu_Name, School_ID, School_Name School_ID

“ความสัมพันธในการระบุคาของ Attribute แบบหลายคา”

School_Name

204204 DBASE DES & DEV

15

หลักการของ Multivalued Dependency สัญลักษณที่ใชคือ Attribute A

เปนความสัมพันธระหวาง Attributes เมื่อ Attributes อื่นๆ ที่ไมใช Primary key (NonNon-key Attribute) Attribute) สามารถ ระบุคาของ Attribute อื่นๆ ในทูเพิ เพิล (Tuple (Tuple)) ได ความสัมพันธในลักษณะดังกลาว เรียกวา “ความสัมพันธระหวางคาของ Attribute แบบ Transitive” Transitive”

A

16

ทูเพิ เพิล 2 ทูเพิ เพิลในความสัมพันธ R ที่มีคา B เหมือนกันไมจําเปนตอง

มีคา A เดียวกัน คาของ Attribute C สองคาที่มีความสัมพันธกับคา A เดียวกัน จะตองสัมพันธกับคาของ B ในกลุมเดียวกัน และเปนกลุมที่ถูก กําหนดโดยคา A นั้นๆ

B

คาหนึ่งจะเปนตัวกําหนดกลุมของคา Attribute B

เมื่อทูเพิ เพิล 2 ทูเพิ เพิลในความสัมพันธ R มีคา A

เดียวกัน ไมจําเปน ตองมีคา B เหมือนกัน แต คาของ B จะตองอยูในกลุมของคา B ที่ถูกกําหนดโดย A

คาของ Determinant 1 คาสามารถระบุคาของ Attribute ที่ทําหนาที่เปน Dependency ไดตั้งแต 2 Attribute ขึ้นไป ซึ่งอยูในรูปของชุดขอมูล

การเปลี่ยนแปลงคาใน Attribute C จะไมมีผลกระทบตอคา B

204204 DBASE DES & DEV

204204 DBASE DES & DEV

Employee#

17

Department#, Project#

204204 DBASE DES & DEV

18

3


ความสัมพันธ R

ตัวอยาง

ความสัมพันธ R ประกอบดวย Attribute ดังนี้ Attribute S_No Attribute PJ_No Attribute City

หมายถึง รหัสผูผลิต หมายถึง รหัสโครงการที่สั่งผลิต หมายถึง ชื่อจังหวัดที่ผูผลิตตั้งอยู

ขอสมมติฐานของความสัมพันธของขอมูล คือ

ผูผลิตแตละรายสามารถรับงานไดมากกวา 1 โครงการ ผูผลิตแตละรายมีโรงงานตั้งอยูในจังหวัดตางๆ ไดมากกวา 1 จังหวัด

204204 DBASE DES & DEV

19

ความสัมพันธ R เปนรีเลชั่นที่มีความสัมพันธของ Attribute ในการระบุคาไดมากกวา 1 คา คือ S_No ระบุคา PJ_No ไดหลายคา S_No

S_No ระบุคา City S_No

City

S1 S1 S1 S1 S2 S2 S2 S2

PJ01 PJ01 PJ02 PJ02 PJ03 PJ03 PJ04 PJ04

Bangkok Samuthprakarn Bangkok Samuthprakarn Rayong Chonburi Rayong Chonburi 20

relation R เกิดความสัมพันธในลักษณะการระบุคาของ Attribute แบบหลายคาระหวาง Attribute S_No กับ PJ_No และ S_No กับ City Attribute PJ_No และ City ไมมีความสัมพันธตอกัน แต ปรากฏอยูใน relation เดียวกัน ทําใหคาของ City ปรากฏซ้ําซอนอยูใน หลายทูเพิล เพื่อใหขอมูลของ relation ครบถวน กอใหเกิดปญหาในการเพิ่ม ลบ หรือปรับปรุงขอมูลได

ไดหลายคา City

204204 DBASE DES & DEV

21

Trivial FD’ FD’s Functional Dependency เปน Trivial FD’ FD’s ก็ตอเมื่อ Attribute

ตัวอยาง : SUPPLIER (S_NAME, ADDRESS, ITEM, PRICE) S_NAME ADDRESS S_NAME, ITEM PRICE ADDRESS PRICE 204204 DBASE DES & DEV

204204 DBASE DES & DEV

Trivial FD’s 23

22

Normalization

ทางดานขวาอยูใน Attribute ทางดานซาย

S_NAME S_NAME,ITEM

PJ_No

204204 DBASE DES & DEV

PJ_No

S_No

E.F. Codd เปนผูคิดแนวคิดการทํา relation ใหอยูในรูปแบบบรรทัดฐาน (Normalization Process) Process) เปนกระบวนการที่นําเคารางของ relation มาทําใหอยูในรูปแบบที่เปน บรรทัดฐาน (Normal (Normal Form) Form) เปนกระบวนการเพื่อพัฒนาการเชื่อมตอของขอมูล เพื่อแกปญหา ของ relation เพื่อใหแนใจวาการออกแบบเคารางของ relation เปนการออกแบบ ที่เหมาะสม 204204 DBASE DES & DEV

24

4


ซึ่งไดมา จากการวิเคราะหระบบ (การออกแบบในระดับแนวคิด) โดยแสดงใหเห็น

Normalization : วัตถุประสงค

ขอมูลที่ใชในการทํา Normalization นั้นจะเอามาจาก E-R Model

ขอมูล (Entity (Entity)) ที่เกิดขึ้นในระบบ

ลดเนื้อที่ในการจัดเก็บขอมูล การทํา relation ใหเปนบรรทัดฐาน เปนการลดความซ้ําซอนของขอมูล ใน relation ทําใหลดเนื้อที่ในการจัดเก็บขอมูล / ลดที่วางที่ใชในการเก็บขอมูล

Attributes ของขอมูล Relation ระหวางขอมูล

ลดปญหาเรื่องขอมูลไมถูกตอง เนื่องจากขอมูลใน relation หนึ่งจะมีขอมูลไมซ้ํากัน เมื่อมีการปรับปรุงขอมูลก็จะปรับปรุงทูเพิ เพิลนั้นๆ ครั้งเดียว ไมตองปรับปรุง หลายแหง ลดโอกาสที่จะเกิดความผิดพลาดในการปรับปรุงขอมูลไมครบถวน

204204 DBASE DES & DEV

204204 DBASE DES & DEV

25

26

Normalization : รูปแบบ

ลดปญหาการเกิ หาการเกิดอะนอรมัลไล (Anomalies (Anomalies)) ในการเพิ่ม ปรับปรุง และลบขอมูล ชวยแกปญหาที่อาจจะเกิดขึน้ จากการปรับปรุงขอมูลไมครบ ชวยแกปญหาที่อาจจะเกิดขึน้ จากการเพิ่มขอมูล ้ จากการลบขอมูล ชวยแกปญหาที่อาจจะเกิดขึน ชวยแกปญหาในเรื่องขอมูลสูญหายจากฐานขอมูล

โดยทั่วไปการทํา Normalization มีดวยกันทั้งสิ้น 6 รูปแบบ คือ

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

BoyceBoyce-Codd Normal Form (BCNF)

เพิ่มความคงทนแกโครงสรางฐานขอมูล

Forth Normal Form (4NF) Fifth Normal Form (5NF)

204204 DBASE DES & DEV

27

ขั้นตอนการทํา Normalization

1NF “ขจัด Repeating Group” 2NF “ขจัด Partial Dependency” 3NF “ขจัด Transitive Dependency”

204204 DBASE DES & DEV

First Normal Form : 1NF

BCNF “ขจัดปญหา Overlap Multiple Candidate Key ”

28

Relation ที่จะอยูในรูปแบบ 1NF ก็ตอเมื่อ relation นั้นๆ ไมมี Attribute ของทูเพิ เพิลที่มีคาของขอมูลหลายคา (No (No Repeating Group) Group) คาของ Attribute ตางๆ ในแตละทูเพิ เพิล มีคาของขอมูลเพียงคาเดียว (Atomic Value) Value)

4NF “ขจัด Nontrivial Multivalued Dependency” 5NF “ขจัด Join Dependency” 204204 DBASE DES & DEV

29

204204 DBASE DES & DEV

30

5


ตารางที่มีลักษณะขอมูลหลายคาในฟลดใดฟลดหนึ่ง (Repeating (Repeating Group) Group) S_No S_Name S1 ติ๋ม

City กรุงเทพฯ

S2

ตอย

ปทุมธานี

S3 S4

นอย แดง

ปทุมธานี กรุงเทพฯ

P_No P1 P2 P3 P4 P1 P2 P2 P2 P4

ปรับเปลี่ยนขอมูลในตารางใ หอยูในรูป 1NF S_No S1 S1 S1 S1 S2 S2 S3 S4 S4

Qty 300 200 400 200 300 400 200 200 300

204204 DBASE DES & DEV

31

Second Normal Form : 2NF

Attribute ทุก Attribute ที่ไมไดเปนคียหลัก (PK (PK)) จะตองมีความสัมพันธ

ระหวางคาของ Attribute แบบฟงกชันกับคียหลัก (Full (Full FD) FD) หรือ

คาของ Attribute ที่ไมไดเปนคียหลักจะสามารถระบุคาโดย Attribute

ที่เปนคียหลัก หรือ Attribute ทั้งหมดที่ประกอบกันเปนคียหลักในกรณีที่ คียหลักเปนคียผสม

Relation Order1

P_No

P_Name

Qty

S1

P1

เพชร

100

S1

P2

ทับทิม

200

S1

P3

ไพลิน

300

S2

P1

เพชร

300

S2

P3

ไพลิน

400

S3

P4

พลอย

100

204204 DBASE DES & DEV

32

เปนการขจัด Attribute หรือกลุม Attribute ที่ซ้ํากัน

ความผิดพลาดที่เกิดขึ้นกับขอมูลในระดับ 1NF 1NF จากการเพิ่มขอมูล (Insert (Insert Anomaly) Anomaly) อาจทําใหไมสามารถเพิ่มขอมูลบางอยาง ไมได หรือเพิม่ ขอมูลแลวเกิดความขัดแยงกับขอมูลเดิม จากการลบขอมูล (Delete (Delete Anomaly) Anomaly) ถาตองลบขอมูลบางสวน จะสงผลให ลบขอมูลอื่นๆ ออกไปดวยโดยไมไดตั้งใจ จากการแกไขขอมูล (Update (Update Anomaly) Anomaly) จะตองแกไขทุกทูเพิ เพิล ผูใชงาน ฐานขอมูลจะตอง แกไขขอมูลมากกวา 1 แหง

33

ประกอบดวย Attribute ดังนี้

S_No

Qty 300 200 400 200 300 400 200 200 300

กลาวคือ

204204 DBASE DES & DEV

P_No P1 P2 P3 P4 P1 P2 P2 P2 P4

การทํา Normalization ในระดับ 1NF

Attribute จะตองไมมีความสัมพันธแบบ Partial Dependency

City กรุงเทพฯ กรุงเทพฯ กรุงเทพฯ กรุงเทพฯ ปทุมธานี ปทุมธานี ปทุมธานี กรุงเทพฯ กรุงเทพฯ 204204 DBASE DES & DEV

Relation ที่จะอยูในรูปของ 2NF 2NF ก็ตอเมื่อ Relation นั้นๆ อยูในรูปแบบบรรทัดฐานขั้นที่ 1 (1NF) 1NF)

S_Name ติ๋ม ติ๋ม ติ๋ม ติ๋ม ตอย ตอย นอย แดง แดง

204204 DBASE DES & DEV

34

Attribute รหัสผูผลิต (S_No (S_No)) และรหัสสินคา (P_No (P_No)) ประกอบ

กันเปนคียหลัก (PK (PK)) ที่สามารถระบุคาของชื่อสินคา (P_Name (P_Name)) และจํานวนสินคาที่ถูกจัดสง (Qty (Qty)) ได Attribute รหัสสินคา (P_Name (P_Name)) สามารถระบุคาของชื่อสินคา (P_Name) P_Name) ไดอีกดวย

S_No

35

P_No

P_Name

204204 DBASE DES & DEV

Qty

36

6


จึงไมไดอยูในรูปแบบ 2NF ดังนั้น ตองทําการแตก relation เพื่อลดปญหาความซ้ําซอนของขอมูล

Third Normal Form : 3NF

เพราะฉะนั้น relation Order 1

Order1 (S_No, P_No, Qty) มี S_No S_No และ P_No P_No เปน PK

Relation ที่จะอยูในรูปของ 3NF 3NF ก็ตอเมื่อ Relation นั้นๆ อยูในรูปแบบบรรทัดฐานขั้นที่ 2 (2NF) 2NF)

Product (P_No, P_Name) มี P_No P_No เปน PK

S_No

P_No

Qty

Attribute ที่ไมไดเปนคียหลัก (PK (PK)) ไมมีคุณสมบัติในการกําหนดคา

ของ Attribute อื่นที่ไมใชคียหลัก Attribute จะตองไมมีความสัมพันธแบบ Transitive Dependency

Product P_No

P_Name

Order1 204204 DBASE DES & DEV

Relation Supplier1

ประกอบดวย Attribute ดังนี้

S_No S_Name

City

Rating

ติ๋ม

กรุงเทพฯ

2

S2

ตอย

ปทุมธานี

3

S3

นอย

ปทุมธานี

3

S4

แดง

กรุงเทพฯ

2

S5

จุม

สมุทรปราการ

1

38

นอกจากนี้ยังพบวาความสัมพันธระหวาง Attribute ที่ไมไดเปน PK คือ Attribute City และ Rating โดย Attribute City สามารถระบุคาการจัดอันดับของผูผลิต ซึ่งเปนความสัมพันธ ระหวางคาของ Attribute แบบ Transitive Dependency ิ ังกลาวจะกอใหเกิดความผิดพลาดในการเพิ่ม ลบ หาก relation ใดมีคุณสมบัตด หรือปรับปรุงขอมูลได เชน

ความผิดพลาดที่เกิดจากการปรับปรุงขอมูล (Update (Update Anomaly) Anomaly) ความผิดพลาดที่เกิดจากการลบขอมูล (Delete (Delete Anomaly) Anomaly)

39

Relation Supplier1 อยูในรูปแบบ 2NF

204204 DBASE DES & DEV

ไมมคี าของขอมูลซ้ํากัน คาของ Attribute ที่ไมไดเปนคียหลักอื่นๆ สามารถระบุคาไดโดยคาของ Attribute ที่เปนคียหลัก ตัวอยาง : กรณีที่ทราบรหัสผูผลิต คือ S1 จะสามาถ ทราบวาผูผลิตชื่ออะไร จะสามาถทราบว อยูที่จังหวัดใด และอยูในจังหวัดที่ถูกจัดอันดับไวเปนอันดับที่เทาไร  แู ขง เพราะวาไมมีคียใดทีม่ ีคุณสมบัติเปนคียหลักเชนเดียวกับ Relation นี้ไมมีคียค รหัสผูผลิต ถึงแมวาชื่อจังหวัดสามารถที่จะระบุการจัดอันดับของผูผลิต แตไม สามารถระบุชื่อของผูผลิตไดชัดเจน ตัวอยาง : กรณีที่ทราบชื่อจังหวัด คือ กรุงเทพฯ ชื่อของผูผลิตอาจเปน ติ๋ม หรือ แดง ก็ได ซึ่งไมสามารถกําหนดชัดเจนไดวาผูผลิตชื่ออะไร

204204 DBASE DES & DEV

204204 DBASE DES & DEV

S1

204204 DBASE DES & DEV

37

41

40

การแกไขปญหา Attribute City ที่สามารถระบุคา Attribute Rating ไดนั้น จะตองทําการแตก relation Supplier1 เปน 2 relation (Decomposition) โดยการแยก Attribute ที่ถูกกําหนดคากับ Attribute ที่เปนตัวกําหนดคา (Determinant) Determinant) ออกเปน relation ใหม และ กําหนดให Attribute ที่เปนตัวกําหนดคาเปน PK ของ relation ใหม relation ใหมประกอบดวย Supplier (S_No, S_Name, City) มี S_No S_No เปน PK และมี City เปน FK City (City, Rating) มี City เปน PK

204204 DBASE DES & DEV

42

7


ตัวอยาง Bad Decomposition กรณีที่แตก relation Supplier1 ออกเปน Supplier (S_No, S_Name, City) มี S_No S_No เปน PK Supplier2 (S_No, Rating) มี S_No S_No เปน PK

วิธีการแตก relation (Decomposition) Decomposition) มีขั้นตอนดังนี้ นํา Attribute ที่ถูกกําหนดคา กับ Attribute ที่เปนตัวกําหนดคา แยกออกเปน relation ใหม กําหนดให Attribute ที่เปนตัวกําหนดคาเปน PK ของ relation ใหม

ขอควรระวัง : ในบางกรณีผูออกแบบเคารางของฐานขอมูลพยายามแตก relation ที่มีจํานวน Attribute มากๆ ออกเปน relation ตางๆ มากมายนั้น อาจกอใหเกิดปญหาการแตกฐาน Relation ที่ไมเหมาะสมได (Bad Decomposition) ได

204204 DBASE DES & DEV

การเพิ่มชื่อจังหวัดและการจั และการจัดอันดับจะทําไมได จนกวาจะมีผูผลิตรายใดรายหนึ่ง อยูที่จังหวัดที่จะเพิ่มชื่อและการจัดอันดับนั้น Relation Supplier และ Supplier2 เปน relation ที่ไมมีความเปนอิสระตอกัน เพราะวา Attribute City เปนตัวกําหนด Attribute Rating นั่นเอง

S_No

Rating

City

กรุงเทพฯ สมุทรปราการ

Supplier2

S3 S4

3 2

S5

1

204204 DBASE DES & DEV

44

Relation ที่จะอยูในรูปของ BCNF ก็ตอเมื่อ Relation นั้นๆ อยูในรูปแบบบรรทัดฐานขั้นที่ 3 (3NF) 3NF) ไมมี Attribute ใดๆ ใน relation ที่สามารถระบุคาของ Attribute ที่เปน

คียหลัก (PK (PK)) หรือสวนหนึ่งสวนใดของคียหลัก (ในกรณีที่คียหลักเปน คียผสม) สม) ได

45

โดยทั่วไปรูปของ BCNF จะอยูในรูปของ 3NF แตไมจําเปนเสมอไป ที่รูปของ 3NF 3NF จะอยูในรูปของ BCNF เนื่องจาก

ปทุมธานี

แดง จุม

Rating 2 3

Rating 204204 DBASE DES & DEV

นอย

S4 S5

S_No S1 S2

Boyce / Codd Normal Form : BCNF

City

S3

43

จากตัวอยางจะพบวา การแตก relation ดังกลาวอาจกอใหเกิดความ ผิดพลาดในการเพิ่ม ลบ หรือแกไขขอมูลได เนื่องจาก

S_No

Supplier

S_No S_Name City ติ๋ม กรุงเทพฯ S1 ตอย ปทุมธานี S2

รูปแบบ BCNF เปนรูปแบบที่ขยายขอบเขตของรูปแบบ 3NF ใหมีความเหมาะสมยิ่งขึ้น รูปแบบของ Relation ที่จะตองผานการทําใหเปน BCNF จะตองมีคุณสมบัติ ดังนี้  ูแขงหลายคีย (Multiple เปน relation ที่มีคียค (Multiple Candidate Key) Key) โดยที่ - คียค ูแขงเปนคียผสม (Composite (Composite Key) Key) และ - คียค ูแขงนั้นมีบางสวนซ้ําซอนกัน (Overlapped (Overlapped)) (มี attribute บางตัวรวมกัน)

204204 DBASE DES & DEV

47

204204 DBASE DES & DEV

Relation Supplier3 Supplier3

สมมติ : ชื่อของผูผลิต (S_Name (S_Name)) เปนคาไมซ้ํากัน และ มีคุณสมบัติเปน PK ไดเชนกัน

46

ประกอบดวย Attribute ดังนี้ S_No S1

S_Name ติ๋ม

P_No P1

Qty 300

S1 S1 S1

ติ๋ม ติ๋ม ติ๋ม

200 400 200

S2 S2 S3

ตอย ตอย นอย

P2 P3 P4 P1 P2 P2

S4 S4 S4

แดง แดง แดง

P2 P4 P5

200 300 400

204204 DBASE DES & DEV

300 400 200

48

8


Relation Supplier3 เปน relation ที่มีปญหา เพราะ

มีคียค ูแขงเปนคียผสม และมีความซ้ําซอนกัน ู ขงทีม่ ีคุณสมบัติเปน PK ของ relation อาจจะเปน Attribute S_No และ P_No คียคแ P_No หรือ Attribute S_Name และ P_No P_No ก็ได

ในกรณีที่ชื่อผูผลิตไมซ้ํากัน relation นี้ไมไดอยูในรูปแบบ BCNF เพราะ

เมื่อเลือกคียค ูแขงใดเปน PK แลว คียค แู ขงที่ไมไดถูกเลือกจะยังปรากฏซ้ําซอนอยู ใน relation นี้ และมีคุณสมบัติในการระบุคาของ Attribute ที่เปน PK

204204 DBASE DES & DEV

Attribute S_Name จะมีคุณสมบัติในการระบุคาของ Attribute S_No

S_No

S_Name

Qty

P_No

Relation นี้ยังเปน relation ที่ประกอบดวยขอมูลที่ซ้ําซอนกัน ซึ่งจะ กอใหเกิดความผิดพลาดจากการเพิ่ม แกไขหรือปรับปรุงขอมูล เชน การเปลี่ยนชื่อของผูผลิต S1 จะตองแกไขขอมูลในทูเพิ เพิลตางๆ ซึ่งอาจเกิดความผิดพลาดได (แกไขขอมูลไมครบถวน) น)

49

แนวทางแกไข

กรณีที่เกลือ Attribute S_No และ P_No เปน PK จะเกิดปญหา

204204 DBASE DES & DEV

50

สรุป :

การแตก relation Supplier3 ออกเปน relation ใหม โดยการแยก Attribute ที่สามารถระบุคาของคียคูแขงแยกเปนอีก relation หนึ่ง ซึ่งอาจทําได 2 กรณี คือ

กรณีที่หนึ่ง

Supplier4 Supplier4 (S_No, S_Name) S_Name) มี S_No, S_No, S_Name เปน PK Order2 (S_No, P_No, Qty) Qty) มี S_No, S_No, P_No เปน PK

กรณีที่สอง

Supplier4 Supplier4 (S_No, S_Name) S_Name) มี S_No, S_No, S_Name เปน PK Order2 (S_Name, P_No, Qty) Qty) มี S_Name, S_Name, P_No เปน PK

รูปแบบ BCNF เปนรูปแบบที่ขยายขอบเขตของรูปแบบ 3NF โดยมี

การตรวจสอบ relation วามี Attribute อื่นที่ไมใช PK แตสามารถระบุคา ของ PK ได ดังนี้ Attribute ที่เปน PK

Attribute อื่นๆ

C

A

D

B 204204 DBASE DES & DEV

51

Forth Normal Form : 4NF Relation ที่จะอยูในรูปของ 4NF ก็ตอเมื่อ

204204 DBASE DES & DEV

Relation SPJC

เปน relation ที่ไมมีความสัมพันธในการระบุคาของ Attribute

แบบหลายคา โดยที่ Attribute ที่ถูกระบุคาหลายคาเหลานี้ไมมี ความสัมพันธกัน Attribute จะตองไมมีความสัมพันธแบบ Independently Multivalued Dependency Relation ที่อยูในรูปแบบ 4NF จะตองมี Attribute อยางนอย 3 Attribute 53

52

ประกอบดวย Attribute ดังนี้

Relation SPJC ประกอบดวย

Relation นั้นๆ อยูในรูปแบบ BCNF

204204 DBASE DES & DEV

E

Attribute รหัสผูผลิต (S_No) Attribute รหัสโครงการ (PJ_No) Attribute ชื่อจังหวัดที่โรงงานของ ผูผลิตตั้งอยู (City)

ขอกําหนด :

S_No

PJ_No

S1

PJ01 PJ01 PJ02

City กรุงเทพฯ ปทุมธานี กรุงเทพฯ

PJ02 PJ03

ปทุมธานี สมุทรปราการ

PJ03 PJ04

อยุธยา สมุทรปราการ

PJ04 PJ05 PJ05

อยุธยา สมุทรปราการ อยุธยา

S2

ผูผลิตแตละรายสามารถผลิตใหกับ โครงการตางๆ ไดมากกวา 1 โครงการ และ ผูผลิตแตละรายมีโรงงานตั้งอยูใน จังหวัดตางๆ ไดมากกวา 1 จังหวัด 204204 DBASE DES & DEV

54

9


S_No S1

S2

PJ_No PJ01

City กรุงเทพฯ

PJ01 PJ02 PJ02

ปทุมธานี กรุงเทพฯ ปทุมธานี

PJ03

สมุทรปราการ

PJ03 PJ04 PJ04

อยุธยา สมุทรปราการ อยุธยา

PJ05 PJ05

สมุทรปราการ อยุธยา

ทําให relation SPJC อยูในรูปแบบ BCNF โดยใหทุก Attribute ประกอบกันเปน PK S_No

PJ_No

S1 S1 S1

PJ01 PJ01 PJ02

City กรุงเทพฯ ปทุมธานี กรุงเทพฯ

S1 S2

PJ02 PJ03

ปทุมธานี สมุทรปราการ

S2 S2

PJ03 PJ04

อยุธยา สมุทรปราการ

PJ04 PJ05 PJ05

อยุธยา สมุทรปราการ อยุธยา

S2 S2 S2 204204 DBASE DES & DEV

Relation SPJC อยูในรูปแบบ BCNF เมื่อมี Attribute ทุก Attribute ประกอบกันเปน PK S_No มีความสัมพันธในการระบุคา PJ_No แบบหลายคา (S_No (S_No >> PJ_No) PJ_No) S_No มีความสัมพันธในการระบุคา City แบบหลายคา (S_No (S_No >> City) City)

ดวยเหตุที่ Attribute ทั้งสองไมมีความสัมพันธกันแตมาอยูใน relation เดียวกันจะกอใหเกิดความซ้ําซอนของขอมูลขึ้นได เพราะวา คาของชื่อ จังหวัดจะปรากฏใน relation ซ้ํากัน เพื่อใหขอมูลในแตละทูเพิ เพิลมีความ สมบูรณ

แมวา relation SPJC จะอยูในรูปแบบ BCNF โดยที่ทุก Attribute ประกอบกันเปน PK แต relation ก็ยังมีปญหาแฝงอยูเชนกัน 204204 DBASE DES & DEV

57

Fifth Normal Form : 5NF ชื่ออื่นของรูปแบบบรรทัดฐานขั้นที่ 5 (5NF) 5NF)

คือ

ProjectProject-Join Normal Form (PJ/NF)

Relation ที่จะอยูในรูปของ 5NF 5NF ก็ตอเมื่อ Relation นั้นๆ อยูในรูปแบบบรรทัดฐานขั้นที่ 4 (4NF) 4NF) ไมมี Symmetric Constraint หากมีการแตก relation ออกเปน relation ยอย (Projection (Projection)) เมื่อทําการเชื่อมโยง relation ยอยทั้งหมด (Join (Join)) จะไมกอใหเกิดขอมูลใหม

ที่ไมเหมือน relation เดิม (Spurious (Spurious Tuple) Tuple) 204204 DBASE DES & DEV

ผูผลิตรหัส S2 ยายโรงงานจาก สมุทรปราการ ไปอยูจังหวัดอื่น ก็ตองทํา การแกไขขอมูลในทูเพิ เพิลตางๆ หรือ กรณีที่การเก็บขอมูลชื่อจังหวัดที่ตั้งของผูผลิตคนใหมที่ยงั ไมเคยรับงานโครงการ ใดเลยจะทําไมได

แนวทางการแกไขปญหา

การแตก relation SPJC ออกเปน 2 relation SPJ (S_No, PJ_No) มี S_No, S_No, PJ_No เปน PK SC (S_No, City) มี S_No, S_No, City เปน PK

204204 DBASE DES & DEV

56

SPJ

SPJC

S_No ซึ่งมีความสัมพันธในการระบุคา PJ_No และ City ไดหลายคา

Relation SPJC อาจเกิดปญหาความผิดพลาดจากการเพิ่ม ลบ หรือปรับปรุง ขอมูลได เชน

55

Relation SPJC ประกอบดวย

59

S_No S1

PJ_No PJ01

City กรุงเทพฯ

S1 S1 S1 S2

PJ01 PJ02 PJ02

ปทุมธานี กรุงเทพฯ ปทุมธานี

PJ03

สมุทรปราการ

S2 S2 S2

PJ03 PJ04 PJ04

อยุธยา สมุทรปราการ อยุธยา

S2 S2

PJ05 PJ05

สมุทรปราการ อยุธยา

S_No

PJ_No

S1 S1 S2

PJ01 PJ02 PJ03

S2

PJ04

S2

PJ05

S_No S1 S1 S2

City กรุงเทพฯ ปทุมธานี สมุทรปราการ

S2

อยุธยา

SC

204204 DBASE DES & DEV

58

ตัวอยางที่ 1 relation SPP ประกอบดวย Attribute ตางๆ ดังนี้ Attribute ชื่อผูผลิต (S_Name) Attribute ชื่อสินคา (P_Name) Attribute ชื่อโครงการ (PJ_Name) SPP โดยที่ Attribute ทั้งสามเปน PK S_Name SERI SERI WICHAI SERI 204204 DBASE DES & DEV

P_Name PJ_Name PEN Proj2 TABLE Proj1 PEN Proj1 PEN Proj1 60

10


S_Name

Relation PPJ

P_Name

SERI

PEN

SERI WICHAI

TABLE PEN

Relation SP

SPP

P_Name

S_Name

Proj2

SERI

Proj2 Proj1 Proj1

Proj1 Proj1

SERI WICHAI

PEN TABLE PEN

S_Name SERI SERI WICHAI SERI

PJ_Name

PJ_Name

P_Name PJ_Name PEN Proj2 TABLE Proj1 PEN Proj1 PEN Proj1

61

เมื่อแตก relation ออกมาแลวทําการเชื่อมโยง relation ยอยอีกครั้ง หากไมมี ขอมูลทีแ่ ตกตางไปจาก relation เดิม ก็สามารถจะแตก relation นั้นได เมื่อแตก relation ออกมาแลวทําการเชื่อมโยง relation ยอยอีกครั้ง แลวขอมูล แตกตางไปจาก relation เดิม หรือเกิดขอมูลไมเหมือนกับ relation เดิม ก็ไม ควรแตก relation นั้น ใหถือวา relation เดิมอยูในรูปแบบ 5NF

204204 DBASE DES & DEV

Relation CPJ

City

Bangkok

S1 S3

Rayong Rayong

Relation SC

City

Bangkok Rayong Rayong

แนวทางแกไขปญหาคือ

S1

การลบขอมูลของทู ของทูกเพิลที่ 3 (WICHAI, PEN, Proj1) Proj1) สงผลใหขอมูลของ ชื่อผูผลิตที่ชื่อ “WICHAI” WICHAI” หายไปจากฐานขอมูล หรือ การเปลี่ยนชื่อสินคาใดสินคาหนึ่ง จะตองทําการปรับปรุงขอมูลหลายทูเพิ เพิล

เมื่อแตก relation SPP ออกเปน relation SP, PPJ และ PJS แลว หากนํา relation ทั้งสามมาเชื่อมโยงกัน (Join (Join)) จะมีขอมูลเหมือนใน relation เดิม (Symmetric Constraint) Constraint) คือ ไมมีลักษณะของทูเพิ เพิลที่เกินมา เรียกวา Spurious Tuple

S_No

Relation SPP อยูในรูปแบบ 4NF ประกอบดวย Attribute ทั้งสามประกอบ กันเปน PK แตประสบปญหาในการปรับปรุงแกไขขอมูล เชน

Relation PJS

204204 DBASE DES & DEV

204204 DBASE DES & DEV

S_No

PJ_No

S1

PJ01

PJ01 PJ02 PJ01

S1 S3

PJ02 PJ01

Relation PJS

62

ตัวอยางที่ 2 relation SCPJ ประกอบดวย Attribute ตางๆ ดังนี้ Attribute รหัสผูผลิต (S_No) Attribute ชื่อจังหวัดของผูผลิต (City) Attribute รหัสโครงการ (PJ_No) SCPJ โดยที่ Attribute ทั้งสามเปน PK

63

PJ_N0

การแตก relation SPP ออกเปน 3 relation ยอย (Projection (Projection)) แตละ relation ยอยประกอบดวย Attribute แตละคูเปน PK

S_No S1

City Bangkok

PJ_No PJ01

S1 S3

Rayong Rayong

PJ02 PJ01

204204 DBASE DES & DEV

64

Relation SCPJ อยูในรูปแบบ 4NF ประกอบดวย Attribute ทั้งสามประกอบ กันเปน PK แตมีปญหาที่อาจเกิดความผิดในการเพิ่ม ลบ หรือปรับปรุง ขอมูล แนวทางแกไขปญหาคือ การแตก relation SPP ออกเปน 3 relation ยอย (Projection (Projection)) ประกอบดวย Relation SC, CPJ และ PJC  มูลเกินมา แตปญหาที่เกิดขึ้น คือ เมื่อนํา relation ทั้งสามมาเชื่อมโยงกัน จะมีขอ (Spurious Tuple) คือ S1 Rayong PJ01 ซึ่งไมมีใน relation เดิม ้ กรณีที่เกิดปญหาในลักษณะนี้ก็ไมควรจะแตก relation นัน

Spurious Tuple

S_No S1 S1 S1 S3

City Bangkok Rayong Rayong Rayong

PJ_No PJ01 PJ02 PJ01 PJ01

204204 DBASE DES & DEV

65

204204 DBASE DES & DEV

66

11


การแตก relation มากเกินไป (Overnormalization)

ประเด็นที่ควรคํานึงถึง ในการทําใหเปนรูปแบบบรรทัดฐาน (Normal (Normal Form) Form)

การแตก relation มากเกินไป (Overnormalization (Overnormalization))

การดีนอร นอรมอลไลเซชั อลไลเซชัน (Denormalization (Denormalization))

204204 DBASE DES & DEV

เพื่อลดปญหาในดานความซ้ําซอนของขอมูล เพื่อลดปญหาในเรื่องการเพิ่ม การลบ หรือการปรับปรุงขอมูล

โดยทั่วไปการออกแบบในระดับแนวคิด ผูออกแบบจะพยายามวิเคราะห relation ใหอยูในรูปแบบ 3NF 3NF กรณีที่เกิดปญหาตางๆ ที่จําเปนตองทําตอไปถึงรูปแบบ BCNF, BCNF, 4NF และ 5NF (เกิดขึ้นนอยมากในทางปฏิบัติ) 204204 DBASE DES & DEV

68

การดีนอร นอรมอลไลเซชัน (Denormalization)

การแตก relation ออกเปน relation ยอยมากเกินไปมีผลตอประสิทธิภาพใน การทํางานของฐานขอมูล เชน ในการคนคืนขอมูลจะตองใชเวลามากกวาเดิม เปนตน

204204 DBASE DES & DEV

67

ดวยเหตุผลดังกลาว ผูออกแบบไมควรพยายามที่จะแตก relation มากเกินความจําเปน (Overnormalization (Overnormalization)) เพราะ

วัตถุประสงคของการทําใหเปนรูปแบบบรรทัดฐาน คือ

69

กรณีที่บาง relation ถูกออกแบบโดยการไมทําใหอยูในรูปแบบบรรทัดฐาน ที่เปนไปตามกฏเกณฑ ไปตามกฏเกณฑทีท่กี ําหนดไว เชน relation นั้นควรจะปรับใหอยูในรูปแบบ 3NF 3NF แตหยุดอยูเพียง รูปแบบ 2NF NF เป น ต น 2 อาจเปนเพราะเหตุผลในเรื่องของประสิทธิภาพในการเรียกดู หรือ การคนคืนขอมูล และยอมใหเกิดความซ้ําซอนของขอมูลได

204204 DBASE DES & DEV

70

204204 DBASE DES & DEV

72

การดีนอร นอรมอลไลเซชั อลไลเซชันอาจกอใหเกิดปญหาความซ้ําซอนของขอมูล เกิดขึ้นได ควรมีการระบุสาเหตุ และวิธีการในการปรับปรุงขอมูลในโปรแกรม ประยุกตใชงาน เพื่อปองกันไมใหเกิดปญหาขอมูลไมถูกตอง ถาขอมูลใน relation นั้นๆ สวนใหญจะเปนการเรียกดูขอมูล (Select (Select)) มากกวา การเพิ่ม ลบ หรือปรับปรุงขอมูล เพื่อเพิม่ ประสิทธิภาพในการทํางานของ ฐานขอมูล และไมมปี ญหาดานความไมถูกตองของขอมูลที่ซ้ําซอนกันได

204204 DBASE DES & DEV

71

12


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.