บทที่ 3 การออกแบบฐานข้อมูล database design ·...

63
บทที 3 การออกแบบฐานข้อมูล 1 วิชา การออกแบบและพัฒนาซอฟต์แวร์ เพียรทิพย์ ศรีสุธรรม

Upload: others

Post on 06-Feb-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

บทที่ 3 การออกแบบฐานข้อมูล

1

วิชา การออกแบบและพฒันาซอฟตแ์วร์

อ เพยีรทิพย ์ศรีสุธรรม

Page 2: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

2

การออกแบบฐานข้อมูลระดบัตรรกะ (แปลง ER-เป็น

แบบจาํลองฐานข้อมูลเชงิสัมพนัธ์)

กระบวนการปรับบรรทดัฐาน (The Normalization Process)

การออกแบบฐานข้อมูลระดบักายภาพ (Data Dictionary)

เนือ้หา

Page 3: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

3

การออกแบบฐานข้อมูลระดบัตรรกะ

(Logical Database Design)

(การแปลง แบบจาํลอง E-R เป็น แบบจาํลองฐานข้อมูลเเชิงสมัพันธ)์

ER-Model

แบบจาํลองฐานข้อมูลเเชิงสมัพันธ์

Page 4: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลงรปู ER-Diagram เป็น Relation

4

1.การแปลงเอนติตีป้กติและแอททริบิวท์ของเอนตติีป้กติ

2.การแปลงความสัมพนัธ์ระหว่างเอน็ติตี้

Page 5: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

5

แอททริบิวต์แบบปกติ (Simple or Atomic Attribute)

เอน็ติตีป้กตแิต่ละเอนติตีใ้นแผนภาพ E-R จะถูกแปลงเป็นรีเลชั่น

ชื่อของรีเลชันจะเหมอืนกบัชื่อเอน็ติตี้

แต่ละแอททริบิวต์จะแปลงเป็นคอลมัย์ของรีเลชั่น

แอททริบิวต์ทีเ่ป็นตวัชี้เฉพาะ (ทีข่ดีเส้นใต้) จะถูกแปลงเป็นคยี์หลกัในรีเลชั่น

องค์ประกอบในแผนภาพ E-R องค์ประกอบในโมเดลฐานข้อมูลเชิงสัมพนัธ์

นักศึกษา

นักศึกษา

นักศึกษา

รหัสนักศึกษา

ชื่อนักศึกษาเพศ

สังกดัคณะรหัส

นักศึกษา

ชื่อนักศึกษา เพศ สังกดั

คณะ

Page 6: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลงความสัมพนัธ์(Relationship) เป็น Relation (ตาราง)

6

one to one ไม่มกีารสร้าง relation ใหม่ แต่จะเป็นการปรับปรุงคู่รีเลชั่นทีม่คีวามสัมพนัธ์

กนัโดยการเพิม่เตมิฟิวด์ทีท่าํหน้าทีเ่ป็นคยี์นอก

one to many ไม่มกีารสร้าง relation ใหม่ แต่จะเป็นการปรับปรุงคู่รีเลชั่นทีม่คีวามสัมพนัธ์

กนัโดยการ เพิม่เตมิฟิวด์ทีท่าํหน้าทีเ่ป็นคยี์นอก

many to many จะต้องสร้าง Relation อนัใหม่ในกรณทีีเ่ป็น many to many

Page 7: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลงความสัมพนัธ์(Relationship) เป็น Relation (ตาราง)

7

การแปลงความสัมพนัธ์ระหว่าง 2 เอน็ตติิ ้(แบบเงือ่นไขของเวลาเข้ามา

เกีย่วข้อง)

ความสัมพนัธ์ทั้ง 3 ชนิด (1:1, 1:M, M:N) เมือ่แปลงแล้วจะมกีาร

สร้าง relation ใหม่ 1 รีเลชั่น เกดิจากความสัมพนัธ์ ทีม่เีงือ่นไขเวลาเข้ามาเกีย่วข้อง

Page 8: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลง one-to-one Relationship เป็น Relation (ตาราง)

8

แปลง Entity ที่สมัพันธก์นัไปเป็น Relation

เอา Primary Key ของ Entity ฝั่งใดฝั่งหนึ่งเป็น Foreign Key ของ Entity ฝั่งตรงกนัข้าม

11บริหาร

รหัสผู้รับผดิชอบ

โครงการชื่อ-สกลุ รหัสโครงการ

ชื่อโครงการ

โครงการผู้รับผดิชอบ

ผู้รับผดิชอบ (รหัสผู้รับผดิชอบโครงการ, ชื่อ-สกลุ)

โครงการ(รหัสโครงการ,ชื่อ, รหัสผู้รับผดิขอบโครงการ)

ผู้รับผดิชอบ(รหัสผู้รับผดิชอบโครงการ, ชื่อ-สกลุ,รหัสโครงการ)

โครงการ(รหัสโครงการ,ชื่อ)

คียน์อก

คียน์อก

หรือ

Page 9: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

รหัส

ผู้รับผดิชอบ

ชื่อ-สกลุ รหัสโครงการ

01 Chanchai 1

02 Kittisak 2

03 Wittaya 3

รหัสโครงการ ชื่อ

1 โครงการสร้างเขื่อน

2 โครงการขดุลอกคูคลอง

3 โครงการสร้างฝายทดนํ้า

รหัส

ผู้รับผดิชอบ

ชื่อ-สกลุ

01 Chanchai

02 Kittisak

03 Wittaya

รหัส

โครงการ

ชื่อ รหัส

ผู้รับผดิชอบ

1 โครงการสร้างเขื่อน 01

2 โครงการขดุลอกคูคลอง 02

3 โครงการสร้างฝายทดนํ้า 03

ผู้รับผดิชอบ

โครงการ

กรณี 1 กรณี 2

9

ผู้รับผดิชอบ

โครงการ

การแปลง one-to-one Relationship เป็น Relation (ตาราง)

