06.1 logical database design[transform erd into relations]

17
การออกแบบฐานข้อมูลเชิงตรรกะ (Logical Database Design) http://www.flickr.com/photos/aboyandhisbike/

Upload: opas-kaewtai

Post on 10-Jul-2015

1.123 views

Category:

Education


2 download

TRANSCRIPT

Page 1: 06.1 logical database design[transform erd into relations]

การออกแบบฐานข้อมูลเชิงตรรกะ (Logical Database Design)

http://www.flickr.com/photos/aboyandhisbike/

Page 2: 06.1 logical database design[transform erd into relations]

การแปลงไดอะแกรมอีอาร์เป็นรีเลชั่น

1. Map Strong Entities

2. Map Weak Entities

3. Map Binary Relationship• ความสัมพันธ์แบบหน่ึงต่อกลุ่ม• ความสัมพันธ์แบบหน่ึงต่อหน่ึง• ความสัมพันธ์แบบกลุ่มต่อกลุ่ม

4. Map Unary Relationship

5. Map Ternary Relationship

6. Map Associative Entity

7. Map Supertype/Subtype

แบ่งออกเป็น 7 ขั้นตอน โดยในแต่ละข้ันตอนไม่จำเป็นต้องทำพร้อมกันตามลำดับ บางขั้นตอนสามารถทำไปพร้อมกัน หรืออาจมีบางขั้นตอนไม่ถูกทำก็ได้

โดยมีรายละเอียดของขั้นตอนดังน้ี

Page 3: 06.1 logical database design[transform erd into relations]

1. Map Strong Entities

● สร้างรีเลชั่นโดยใช้ชื่อของเอนทิตี้เป็นชื่อของรีเลชั่น และรีเลชั่นประกอบไปด้วยแอตทริบิวของเอนทิตี้น้ันๆ

● Composite Attribute ให้เก็บเฉพาะ Simple Attribute ทีป่ระกอบเป็น Composite Attribute น้ันๆ● เช่น Composite Attribute ช่ือ stdName ท่ีประกอบไปด้วยแอตทริบิวต์ย่อย

frstName และ lastName ในกรณีนี้จะเก็บแต่ frstName และ lastName ส่วน stdName ทำการตัดท้ิงได้

● Derived Attribute อาจตัดทิ้ง เพราะสามารถคำนวณได้จากแอตทริบิวต์อื่นๆ● Multi-valued Attribute ต้องแยกเป็นอีกหน่ึงรีเลชั่น

Page 4: 06.1 logical database design[transform erd into relations]

1. Map Strong Entities

STUDENT(stdID, frtName, lastName, stdBirthDate)STUDENT_TEL(stdID, stdTel)

Page 5: 06.1 logical database design[transform erd into relations]

2. Map Weak Entities

● สร้างรีเลชั่นของ Weak Entity ที่ประกอบไปด้วย Simple Attribute ทั้งหมดของตนเอง

● คัดลอกคีย์หลัก (Primary Key) ของ Strong Entity มาวางบนรีเลชั่นน้ี เพื่อทำหน้าที่เป็นคีย์นอก (Foreign Key)

● คีย์หลักของของรีเลชั่นน้ีจะประกอบด้วยคีย์หลักของ Weak Entity รวมกับคีย์หลักของ Strong Entity

Page 6: 06.1 logical database design[transform erd into relations]

2. Map Weak Entities

EMPLOYEE(empID, empName, empAddr)DEPENDENCE(depName, empNo, depAddr, depTel)

Page 7: 06.1 logical database design[transform erd into relations]

3. Map Binary Relationship

ความสัมพันธ์ระหว่างสองเอนทิตี้น้ััน อาจเป็นความสัมพันธ์ดังน้ี● ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (1:M) ให้แปลงเอนทิตี้ที่เป็น 1-side เป็น รีเลชั่น

ตามปกติ แต่เอนทิตี้ที่เป็น M-side ให้คัดลองคีย์หลักของเอนทิตี้ 1-side มาวางบนรีเลชั่นเพื่อเป็นคีย์นอกด้วย

● ความสัมพันธ์แบบหนึ่งต่อหนึ่ง (1:1) ให้รวมทั้งสองเอนทิตี้เป็นหน่ึงรีเลชั่น โดยเลือกคีย์หลักของเอนทิตี้ใดเอนทิตี้หน่ึงเป็นคียหลักของรีเลชั่น

● ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (M:N) สร้างรีเลชั่นของ เอนทิตี้ M-side และ N-side แล้วสร้างรีเลชั่นของความสัมพันธ์แล้ววางแอตทริบิวต์ที่อยู่บนความสัมพันธ์ (ถ้ามี) จากน้ันคัดลอกคีย์หลักของทั้งเอนทิตี้ M และ N side มาวางที่รีเลชั่นความสัมพันธ์ แล้วเลือกให้ทั้งสองเป็นคีย์หลักของรีเลชั่นน้ี

Page 8: 06.1 logical database design[transform erd into relations]

ความสัมพันธ์แบบหน่ึงต่อกลุ่ม (1:M)

CUSTOMER(custID, custName, custAddr)CAR(carNo, modelCode, carYear, custID)

Page 9: 06.1 logical database design[transform erd into relations]

ความสัมพันธ์แบบหน่ึงต่อหน่ึง (1:1)

EMPLOYEE(custID, custName, custAddr, carNo, modelCode, carYear)

Page 10: 06.1 logical database design[transform erd into relations]

ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (M:N)

CUSTOMER(custID, custName, custAddr)CAR(carNo, modelCode, carYear, custID)CUST_CAR(custID, carNo)

Page 11: 06.1 logical database design[transform erd into relations]

4. Map Unary Relationship

● สามารถทำได้เช่นเดียวกับการแปลงไดอะแกรมอีอาร์ที่เป็นความสัมพันธ์ระหว่างสองเอนทิตี้ให้เป็นรีเลชั่น

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

Page 12: 06.1 logical database design[transform erd into relations]

4. Map Unary Relationship

EMPLOYEE(empNo, empName, empAddr, mngrNo, mngrName, mngrAddr)

Page 13: 06.1 logical database design[transform erd into relations]

5. Map Ternary Relationship

● ได้อะแกรมที่มีความสัมพันธ์ระหว่างสามเอนทิตี้ควรแปลงให้เป็น Associative Entity เพื่อให้ง่ายต่อการแปลง

Page 14: 06.1 logical database design[transform erd into relations]

6. Map Associative Entity

● สร้างรีเลชั่นสำหรับเอนทิตี้ที่เป็น Strong Entity● สร้างรีเลชั่นที่เป็น Associative Entity โดยใช้แอตทริบิวต์ทั้งหมดของเอนทิตี้น้ี● คัดลอกคีย์หลักของเอนทิตี้ที่เป็น Strong Entity มาวางบนรีเลชั่น เพื่อทำหน้าที่

เป็นคีย์นอก (Foreign Key)● ส่วนคีย์หลักของรีเลชั่นจะประกอบด้วยคีย์หลักของเอนทิตี้ที่เป็น Strong Entity

รวมกับคีย์หลักของ Associative Entity (ถ้าม)ี

Page 15: 06.1 logical database design[transform erd into relations]

6. Map Associative Entity

CUSTOMER(custNo, custName, custAddr)VENDOR(vendorNo, vendorName, vendorAddr)SHIPMENT(shipmentNo, custNo, vendorNo, shipmentDate)

Page 16: 06.1 logical database design[transform erd into relations]

7. Map Supertype/Subtype

● สร้างรีเลชั่นสำหรับเอนทิตี้ที่เป็น Supertype● สร้างรีเลชั่นสำหรับเอนทิตี้ที่เป็น Subtype โดยประกอบด้วยแอตทริบิวต์● คัดลอกคีย์หลักของเอนทิตี้ Supertype มาวางที่รีเลชั่นของ Subtype เพื่อเป็นคีย์

หลัก โดยต้องเปลี่ยนชื่อแอตทริบิวต์เพื่อไม่ให้ซ้ำกับคีย์หลักของรีเลชั่น Supertype

Page 17: 06.1 logical database design[transform erd into relations]

7. Map Supertype/Subtype

STAFF(staffNo, staffName, staffPosition, staffSalary)MANAGER(MNGstaffNo, mngStart, mngBonus)SALES(SALstaffNo, salesCar, salesAmt)SECRETARY(SCRstaffNo, scrType)