การทำ supertype & subtype



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

07 มี.ค. 63 , 12:02:36
อ่าน 375 ครั้ง

thanapol.w

การทำ supertype & subtype
« เมื่อ: 07 มี.ค. 63 , 12:02:36 »
สวัสดีรับ อยาก ทราบ การแปลงสร้างตาราง กำหนดความสำพันธุ์ครับ
supertype & subtype
ทั้งแบบ overlap
disjoin

 

11 มี.ค. 63 , 11:23:16
ตอบกลับ #1

thanapol.w

: การทำ supertype & subtype
« ตอบกลับ #1 เมื่อ: 11 มี.ค. 63 , 11:23:16 »

อันนี้เป็นแบบ  overlap กำหนดถูกหรือไม่  แล้วถ้าต้องการให้เป็น disjoin ต้องกำหนดอย่างไรครับ

 

11 มี.ค. 63 , 13:28:29
ตอบกลับ #2

สันติสุข

: การทำ supertype & subtype
« ตอบกลับ #2 เมื่อ: 11 มี.ค. 63 , 13:28:29 »
Overlaping กับ Disjoint มันคืออะไรครับ ช่วยอธิบายที
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

11 มี.ค. 63 , 13:35:17
ตอบกลับ #3

UnKnown

: การทำ supertype & subtype
« ตอบกลับ #3 เมื่อ: 11 มี.ค. 63 , 13:35:17 »
เนื้อหาบทเรียนจากมหาวิทยาลัยบูรพาครับ > https://staff.informatics.buu.ac.th/~komate/886301/DB-Chpater-5.pdf link

อ้างถึง
5.1.5 disjoint constaint และ overlapping constaint
เอ็นทิตี้ supertype หนึ่งๆจะสามารถมีความเกี่ยวเนื่องกับเอ็นทิตี้ subtype ใน 2 รูปแบบ คือ แบบ
disjoint หรือแบบ overlapping ตัวอย่างเช่น ธุรกิจสายการบินทำการว่าจ้างพนักงานในตำแหน่งนักบิน ช่าง
ซ่อมบำรุง และนักบัญชี และมีกฎเกณฑ์ทางธุรกิจที่บ่งบอกว่า “พนักงานคนหนึ่งๆไม่สามารถทำงานในหลายๆ
ตำแหน่งได้” จากกฎเกณฑ์ทางธุรกิจดังกล่าวจะช่วยให้เราสามารถกำหนดลักษณะความสัมพันธ์ระหว่าง
เอ็นทิตี้ supertype และเอ็นทิตี้subtype ได้เป็นแบบ “disjoint subtype” หรือ “nonoverlapping
subtype” ที่ซึ่ง “แถวข้อมูลหนึ่งๆในเอ็นทิตี้ supertype จะสามารถมีความสัมพันธ์กับข้อมูลในเอ็นทิตี้
subtype หนึ่งๆเท่านั้น (ห้ามมีความสัมพันธ์กับหลายเอ็นทิตี้ subtype)” เช่น แถวข้อมูลหนึ่งๆในเอ็นทิตี้
EMPLOYEE จะมีความเกี่ยวเนื่องกับเอ็นทิตี้ PILOT หรือ MECHANIC หรือ ACCOUNTANCE อย่างใดอย่าง
หนึ่งเท่านั้น ..........

หรือตามที่ผมตีความสรุปได้ว่า
Disjoint = บังคับว่าเลือกได้เพียงแค่หนึ่งเช่น เป็นนักเรียนก็เรียนไปห้ามทำหน้าที่อื่น
Overlaping = เลือกได้มากกว่าหนึ่งหรือก็คือเป็นนักเรียนแล้วจะขยันทำอะไรอีกถ้าทำได้ก็ทำไป ^u^
แอบไปหาอ่านเจอมาตอบแทนผู้ตั้งกระทู้  :shout:

 
โพสต์นี้ได้รับคำขอบคุณจาก: thanapol.w

11 มี.ค. 63 , 14:10:53
ตอบกลับ #4

สันติสุข

: การทำ supertype & subtype
« ตอบกลับ #4 เมื่อ: 11 มี.ค. 63 , 14:10:53 »
อ้างถึง
แถวข้อมูลหนึ่งๆในเอ็นทิตี้ supertype จะสามารถมีความสัมพันธ์กับข้อมูลในเอ็นทิตี้
subtype หนึ่งๆเท่านั้น (ห้ามมีความสัมพันธ์กับหลายเอ็นทิตี้ subtype)” เช่น แถวข้อมูลหนึ่งๆในเอ็นทิตี้ EMPLOYEE จะมีความเกี่ยวเนื่องกับเอ็นทิตี้ PILOT หรือ MECHANIC หรือ ACCOUNTANCE อย่างใดอย่าง หนึ่งเท่านั้น
   

เท่าที่อ่านดู มันเป็นแค่ logical เท่านั้น ถ้าไม่ต้องการให้ EMPLOYEE คนนั้น(เรคอร์ดนั้น) มีตำแหน่งเป็นอะไร ก็ไม่ต้องไปสร้างเรคอร์ดในเอ็นทิตี้ที่ไม่เกี่ยวข้องเท่านั้นเอง ระบบจะไปรู้ได้ยังไงว่าคนไหนจะให้มีตำแหน่งอะไรได้บ้าง หรือให้นั่งหลายๆตำแหน่ง ตำแหน่งไหนได้บ้าง

ส่วนถ้าจะบอกว่า งั้นให้ระบบเช็คเองว่าถ้านาย ก. มีเรคอร์ดอยู่ในเอนทิตี้หนึ่งเอนทิตี้ใดใน 3 เอนทิตี้นี้แล้ว ก็ให้ระบบตรวจสอบห้ามไม่ให้สร้างเรคอร์ดนาย ก. ในอีก 2 เอนทิตี้ที่เหลือด้วยตัวมันเองเลย อย่างนี้ Access ไม่มี Constraint แบบที่ว่านี้ครับ 

ยกเว้นในกรณี Disjoint เราอาจทำได้โดยเพิ่มฟิลด์ POSITION_CODE ใน EMPLOYEE เพื่อเก็บสถานะว่าเขาดำรงตำแหน่งอะไรอยู่ ณ ตอนนี้ ดังนั้นคนๆนึงก็จะเป็นได้แค่ตำแหน่งใดตำแหน่งหนึ่งเท่านั้นเอง ส่วนจะให้ใส่ POSITION_CODE อะไรได้บ้าง ก็ไปใส่เป็น Expression ใน Validation Rule ของฟิลด์ POSITION_CODE ได้เลย เช่น [POSITION_CODE] ='M' or [POSITION_CODE] ='A'
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

11 มี.ค. 63 , 15:43:37
ตอบกลับ #5

thanapol.w

: การทำ supertype & subtype
« ตอบกลับ #5 เมื่อ: 11 มี.ค. 63 , 15:43:37 »
ท่านพอจะทำตารางความสัมพันธ์ แบบ disjoint เป็นตัวอย่างหน่อยได้ไหมครับ 

 

11 มี.ค. 63 , 16:34:16
ตอบกลับ #6

สันติสุข

: การทำ supertype & subtype
« ตอบกลับ #6 เมื่อ: 11 มี.ค. 63 , 16:34:16 »
อย่างที่บอก Access ไม่มี Constraint ของเทเบิลที่ทำอะไรแบบนั้นครับ  ส่วนคุณสมบัติของความสัมพันธ์   Access ก็มีไม่มีอะไรเกี่ยวกับ Disjoint เหมือนกันครับ

ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 


บอร์ดเรียนรู้ Access สำหรับคนไทย