วธิีที่ 2

วธิีที่ 1

Page 10: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลง one-to-one Relationship เป็น Relation (ตาราง) ทีม่เีวลาเข้ามาเกีย่วข้อง

10

11รับผดิชอบ

รหัสนักศึกษา ชื่อ-สกลุรหัสโปรเจค็

ชื่อโปรเจ๊ค

โปรเจค็นักศึกษา

ภาคเรียน ปีการศึกษา

จากตวัอยา่ง เป็น ER แสดงความสมัพนัธ์ ระหวา่งนกัศกึษากบัโปรเจ็คที่

รับผิดชอบ

เพื่อให้ตรวจสอบได้วา่ นกัศกึษาคนไหน ทําโปรเร็จอะไรเมื่อไหร่ ดงันัน้ ต้องระบุ

ด้วยวา่ ทําโปรเจ็คภาคเรียนใด ปีการศกึษาใด

(เพิ่มเตมิ)

Page 11: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลง one-to-one Relationship เป็น Relation (ตาราง) ทีม่เีวลาเข้ามาเกีย่วข้อง

11

การแปลงความสมัพนัธ์ แบบ 1:1 ที่มีเงื่อนไขเรื่องเวลาเข้ามาด้วย จะต้อง

แปลงเป็นรีเลชัน่ใหมเ่กิดขึน้ ในตวัอยา่งคือ รีเลชัน่ การรับผิดชอบโปรเจ็ค

จากตวัอยา่งจะได้จะได้ทัง้หมด 3 รีเลชัน่คือ

นกัศกึษา

โปรเจ็ค

การรับผิดชอบโปรเจค็ (แปลงมาจาก 1:1 ที่มีเงื่อนไขเวลาเข้ามา

เกี่ยวข้องด้วย)

(เพิ่มเตมิ)

Page 12: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

12

แอททริบิวต์ที่จะเป็น คีย์หลกั (Primary Key)ของรีเรชัน่ การรับผิดชอบโปรเจค็ คือ

ทางเลือกที่ 1

ใช้ คีย์หลักของ รีเลชั่น นักศึกษา และ คีย์หลักของรีเลชั่นโปรเจค็ ผลที่ได้คือ

การรับผิดชอบโปรเจค็(รหสันักศึกษา,รหสัโปรเจค็,ภาคเรียน,ปีการศึกษา)

ทางเลือกที่ 2

สร้างคีย์หลักขึน้มาใหม่ แต่นําคีย์หลักของ รีเลชั่น นักศึกษา และ คีย์หลักของรีเลชั่นโปร

เจค็ มาเป็นคีย์นอก

การรับผิดชอบโปรเจค(เลขที่โปรเจค็,รหสันักศึกษา,รหสัโปรเจค็,ภาคเรียน,ปีการศึกษา)

11รับผดิชอบ

รหัสนักศึกษา ชื่อ-สกลุ รหัสโปรเจค็ชื่อโปรเจ๊ค

โปรเจค็นักศึกษา

ภาค

เรียนปีการศึกษา

(เพิ่มเตมิ)

Page 13: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

13

รหสันักศึกษา ชื่อ สกุล

49001 นายปราโมทย์ สินมั่นคง

49002 นายคงเดช มีถาวร

49003 นายปรีชา กจิตรง

นักศึกษา

รหสัโปรเจค็ ชื่อโปรเจค็

P01 ระบบหอพักออนไลน์

P02 ระบบขายออนไลน์

P03 ระบบประวัตบิุคลากร

P04 ระบบเช่ารถออนไลน์

โปรเจค็

รหสันักศึกษา รหสัโปรเจค็ ภาคเรียน ปีการศึกษา

49001 P01 2 2551

49002 P02 2 2552

49003 P03 2 2553

49001 P04 1 2552

การรับผิดชอบโปรเจค็ คีย์หลักของตาราง และ เป็นคีย์นอก ด้วย

(เพิ่มเตมิ)

ทางเลือกที่ 1

Page 14: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

14

รหสันักศึกษา ชื่อ สกุล

49001 นายปราโมทย์ สินมั่นคง

49002 นายคงเดช มีถาวร

49003 นายปรีชา กจิตรง

นักศึกษารหสัโปรเจค็ ชื่อโปรเจค็

P01 ระบบหอพักออนไลน์

P02 ระบบขายออนไลน์

P03 ระบบประวัตบิุคลากร

P04 ระบบเช่ารถออนไลน์

โปรเจค็

รหสั รหสันักศึกษา รหสัโปรเจค็ ภาคเรียน ปีการศึกษา

1 49001 P01 2 2551

2 49002 P02 2 2552

3 49003 P03 2 2553

4 49001 P04 1 2552

การรับผิดชอบโปรเจค็

คีย์หลัก คีย์นอก คีย์นอก (เพิ่มเตมิ)

ทางเลือกที่ 2

Page 15: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

15

การแปลง one-to-many Relationship เป็น Relation (ตาราง)

นาํ Primary Key ของ

Entity ฝั่ง One มาเป็น

Foreign Key ให ้Relation

ของ Entity ฝั่ง Many

Foreign Key

have

1

M

Page 16: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

16

Customer_ID Customer_Name Customer_Address

01 นายธนภทัร ศรีสุธรรม กรุงเทพ

02 นางธญัญาพร ศรีแกว้ นนทบุรี

03 นายเอกชยั ปานมาก สมุทรปราการ

Order_Id Order_Date Customer_Id

OD01 11/01/53 01

OD02 12/01/53 01

OD03 12/03/53 02

CUSTOMER

ORDER

Page 17: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

17

การแปลง one-to-many Relationship เป็น Relation (ตาราง) มเีวลามาเกีย่วข้อง

M1

รหัสอาจารย์ ชื่อ-สกลุ รหัสนักศึกษาชื่อ-สกลุ

นักศึกษาอาจารย์ เป็นทีป่รึกษา

ภาคการศึกษา ปีการศึกษา

