ระบบฐานข้อมูลการซื้อขายสินค้าของสหกรณ์...
TRANSCRIPT
สหกรณ์แห่งหนึ่งต้องการพัฒนาระบบฐานข้อมูลการซื้อขายสินค้าโดยมีรายละเอียด
ตารางดังนี ้
1. ตารางข้อมูลสมาชิก ประกอบด้วย รหัสสมาชิก, ชื่อสมาชิก, วันที่เริ่มเป็นสมาชิก, อายุ
การเป็นสมาชิก
2. ตารางข้อมูลประเภทสมาชิก ประกอบด้วย รหัสประเภทสมาชิก, ชื่อประเภท สมาชิก,
เปอร์เซนต์ส่วนลด
3. ตารางข้อมูลสินค้า ประกอบด้วย รหัสสินค้า, ชื่อสินค้า, ราคาสินค้า
4. ตารางข้อมูลประเภทสินค้า ประกอบด้วย รหัสประเภทสินค้า, ชื่อประเภทสินค้า
5. ตารางข้อมูลการซื้อสินค้า มีข้อมูลเพิ่มเติม วันที่ซื้อสินค้า, จ านวนที่ซื้อ
6. ตารางข้อมูลการสะสมแต้ม มีข้อมูลเพิ่มเติม จ านวนแต้มที่สะสมเพิ่ม
ระบบฐานขอ้มูลการซือ้ขายสนิคา้ของสหกรณ์
ความต้องการของระบบ มีดังนี้
- สหกรณ์นี้มีสมาชิกจ านวนมาก และมีประเภทสมาชิกอยู่ 2 แบบ
- สมาชิกแต่ละคนจะต้องเป็นประเภทสมาชิกแบบใดแบบหนึ่ง แต่ประเภทสมาชิก
หนึ่ง ๆ สามารถมีสมาชิกได้หลายคน
- สมาชิกสามารถซื้อสินค้าของสหกรณ์ในราคาพิเศษได้ซ่ึงแล้วแต่ประเภทสมาชิก
- สินค้าแต่ละชนิดต้องสังกัดอยู่ในประเภทสินค้าใดสินค้าหนึ่ง แต่ประเภทสินค้า
หนึ่ง ๆ สามารถมีสินค้าได้หลายสินค้า
- ในการซื้อสินค้าของสมาชิก สมาชิกสามารถสะสมแต้มได้
การวิเคราะห์หาความสัมพันธ์อีอาร์ไดอะแกรม
- สหกรณ์นี้มีสมาชิกจ านวนมาก และมีประเภทสมาชิกอยู่ 2 แบบ
- สมาชิกแต่ละคนจะต้องเป็นประเภทสมาชิกแบบใดแบบหนึ่ง แต่ประเภทสมาชิกหนึ่ง ๆ
สามารถมีสมาชิกได้หลายคน สามารถเขียนแผนภาพอีอาร์ไดอะแกรม ได้ดังนี้
สมาชิก เป็น ประเภท
สมาชิก (1,1) (1, 2)
1 M
การวิเคราะห์หาความสัมพันธ์อีอาร์ไดอะแกรม (ต่อ)
- สมาชิกสามารถซื้อสินค้าของสหกรณ์ในราคาพิเศษได้ซ่ึงแล้วแต่ประเภทสมาชิก
สินค้า ซื้อ สมาชิก (1, N)
M M
(1, N)
การวิเคราะห์หาความสัมพันธ์อีอาร์ไดอะแกรม (ต่อ)
- สินค้าแต่ละชนิดต้องสังกัดอยู่ในประเภทสินค้าใดสินค้าหนึ่ง แต่ประเภทสินค้าหนึ่ง ๆสามารถมีสินค้าได้หลายสินค้า
สินค้า อยู ่ประเภท
สินค้า (0,N)
1
(1,1)
M
การวิเคราะห์หาความสัมพันธ์อีอาร์ไดอะแกรม (ต่อ)
- ในการซื้อสินค้าของสมาชิก สมาชิกสามารถสะสมแต้มได้
สินค้า ซื้อ สมาชิก (1, N)
M M
(1, N)
ภาพความสัมพันธ์อีอาร์ไดอะแกรมระบบฐานข้อมูลการซื้อขายสินค้าของสหกรณ์
รหัสสมาชิก ชื่อสมาชิก นามสกุล
สมาชิก
รหัส
ประเภท
ส่วนลด
อัตรา
ประเภท
ส่วนลด
รหัสใบสั่ง
ซ้ือ วันที่สั่งซื้อ
จ านวน
เงินรวม
สั่งซื้อ
รหัสสินค้า ชื่อสินค้า ราคาสินค้า
ต่อหน่วย จ านวนที่ซื้อ
M001 นาสมชาย ยอดด ี DT01 10% O001 01/01/2556 2500 P005 ดินสอ 50 5
P010 กระดาษ
ปอนต ์65 12
P015 ยางลบ 10 100
M005 นางสมใจ ใจดี DT03 15% O006 10/01/2556 1200 P001 ปากกา 25 150
P005 ดินสอ 25 5
P012 ไส้ดินสอ 20 100
การท านอร์มัลไลเซชัน
การท านอร์มัลไลเซชัน : 1NF ก าจัด Repeating Groups
รหัสสมาชิก ชื่อสมาชิก นามสกุล
สมาชิก
รหัส
ประเภท
ส่วนลด
อัตรา
ประเภท
ส่วนลด
รหัสใบสั่ง
ซ้ือ วันที่สั่งซื้อ
จ านวน
เงินรวม
สั่งซื้อ
รหัสสินค้า ชื่อสินค้า ราคาสินค้า
ต่อหน่วย จ านวนที่ซื้อ
M001 นาสมชาย ยอดด ี DT01 10% O001 01/01/2556 2500 P005 ดินสอ 50 5
M001 นาสมชาย ยอดด ี DT01 10% O001 01/01/2556 2500 P010 กระดาษ
ปอนต ์65 12
M001 นาสมชาย ยอดด ี DT01 10% O001 01/01/2556 2500 P015 ยางลบ 10 100
M005 นางสมใจ ใจด ี DT03 15% O006 10/01/2556 1200 P001 ปากกา 25 150
M005 นางสมใจ ใจดี DT03 15% O006 10/01/2556 1200 P005 ดินสอ 25 5
M005 นางสมใจ ใจดี DT03 15% O006 10/01/2556 1200 P012 ไส้ดินสอ 20 100
• มีการก าหนดแอตทริบิวตท์ี่เป็นคีย ์• ต้องไม่มีรพีีทติ้งกรุ๊ป แต่ละแถวหรือคอลัมน์จะมีค่าได้เพียง 1 ค่าเท่านั้น • แอตทริบิวตท์ุกตัวต้องขึ้นอยู่กับคีย์หลัก
รหัสสมาชิก รหัสใบสั่งซื้อ
ชื่อสมาชิก
นามสกลุสมาชิก
รหสัประเภทส่วนลด
อตัราประเภทส่วนลด
วันที่สั่งซื้อ รหสัสินคา้
จ านวนเงนิรวมสั่งซื้อ
ชื่อสนิค้า
ราคาสนิค้าต่อหน่วย
จ านวนที่ซื้อ
ปัญหาที่เกิดกับโครงสร้างของตารางหลังจากที่ท า 1NF แล้ว คือการมีสิ่งที่เรียกว่า พาร์เชียลดเีพนเดนซี (Partial Dependency)
พาร์เชียลดีเพนเดนซี (Partial Dependency) หมายถึง การที่มีแอตทริบิวตบ์างแอตทริบิวต์ ที่ขึ้นอยู่กับเพียงบางส่วนของคีย์หลักเท่านั้น
รหัสสมาชิก -> ชื่อสมาชิก,นามสกุลสมาชิก,รหัสประเภทส่วนลด,อัตราประเภทส่วนลด
รหัสใบสั่งซื้อ -> วันทีส่ั่งซื้อ,จ านวนเงินรวมสั่งซื้อ
รหัสสินค้า -> ชื่อสินค้า,ราคาสินค้าต่อหน่วย
รหัสสมาชิก รหัสใบสั่งซื้อ
ชื่อสมาชิก นามสกุลสมาชิก
รหัสประเภทส่วนลด
อัตราประเภทส่วนลด
วันท่ีสั่งซื้อ รหัสสินค้า
จ านวนเงินรวมสั่งซื้อ
ชื่อสินค้า
ราคาสินค้าต่อหน่วย
จ านวนท่ีซื้อ
การท านอร์มัลไลเซชัน : 2NF
วิธีการก าจัดพาร์เชียลดีเพนเดนซี ท าได้ดังนี ้
1. เขียนแต่ละองค์ประกอบของคีย์หลักที่มีทั้งหมดอยู่คนละบรรทัด และ
เขียนคีย์หลักเดิมในบรรทัดสุดท้าย
- รหัสสมาชิก
- รหัสใบสั่งซื้อ
- รหัสสินค้า
- รหัสสมาชิก , รหัสใบสั่งซื้อ , รหัสสินค้า
วิธีการก าจัดพาร์เชียลดีเพนเดนซี ท าได้ดังนี ้(ต่อ)
2. แต่ละองค์ประกอบจะกลายเป็นคีย์หลักในรีเลชันใหม่
- รหัสสมาชิก >> รีเลชันชื่อ member
- รหัสใบสั่งซื้อ >> รีเลชันชื่อ order
- รหัสสินค้า >> รีเลชันชื่อ goods
- รหัสสมาชิก , รหัสใบสั่งซื้อ , รหัสสินค้า >> รีเลชันชื่อ trade
วิธีการก าจัดพาร์เชียลดีเพนเดนซี ท าได้ดังนี้ (ต่อ)
3. เขียนแอตทริบิวตท์ี่ขึ้นอยู่กับแต่ละคีย์หลักลงไป
- member (รหัสสมาชิก , ชื่อสมาชิก,นามสกุลสมาชิก,รหัสประเภทส่วนลด
,อัตราประเภทส่วนลด)
- order (รหัสใบสั่งซื้อ ,วันที่สั่งซ้ือ,จ านวนเงินรวมสั่งซื้อ)
- goods (รหัสสินค้า ,ชื่อสินค้า,ราคาสินค้าต่อหน่วย)
- trade (รหัสสมาชิก , รหัสใบสั่งซื้อ , รหัสสินค้า , จ านวนท่ีซื้อ)
รหัสสมาชิก
ชื่อสมาชิก
นามสกุลสมาชิก
รหัสประเภทส่วนลด
อัตราประเภทส่วนลด
member
order รหัสใบสั่งซ้ือ วันที่สั่งซ้ือ
จ านวนเงินรวมสั่งซื้อ
goods รหัสสินค้า ชื่อสินค้า
ราคาสินค้าต่อหน่วย
trade จ านวนที่ซ้ือ
– ตรวจสอบดูในรายละเอียดเราจะพบว่า อัตราประเภทส่วนลด เป็นฟังก์ชันนัลดิเพนเดนซีกับรหัสประเภทส่วนลด คือ ถ้าเรารู้ รหัสประเภทส่วนลด เราก็จะทราบ อัตราประเภทส่วนลด
– เราสามารถเรียกได้ว่า รหัสประเภทส่วนลด และ อัตราประเภทส่วนลด มีฟังก์ชันนัลดีเพนเดนซีแบบทรานซิทีฟดีเพนเดนซีอยู่ในตาราง member
การท านอร์มัลไลเซชัน : 3NF
จากความผิดปกติหลังจากท า 2NF คืออาจจะได้ความสัมพันธ์แบบทรานซิทีฟดิเพนเดนซ ี
นิยามของ 3NF มีดังนี้
- รีเลชันต้องเป็น 2NF
- รีเลชันนั้นต้องไมม่ีทรานซทิีฟดิเพนเดนซ ี
วิธีการก าจัดทรานซทีิฟดีเพนเดนซี ท าได้ดังนี้
- แยกข้อมูลทีเ่ป็นทรานซทิีฟดิเพนเดนซีออกมาสร้างรีเลชันใหม่
- ให้คงแอตทริบิวตท์ี่จะท าหน้าที่เป็นคีย์นอกไว้ที่รีเลชันเดิม
รหัสประเภทส่วนลด
รหัสสมาชิก
ชื่อสมาชิก
นามสกุลสมาชิก
รหัสประเภทส่วนลด
อัตราประเภทส่วนลด
member
อัตราประเภทส่วนลด
รหัสสมาชิก
ชื่อสมาชิก
นามสกุลสมาชิก
รหัสประเภทส่วนลด
member
order รหัสใบสั่งซ้ือ วันที่สั่งซ้ือ
จ านวนเงินรวมสั่งซ้ือ
goods รหัสสินค้า ชื่อสินค้า
ราคาสินค้าต่อหน่วย
trade จ านวนที่ซ้ือ
discount รหัสประเภท
ส่วนลด อัตราประเภทส่วนลด