จากตวัอยา่ง เป็น ER แสดงความสมัพนัธ์ ระหวา่งอาจารย์กบันกัศกึษา

เพื่อให้ตรวจสอบได้วา่ ในภาคเรียนและปีการศกึษาใดๆ อาจารย์แตล่ะคนเป็น

ที่ปรึกษานกัศกึษาคนไหนบ้าง

(เพิ่มเตมิ)

Page 18: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลง one-to-one Relationship เป็น Relation (ตาราง) ทีม่เีวลาเข้ามาเกีย่วข้อง

18

การแปลงความสมัพนัธ์ แบบ 1:M ที่มีเงื่อนไขเรื่องเวลาเข้ามาด้วย จะต้อง

แปลงเป็นรีเลชัน่ใหมเ่กิดขึน้ ในตวัอยา่งคือ รีเลชัน่ การรับผิดชอบโปรเจ็ค

จากตวัอยา่งจะได้จะได้ทัง้หมด 3 รีเลชัน่คือ

นกัศกึษา

อาจารย์

การเป็นที่ปรึกษา (แปลงมาจาก 1:M ที่มีเงื่อนไขเวลาเข้ามาเกี่ยวข้อง

ด้วย)

(เพิ่มเตมิ)

Page 19: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

19

แอททริบิวต์ที่จะเป็น คีย์หลกั (Primary Key)ของรีเรชัน่ การเป็นที่ปรึกษา คือ

ทางเลือกที่ 1 ใช้ คีย์หลักของ รีเลชั่น อาจารย์ (คือ รหสัอาจารย์)และ คีย์หลักของรีเลชั่นนักศึกษา (คือ รหสันักศึกษา) มาเป็นคีย์หลัก ในขณะเดยีวกัน ก็ทาํหน้าที่เป็นคีย์นอกด้วย ผลที่ได้

การเป็นที่ปรึกษา(รหสัอาจารย์,รหสันักศึกษา,ภาคการศึกษา,ปีการศึกษา)

ทางเลือกที่ 2 สร้างคีย์หลักขึน้มาใหม่ ในที่นีต้ัง้ชื่อให้เป็น รหสั แต่นําคีย์หลักของ รีเลชั่น อาจารย์ และ คีย์หลักของรีเลชั่นนักศึกษา มาเป็นคีย์นอก

การเป็นที่ปรึกษา(รหสั,รหสัอาจารย์,รหสันักศึกษา,ภาคการศึกษา,ปีการศึกษา)

M1

รหัสอาจารย์ ชื่อ-สกลุ รหัสนักศึกษาชื่อ-สกลุ

นักศึกษาอาจารย์ เป็นทีป่รึกษา

ภาคการศึกษา ปีการศึกษา

(เพิ่มเตมิ)

Page 20: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

20

รหสันักศึกษา ชื่อ สกุล

49001 นายปราโมทย์ สินมั่นคง

49002 นายคงเดช มีถาวร

49003 นายปรีชา กจิตรง

50001 นายเอก ใจดี

นักศึกษา

รหสัอาจารย์ ชื่อ สกุล

T001 นางสาวออมสิน น่ารัก

T002 นางสาวนํา้ค้าง สวยดี

T003 นางสาวหนิง สวยมาก

อาจารย์

รหสัอาจารย์ รหสันักศึกษา ภาคเรียน ปีการศึกษา

T001 49001 2 2551

T002 49002 2 2552

T003 49003 2 2553

T001 50001 1 2554

การเป็นที่ปรึกษา

คีย์นอก คีย์นอก

คีย์หลัก

(เพิ่มเตมิ)

ทางเลือกที่ 1

Page 21: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

21

อาจารย์

นักศึกษา

รหสั รหสันักศึกษา รหสัโปรเจค็ ภาคเรียน ปีการศึกษา

1 T001 49001 2 2551

2 T002 49002 2 2552

3 T003 49003 2 2553

4 T001 50001 1 2552

การเป็นที่ปรึกษา

คีย์หลัก คีย์นอก คีย์นอก

รหสันักศึกษา ชื่อ สกุล

49001 นายปราโมทย์ สินมั่นคง

49002 นายคงเดช มีถาวร

49003 นายปรีชา กจิตรง

50001 นายเอก ใจดี

รหสัอาจารย์ ชื่อ สกุล

T001 นางสาวออมสิน น่ารัก

T002 นางสาวนํา้ค้าง สวยดี

T003 นางสาวหนิง สวยมาก

(เพิ่มเตมิ)

ทางเลือกที่ 2

Page 22: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

การแปลง many-to-many Relationship เป็น Relation (ตาราง)

สามารถแปลงความสมัพนัธ์ M:N ใหอ้ยูใ่นรูปของเอนติตี้เชิงสมัพนัธ์ (Associative

Entity) ได ้

จาก ER-Diagram การลงทะเบียนของนกัศึกษา ความสมัพนัธ์ “ลงทะเบียน”

สามารถแปลงใหอ้ยูใ่นรูป เอนติตี้เชิงสมัพนัธ์ ไดด้งัรูปต่อไป

22

รหัสน.ศชื่อ

สกลุ

ภาคเรียน ปีการศึกษา

เกรด

ลงทะเบียน

รหัสวชิา

หน่วยกติ

ชื่อวชิา

M N

นักศึกษา วชิา

เกรดเฉลีย่

Page 23: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

23

รหัสน.ศชื่อ

สกลุ

ภาคเรียน

เกรด

รหัสวชิา

หน่วยกติ

ชื่อวชิา

M N

นักศึกษา วชิา

เกรดเฉลีย่

ปีการศึกษา

การลงทะเบียนM 11

ความสนัพนัธ์ ลงทะเบียน เปลี่ยนเป็นเอนติตี้เชิงสมัพนัธ์ การลงทะเบียน

ลงทะเบียน การลงทะเบียน

เพิ่มเตมิ

Page 24: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

24

แปลงความสมัพนัธ์แบบ many-to-many ใหเ้ป็น Relation ใหม่

นาํคียห์ลกัของ เอนติตี้ทั้ง 2 เอนติตี้ที่มีความสมัพนัธ์กนั มาใส่เป็น คียห์ลกัของ Relation ที่เกิดจาก

ความสมัพนัธ์แบบ many to many (M:N)

ในกรณีที่ Relation ที่ไดจ้ากการแปลงความสมัพนัธ์ (M:N) มีแอททริบิวตท์ี่จาํเป็นตอ้งนาํมาเป็น

ประกอบของคียห์ลกัได ้เพื่อใหบ้อกความแตกต่างของแต่ละแถวได ้ตอ้งนาํมาเป็นส่วนหนึ่งของคีย์

หลกัดว้ย

ส่วนเอนติตี้อื่นๆ กแ็ปลงตามปกติเหมือนขั้นตอนก่อนหนา้ที่ไดก้ล่าวมาแลว้

จากตวัอย่าง จะได้ 3 relation คอื

1) นักศึกษา (รหัสน.ศ. ,ชื่อ, สกลุ, เกรดเฉลีย่)

2) วชิา (รหัสวชิา,ชื่อวชิา , หน่วยกติ)

3) การลงทะเบียน(รหัสนักศึกษา,รหัสวชิา,ภาคเรียน,ปีการศึกษา,เกรด)

แต่ต้องพจิารณาเงือ่นไขทีต่้องการด้วย เช่น ถ้าให้นักศึกษาสามารถลงทะเบยีนวชิาเดมิซํ้าได้เพราะไม่ผ่าน

ต้องกาํหนด ภาคเรียนกบัปีการศึกษาเป็นส่วนหนึ่งของคยี์หลกัด้วย ดงันั้นจะได้ผลลพัธ์ดงันี้

“การลงทะเบียน(รหัสนักศึกษา,รหัสวชิา,ภาคเรียน,ปีการศึกษา,เกรด)”

การแปลง many-to-many Relationship เป็น Relation (ตาราง)

Page 25: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

1) นักศึกษา (รหัสนักศึกษา ,ชื่อ, สกลุ, เกรดเฉลีย่)

2) วชิา (รหัสวชิา,ชื่อวชิา , หน่วยกติ)

3) การลงทะเบียน( รหัสนักศึกษา ,รหัสวชิา , ภาคเรียน, ปีการศึกษา, เกรด)

ไดผ้ลลพัธท์ั้งหมด 3 relations

Relation ทีเ่กดิจาก

ความสัมพนัธ์แบบ

many to manyForeign key

คียน์อก

Foreign key

คียน์อก

Composite primary key (คียห์ลกัทีป่ระกอบดว้ยแอททริบวิตห์ลายตวั)

25

Page 26: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

26

จงแปลงแบบจําลอง E-R ต่อไปนี ้เป็นแบบจําลองฐานข้อมูลเชิงสัมพนัธ์

Page 27: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

N

M 1

M

รถยนต์

รหัสรถยนต์

ประเภท

รหัสประเภทชื่อประเภท

ผู้เช่า

รหัสผู้เช่า ชื่อ-สกลุ

จดัอยู่

เช่า

ทีอ่ยู่เบอร์โทรศัพท์

สี

ราคาซื้อเลขทะเบยีน

เลขทีบ่ัตรประชาชน

วนัทีเ่ช่า

วนัทีส่่งคนื

ค่าเช่า/วนั

แบบจาํลอง E-R ระบบเช่ารถยนต์

Page 28: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

1

M

N

M 1

M

พนักงาน

รหัสพนักงาน

ตาํแหน่ง

รหัสตาํแหน่งชื่อตาํแหน่ง

ลูกค้า

รหัสลูกค้า ชื่อ-สกลุ

ดาํรง

สังกดั

ทีอ่ยู่เบอร์โทรศัพท์

เบอร์โทร

ทีอ่ยู่ชื่อ-สกลุ

เลขทีบ่ัตรประชาชน

ชื่อแผนกรหัสแผนก

แผนก

ดูแล

แบบจาํลอง E-R ระบบบุคลากร

Page 29: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

1 1

M Nนักศึกษา

รหัสนักศึกษา

ห้องพกั

หมายเลขห้องพกัจาํนวนเตยีง

หอพกั

หมายเลหอพกั

ประเภทหอ

พกั

เบอร์โทร

ทีอ่ยู่ชื่อ-สกลุ

จาํนวนห้อง

ชื่อสกลุรหัสอาจารย์

อาจารย์ ดูแล

อตัราค่าห้อง

ปีการศึกษา ภาคเรียนเพศ

เบอร์โทร

ทีอ่ยู่เพศ

มี

1

M

แบบจาํลอง E-R ระบบหอพักนักศึกษา

Page 30: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Bill_detail

ER-Diagramของระบบการขายสินค้า

Customer

Cus_ID

Cus_name

Address

order

Bill_No

Bill_date

Employee

Emp_ID

Emp_name

salary

Product

Product_ID

Product_name

price

order_detail

1

M

1

M

1 M 1M

Amount

Price_s

TypeProductTypeID

TypeName

1

M

detail_date

Total_Pricehave

have

have

Page 31: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

ความหมายและจุดประสงค์ของการนอร์มลัไลเซชั่น

ฟังก์ชันการขึน้ต่อกนั (Function Dependencies)

กระบวนการนอร์มลัไลเซชั่น

31

กระบวนการปรับบรรทดัฐาน (Normalization)

Page 32: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

นอร์มลัไลเซชัน่ เป็นทฤษฎีที่ผูอ้อกแบบฐานขอ้มูลจะตอ้งนาํมาใชใ้นการ

แปลงขอ้มูลที่อยูใ่นรูปแบบที่ซบัซอ้น ใหอ้ยูใ่นรูปแบบที่ง่ายต่อการ

นาํไปใชง้านและก่อใหเ้กิดปัญหานอ้ยที่สุด

ในบทนี้จะสอนกระบวนการนอร์มลัไลเซชนั ใน 3 ระดบัดว้ยกนัคือ

นอร์มลัไลชัน่ระดบัที่ 1 หรือเรียกวา่ 1NF

นอร์มลัไลชัน่ระดบัที่ 2 หรือเรียกวา่ 2NF

นอร์มลัไลชัน่ระดบัที่ 3 หรือเรียกวา่ 3NF

32

ความหมายและจุดประสงค์ของการนอร์มลัไลเซชั่น

Page 33: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

33

วิเคราะหค์วาม

ตอ้งการของผูใ้ช้E-R Diagram

รีเลชั่นทีม่รีูปแบบไม่เป็นบรรทดัฐาน

(Unnormalized relation)

1 NF

2 NF

3 NF

บอยด์ คอดด์

4 NF

รีเลชั่นทีม่เีป็นบรรแบบทดัฐาน

(Normalized relation)

กระบวนการปรับบรรทดั

ฐาน (Normalization)

Page 34: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

ลดความซํ้ าซอ้นของขอ้มูล เมื่อลดความซํ้ าซอ้นกท็าํใหล้ดเนื้อหาที่ใช้

ในการจดัเกบ็ขอ้มูล

ลดปัญหาความไม่ถูกตอ้งของขอ้มูล เมื่อขอ้มูลไม่เกิดความซํ้ าซอ้นทาํ

ใหก้ารปรับปรุงขอ้มูลสามารถทาํไดจ้ากแหล่งขอ้มูลเพียงแหล่งเดียว

ลดความผดิพลาดที่อาจเกิดจากการปรับปรุงขอ้มูล (update anomalies)

ซึ่งประกอบดว้ย

34

วตัถุประสงค์ของนอร์มลัไลซ์ (Normalization)

Page 35: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

ความซํ้าซ้อนและข้อผดิพลาดจากการปรับปรุงข้อมูล

35

แนวคิดหลกัอนัสาํคญัของการออกแบบฐานขอ้มูลเชิงสมัพนัธ์ คือ การ

ออกแบบใหม้ีการเกบ็ขอ้มูลซํ้ าซอ้นนอ้ยที่สุด

เพื่อประหยดัเนื้อที่ในการเกบ็ขอ้มูลและลดปัญหาที่จะเกิดดงัตวัอยา่ง

ต่อไปนี้

Page 36: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

36

รหัสพนักงาน ชื่อ-สกลุ ตาํแหน่ง เงนิเดอืน รหัสสาขา ทีอ่ยู่

SG21 ชูชาติ สุขศรี ผูจ้ดัการ 30000 B005 เชียงใหม่

SG37 ศิริ ดวงเด่น ผูช้่วย 20000 B003 กรุงเทพ

SG14 ดวงใจ มีสุข เลขานุการ 20000 B003 กรุงเทพ

SG09 อจัฉรา เขียวแกว้ ผูจ้ดัการ 30000 B007 พิษณุโลก

รหัสพนักงาน ชื่อ-สกลุ ตาํแหน่ง เงนิเดอืน รหัสสาขา

SG21 ชูชาติ สุขศรี ผูจ้ดัการ 30000 B005

SG37 ศิริ ดวงเด่น ผูช้่วย 20000 B003

SG14 ดวงใจ มีสุข เลขานุการ 20000 B003

SG09 อจัฉรา เขียวแกว้ ผูจ้ดัการ 30000 B007

รหัสสาขา ทีอ่ยู่

B005 เชียงใหม่

B003 กรุงเทพ

B007 พิษณุโลก

Employee (พนักงาน) Branch (สาขา)

Employee_Branch (รวมรายละเอยีดของพนักงานไว้ด้วยกนักบัรายละเอยีดของสาขา)

ตวัอย่างการออกแบบฐานข้อมูลทีด่ี

ตวัอย่างการออกแบบฐานข้อมูลทีจ่ะมปีัญหาของความซํ้าซ้อนตามมา

Page 37: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

37

ตวัอย่างปัญหาความซํ้าซ้อนในข้อมูล รีเลชั่น EMPLOYEE_BRANCE

ความผดิพลาดจากการเพิม่

oถ้าต้องการเพิม่พนักงานใหม่ ทีอ่ยู่สาขา B005

oจะต้องกรอก B005 และทีอ่ยู่สาขา คอื เชียงใหม่ เพิม่อกี

รหัสพนักงาน ชื่อ-สกลุ ตาํแหน่ง เงนิเดอืน รหัสสาขา ทีอ่ยู่

SG21 ชูชาติ สุขศรี ผูจ้ดัการ 30000 B005 เชียงใหม่

SG37 ศิริ ดวงเด่น ผูช้่วย 20000 B003 กรุงเทพ

SG14 ดวงใจ มีสุข เลขานุการ 20000 B003 กรุงเทพ

SG09 อจัฉรา เขียวแกว้ ผูจ้ดัการ 30000 B007 พิษณุโลก

Page 38: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

38

ตวัอย่างปัญหาความซํ้าซ้อนในข้อมูล รีเลชั่น EMPLOYEE_BRANCE

รหัสพนักงาน ชื่อ-สกลุ ตาํแหน่ง เงนิเดอืน รหัสสาขา ทีอ่ยู่

SG21 ชูชาติ สุขศรี ผูจ้ดัการ 30000 B005 เชียงใหม่

SG37 ศิริ ดวงเด่น ผูช้่วย 20000 B003 กรุงเทพ

SG14 ดวงใจ มีสุข เลขานุการ 20000 B003 กรุงเทพ

SG09 อจัฉรา เขียวแกว้ ผูจ้ดัการ 30000 B007 พิษณุโลก

ความผดิพลาดจากการเพิม่

ถ้าต้องการเพิม่สาขา จะมปีัญหาคอื ตารางนีม้ทีั้งข้อมูลพนักงานและข้อมูล

สาขาอยู่รวมกนั

หากจะเพิม่เฉพาะ รหัสสาขา และ ทีอ่ยู่ กไ็ม่ได้เพราะ รหัสพนักงาน จะมคี่า

ว่างไม่ได้เพราะเป็น Primary Key ของตาราง

ดงันั้นจะบันทกึได้กต็่อเมือ่มพีนักงานแล้ว

Page 39: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

39

ความผดิพลาดจากการลบข้อมูล

ถ้าลบข้อมูลหนึ่งแล้วส่งผลกระทบกบัข้อมูลอืน่ ทีต่้องถูกลบตาม

เช่น พนักงานรหัส SG21 ลาออก กล็บแถวนั้นออก

ข้อมูลสาขา B005 กจ็ะหายไปด้วย

ข้อผดิพลาดจากการเปลีย่นแปลง

ในกรณทีีต่้องการเปลีย่นแปลงข้อมูลบางตัวของสาขา

เช่น เปลีย่นทีอ่ยู่ของ B003 กต็้องเปลีย่นหลายที ่

ถ้าหากมพีนักงานสังกดัสาขานีห้ลายทีก่ต็้องไปตามแก้ทุก ๆ ที ่

ดงันั้นเราควรแยกตาราง Employee_Brance ออกเป็นสองตาราง คือ ตาราง

พนกังาน และตารางสาขา

Page 40: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

40

พนักงาน

สาขา

รหัสพนักงาน ชื่อ-สกลุ ตาํแหน่ง เงนิเดอืน รหัสสาขา

SG21 ชูชาติ สุขศรี ผูจ้ดัการ 30000 B005

SG37 ศิริ ดวงเด่น ผูช้่วย 20000 B003

SG14 ดวงใจ มีสุข เลขานุการ 20000 B003

SG09 อจัฉรา เขียวแกว้ ผูจ้ดัการ 30000 B007

รหัสสาขา ทีอ่ยู่

B005 เชียงใหม่

B003 กรุงเทพ

B007 พิษณุโลก

Page 41: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

ฟังก์ชั่นการขึน้ต่อกนั (Functional Dependency : FD)

ถ้าให้ X และ Y เป็น Attribute ใน Relation ใดๆ แทนด้วย

R(X,Y) Attribute Y เป็น จะถูกเรียกว่ามีฟังก์ชันการขึน้ต่อ

กันกับแอททริบวิต์ X กต็่อเมื่อ แต่ละค่าที่ไม่ซํา้กันของ

แอททริบวิต์ X มีข้อมูลของ Y ที่เกี่ยวข้องกับ X เพยีง 1 ค่า

เขียนแทนด้วย สัญลักษณ์ X Y

41

Page 42: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

42

EmployeeNo Name Position

S01 ฉัตรชัย มีสมบัติ Manager

S02 เอกชัย ใจดี Manager Assistant

S03 มนีรัตน์ เจริญสุข Manager

S04 ขวญัชัย ใจเพชร Manager Assistant

S05 มานพ เกตุแก้ว Staff

S06 ดวงกมล ทพิย์เทพ Staff

ตวัอย่าง

EmployeeNo Position

Page 43: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

ตวัอย่าง A) employeeNo Position

B) Position (not) employeeNo

43

EmployeeNo Position

employeeNo S21 Manager

Position EmployeeNo

Manager

employeeNo S41

employeeNo S21

A

B

การขึน้ต่อกนั ค่า X จะต้องกาํหนดค่า Y ได้ 1:1

Page 44: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

1) Complete dependencies การขึน้ต่อกนัอย่างสมบูรณ์

แอททริบิวตท์ี่ไม่ใช่คียห์ลกั ขึ้นต่อ แอททริบิวตห์รือกลุ่มของแอททริบิวตท์ี่

เป็นคียห์ลกั

ตวัอยา่ง ตารางที่มีแอทริบิวตค์่าเดียวทาํหนา้ที่เป็นคียห์ลกั คือ หมายเลขบตัร

ประชาชน

หมายเลขบตัรประชาชน ชื่อเจา้ของบตัร

ชนิดของฟังก์ชั่นการขึน้ต่อกนั ( Functional Dependency :FD)

44

หมายเลขบตัรประชาชน ชื่อเจ้าของบัตร

3440100634931 กนกวรรณ พว่งพงษ์

3437283420343 ชาตชิาย เตชะวงศ์

2938742039485 กิ่งกาญ เดชาทรัพย์

Page 45: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

45

ตัวอย่าง ตารางที่มีแอทริบิวต์หลายตัวขึ้นกบัคีย์หลักตัวเดียว

หมายเลขบตัรประชาชน ชื่อเจา้ของบตัร,วนัเกิด,วนัทีท่ําบตัร

ชนิดของฟังก์ชั่นการขึน้ต่อกนั ( Functional Dependency :FD)

หมายเลขบตัรประชาชน ชื่อเจ้าของบัตร วันเกดิ วันที่ทาํบตัร

3440100634931 กนกวรรณ พว่งพงษ์ 27/03/2520 28/04/2553

3437283420343 ชาตชิาย เตชะวงศ์ 23/06/2522 25/02/2553

2938742039485 กิ่งกาญ เดชาทรัพย์ 21/04/2525 19/0125/52

Page 46: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

46

ตวัอย่าง ตารางที่มีแอทริบวิหลายตวัรวมกนัเป็นคีย์หลัก คือ รหัสนักศึกษา รหัสวิชา

ชนิดของฟังก์ชั่นการขึน้ต่อกนั ( Functional Dependency :FD)

รหสันักศึกษา รหสัวชิา เกรด

520014001 S001 A

520014001 S002 B

520014002 S001 C

520014002 S002 A

ตารางการลงทะเบียน

รหสันักศึกษา,รหสัวชิา เกรด

Page 47: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

2) Partial Dependency (การขึ้นต่อกนับางส่วน)

เกิดขึ้นเมื่อคียห์ลกัประกอบดว้ยหลาย Attribute รวมกนั

เมื่อแอตทริบิวตบ์างส่วนของคียห์ลกั สามารถไประบุค่าแอตทริบิวตต์วัอื่น ๆ ที่

ไม่ใช่คียห์ลกัของรีเลชัน่ได ้

รหสันกัศึกษา รหสัวิชา เกรด ชื่อวิชา

Partial Dependency

รหสันักศกึษา, รหสัวชิา เกรด , ชื่อวชิา

รหสัวชิา ชื่อวชิา

ชนิดของฟังก์ชั่นการขึน้ต่อกนั ( Functional Dependency :FD)

47

Page 48: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

48

ตวัอย่างฟังก์ชั่นการขึน้ต่อกนัแบบ Partial

รหัสนักศึกษา รหัสวชิา เกรด ชื่อวชิา

534267001 F01 A การเขยีนโปรแกรม

534267001 F02 B การออกแบบฐานข้อมูล

534267002 F01 D การเขยีนโปรแกรม

534267002 F02 A การออกแบบฐานข้อมูล

534267003 F01 A การเขยีนโปรแกรม

534267003 F02 C การออกแบบฐานข้อมูล

Page 49: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

3 Transitive Dependency เกดิขึน้เมือ่ Attribute ทีไ่ม่ใช่ Primary Key ไปขึน้อยู่

กบั Attribute อืน่ทีไ่ม่ใช่ Primary Key ในรีเลชั่นนั้น ๆ

เลขประจาํตวั ชื่อ สกุล ที่อยู่ ตาํแหน่ง รถประจาํตาํแหน่ง

01 ฉัตรชัย มสีมบัติ กรุงเทพ ผู้จัดการ BMW

02 เอกชัย ใจดี นนทบุรี ผู้ช่วยผู้จัดการ Honda

03 มนีรัตน์ เจริญสุข เชียงใหม่ ผู้จัดการ BMW

04 ขวญัชัย ใจเพชร ราชบุรี ผู้ช่วยผู้จัดการ Honda

คาํอธิบาย เลขประจาํตวั เป็นคยี์หลกั (Primary Key) ของตาราง

เลขประจาํตวั ชื่อสกลุ, ทีอ่ยู่, ตาํแหน่ง

ตาํแหน่ง รถประจาํตาํแหน่ง

ชนิดของฟังก์ชั่นการขึน้ต่อกนั (Functional Dependency : FD)

49

Page 50: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Normalization คือ กระบวนการปรับปรุงโครงสร้างขอ้มูลของฐานขอ้มูลที่มีความ

ซํ้ าซอ้นใหอ้ยูใ่นรูปแบบที่เป็นบรรทดัฐาน (Normal Form)

การนอร์มลัไลเซชนัมีไดถ้ึง 5 ระดบั ในระดบัที่ 3 กจ็ดัวา่เพียงพอสาํหรับการ

ออกแบบฐานขอ้มูลในปัจจุบนั

1NF - กาํจดั repeating group

(กาํจดักลุ่มของขอ้มลูที่มีความซํ้ าซอ้น)

2NF - กาํจดั partial dependency

(กาํจดัการขึ้นต่อกนับางส่วน)

3NF - กาํจดั transitive dependency

(กาํจดัการขึ้นต่อกนัของแอตทริบิวทท์ี่ไม่ใช่คียห์ลกั)

นอร์มลัไลซ์เซชั่น (Normalization)

50

Page 51: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

51

Page 52: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

First Normal Form (1NF)

ทุก Attribute ในแต่ละ record จะเป็น single value ไม่ม ีค่าของกลุ่ม ข้อมูลทีซ่ํ้า

กนั (Repeating Group)

ข้อมูลทุกแถว (Tuple) ต้องมคี่าไม่ซํ้ากนั

รหัสนักศึกษา ชื่อ นามสกลุ รหัสวชิาทีล่งทะเบียน

001 สมชาย สมใจนึก 204-101

204-204

204-205

002 ธีรชาย บุญมาศ 204-102

204-204

ตารางทีม่ลีกัษณะข้อมูลเป็น Repeating group

Repeating Group

52

Page 53: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ
Page 54: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Second Normal Form (2NF)

1. ต้องเป็น First Normal Form (1NF) มาก่อน

2. ต้องไม่ม ีPartial Dependency (การขึน้ต่อกนับางส่วน)

สรุปกค็อื นอร์มลัไลเซชันระดบัที ่ 2 (Second normal form : 2NF) เป็น

การขจัดแอตตริบวิที่ ไม่ขึน้กบัทั้งส่วนของคยี์หลกั ออกไป เพือ่ให้แอตต

ริบิวอืน่ทั้งหมดขึน้ตรงกบัส่วนทีเ่ป็นคยี์หลกัทั้งหมดเท่านั้น

54

Page 55: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

55

ตวัอย่างตารางที่ Partial Dependency (การขึน้ต่อกันบางส่วน)รหัสนักศึกษา รหัสวชิา เกรด ชื่อวชิา

534267001 F01 A การเขยีนโปรแกรม

534267001 F02 B การออกแบบฐานข้อมูล

534267002 F01 D การเขยีนโปรแกรม

534267002 F02 A การออกแบบฐานข้อมูล

534267003 F01 A การเขยีนโปรแกรม

534267003 F02 C การออกแบบฐานข้อมูล

รหสันกัศึกษา รหสัวิชา เกรด ชื่อวิชาPartial Dependency

รหสันักศกึษา, รหสัวชิา เกรด ,ชื่อวชิา

รหสัวชิา ชื่อวชิา

Page 56: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Second Normal Form (2NF)

วธิีขจดัปัญหา

1) ต้องสร้างตารางเพิม่

2) นําคอลมัย์ทีม่ปีัญหาไปใส่ในตารางทีส่ร้างเพิม่

3) กาํหนดคยี์หลกัให้กบัตารางทีส่ร้างใหม่

4) แอททริบิวต์ใดในตารางเดมิ เมือ่นําไปใส่ในตารางใหม่ ให้ตดัออกจาก

ตารางเดมิ ยกเว้น ส่วนของคยี์หลกั คงไว้ในตารางเดมิ

56

Page 57: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

57

ตารางนีเ้มื่อทาํให้อยู่ใน

รูป 2 NF จะได้ 2

ตารางดงันี ้

รหัสนักศึกษา รหัสวชิา เกรด ชื่อวชิา

534267001 F01 A การเขยีนโปรแกรม

534267001 F02 B การออกแบบฐานข้อมูล

534267002 F01 D การเขยีนโปรแกรม

534267002 F02 A การออกแบบฐานข้อมูล

534267003 F01 A การเขยีนโปรแกรม

534267003 F02 C การออกแบบฐานข้อมูล

รหัสนักศึกษา รหัสวชิา เกรด

534267001 F01 A

534267001 F02 B

534267002 F01 D

534267002 F02 A

534267003 F01 A

534267003 F02 C

รหัสวชิา ชื่อวชิา

F01 การเขยีนโปรแกรม

F02 การออกแบบฐานข้อมูล

ตารางผลการเรียน

ตารางผลการเรียน ตารางวิชา

Page 58: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

58

รหัสผู้เข้า

อบรม

รหัสครอส

อบรม

ชื่อผู้เข้าอบรม ชื่อครอสอบรม ผลการทดสอบ

0001 TR01 นายเอ ใจดี การซ่อมไฟฟ้า ผา่น

0001 TR05 นายเอ ใจดี การซ่อมตูเ้ยน็ ผา่น

0002 TR03 นางบี ใจกลา้ การทาํอาหาร ไม่ผา่น

0002 TR09 นางบี ใจกลา้ การเลี้ยงเดก็ ผา่น

0003 TR01 นายรวย มีเงิน การซ่อมไฟฟ้า ผา่น

0003 TR05 นายรวย มีเงิน การซ่อมตูเ้ยน็ ไม่ผา่น

ตารางผลการอบรม

ให้นักศกึษานอมัลไลซ์ตารางนีใ้ห้อยู่ในรูปแบบ 2NF

Page 59: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Third Normal Form (3NF)

1.Relation นั้นจะตอ้งมีคุณสมบตัิ 2NF

2.ตอ้งไม่มีความสมัพนัธ์ระหวา่ง Non-key Attribute หรือ

ไม่มี Transitive Dependency

สรุป : แอททริบิวตท์ี่ไม่ใช่คียห์ลกั ตอ้งไม่ขึ้นต่อกนัเอง

59

Page 60: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

Third Normal Form (3NF)

วธิขีจดัปญัหา

1. สรา้งตารางเพิม่

2. นาํแอททรบิวิตท์ีม่ปีญัหามาใส่ในตารางใหม่

3. กาํหนดคยีห์ลกั

4. แอททรบิวิตท์ีย่า้ยจากตารางเดมิไปใส่ในตารางใหมใ่หต้ดัออก

จากตารางเดมิ

5. นาํคยีห์ลกัในขอ้ 3 ไปใส่ในตารางเดมิ

60

Page 61: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

61

คียห์ลกัของตารางนี้คือ รหสัพนกังาน

จากตารางยงัมีฟังกช์ัน่การขึ้นต่อกนัแบบ Transitive Dependency อยู ่คือ

รหสัแผนก ซึ่งไม่ใช่คียห์ลกัของตาราง แต่สามารถระบุค่า ชื่อแผนก ได ้คือ ถา้รู้

รหสัแผนก กจ็ะรู้ชื่อแผนก

จากตารางข้างบน ทาํให้อยู่ในรูป 3 NF จะได้ 2 ตารางข้างล่างนี้

รหัสพนักงาน ชื่อสกลุ รหัสแผนก ชื่อแผนก เงนิเดอืน

P001 นพเกศ แกว้ใส A001 บญัชี 25000

P002 วารุณี รวดเร็ว F001 การเงิน 30000

รหสัแผนก ชื่อแผนก

A001 บญัชี

F001 การเงิน

รหสัพนักงาน ชื่อสกุล เงนิเดอืน

P001 นพเกศ แก้วใส 25000

P002 วารุณี รวดเร็ว 30000

รหสัแผนก

A001

F001

Page 62: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

สรุป Normalization

1NF ทุกแอททริบิวตใ์นแต่ละแถวมีค่าของขอ้มูลเพียงค่าเดียว

2NF รีเลชนันั้นตอ้งไม่มีความสมัพนัธ์ระหวา่งแอททริบิวตแ์บบบางส่วน

(แอททริบิวตท์ุกตวัตอ้งขึ้นกบัคียห์ลกัทุกตวั ไม่ขึ้นอยูก่บัตวัใดตวัหนึ่ง)

3NF ทุกแอททริบิวตท์ี่ไม่ใช่คียห์ลกัไม่มีคุณสมบตัิในการกาํหนดค่าของ

แอททริบิวตอ์ื่น

62

Page 63: บทที่ 3 การออกแบบฐานข้อมูล Database Design · 2017-07-03 · 3. การออกแบบฐานข. ้อม. ูลระดับตรรกะ

63

แบบฝึกหัด

เลขที่ใบส ัง่

ซื้ อ

วนัที่ซื้อ รหสัลูกคา้ ชื่อผูส้ ัง่ รหสัสนิคา้ ชื่อสนิคา้ จาํนวนที่ซื้อ ราคาต่อ

หน่วย

OR001 02/09/2552 C001 เดวดิ AB12 ตูเ้ยน็ 4 4000

CD01 พดัลม 3 2000

PC09 แอร ์ 4 6000

OR002 02/09/2552 C005 ไมเคลิ TP01 เตาอบ 3 3000

CD01 พดัลม 2 2000

ให้นักศึกษาแปลงตารางต่อไปนีใ้ห้อยู่ในรูป NF1-NF3 โดยละเอยีด

การสั่งสินค้า