5-1
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
บทที่ 5* รูปแบบขอมูลเชิงสัมพันธและขอบังคับของฐานขอมูลเชิงสัมพันธ The Relational Data Model and Relational Database Constraints
วัตถุประสงค 1. เพื่อศึกษาแนวคิดรูปแบบเชิงสัมพันธ 2. เพือ่ ใหสามารถกําหนดรูปแบบเชิงสัมพันธและเคารางฐานขอมูลเชิงสัมพันธ 3. เพือ่ ใหสามารถสรางขอกําหนดการใชงานในการแทรกขอมูล การลบขอมูลและการเปลี่ยนแปลงขอมูล
5.1
แนวคิดรูปแบบเชิงสัมพันธ รูปแบบเชิงสัมพันธนี้ถูกคิดคนโดย ดร. อี เอฟ คอดด (Dr. E. F. Codd) จากบริษัทไอบีเอ็มในปค.ศ 1970 ซึ่ง กลาวไววา “รูปแบบเชิงสัมพันธนี้ถือไดวาเปนการเก็บขอมูลรวมกันที่มีขนาดใหญ” โดยฐานขอมูลเชิงสัมพันธจะ ประกอบดวยกลุมขอมูลที่มีความสัมพันธซึ่งกันและกัน มาเชื่อมโยงกันโดยอาศัยหลักทฤษฎีความสัมพันธเชิง คณิตศาสตร มาใชในการจัดการขอมูลไดเปนอยางดี
5.2
นิยามของความสัมพันธ (Relation) 5.2.1 นิยามอยางไมเปนทางการ ความสัมพันธ (Relation) หรือเรียกทับศัพทวารีเลชัน มีคําเรียกทั่วไปวาตาราง (Table) ซึ่งประกอบไปดวยกลุม ของแถว (Row) หรือเรคคอรด (Record) โดยเรคคอรดจะแทนกลุมของขอมูลที่มีความสัมพันธกัน ในแบบจําลอง เชิงสัมพันธนั้นขอมูลในแตละแถวจะแทนเอนทิตีจริง ซึ่งชื่อของตารางและคอลัมน (Column) จะถูกใชชวยในการ แปลงความหมายคาในแตละแถว ซึ่งขอมูลที่อยูในแตละแถวนั้นจะตองไมซ้ํากัน บางครั้งขอมูลในแตละแถวที่กําหนด ไวเปนหมายเลขรหัสหรือหมายเลขที่เรียงกัน จะถูกใชในการอางถึงในแตละตาราง โดยคอลัมนที่ถูกอางถึงนั้นจะเปน คอลัมนที่สําคัญ เราจะเรียกชื่อในแตละคอลัมนวาแอทตริบิวต (Attribute)
5.2.2 นิยามอยางเปนทางการ รีเลชั่นสามารถกําหนดรูปแบบไดหลายแบบ ถาเคารางของรีเลชั่นเปน R(A1,A2,A3,…,An) สัญกรณ R เปนชื่อ ของความสัมพันธหรือตาราง และ Ai คือชื่อแอทตริบิวตตัวที่ i โดย i มีคาตั้งแต 1 จนถึง n ซึ่งแตละแอทตริบิวตจะมี คาทั้งหมดที่เปนไปได จะถูกเรียกวาโดเมน (Domain) ของแอทตริบิวต ซึ่งสามารถเขียนไดวา Dom(Ai) ตัวอยาง Customer(Cust-id,Cust-name,Address,Phone#)
หมายถึงตารางความสัมพันธชื่อ Customer ประกอบดวย 4 แอทตริบิวต ไดแก Cust-id Cust-name Address และ Phone# โดยแตละแอทตริบิวตนั้น จะมีกลุมขอมูลหรือโดเมนเปนของตัวเอง ซึ่งจะขึ้นอยูกับชนิด ขอมูลตามที่ไดกําหนดไว เชนแอทตริบิวต Cust-id สามารถกําหนดใหเปนชนิด Text หรือ Character โดยมี 6 ตัวอักษร (Digit) หมายถึงแอทตริบิวต Cust-id จะมีขอมูลเปนตัวอักษร (ไมสามารถคํานวณได) ที่ไมเกิน 6 ตัวอักษร * อางอิงจากบทที่ 5 ของเอกสารอางอิง [1]
5-2
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
กลุมขอมูลในแตละแถวจะถูกเรียกวา ทูเพิล (Tuple) โดยขอมูลนั้นจะประกอบดวยขอมูลในโดเมนของแตละแอทตริ บิวต เชน ทูเพิล < “243658”, “Wiwat”, “235 Pomprakarn Bangkok” , “0815648523” > ซึ่งจะ ประกอบดวยขอมูล 4 กลุม โดยขอมูลแตละกลุมนั้นจะเปนสมาชิกของโดเมนในแตละแอทตริบิวต เชน Wiwat เปน สมาชิกของโดเมนในแอทตริบิวต Cust-name ของตารางความสัมพันธ Customer โดเมนนั้นจะถูกกําหนดตามชนิดของขอมูล (data-type) หรือรูปแบบของขอมูล (format) ซึ่งอาจจะอยูในรูปของ เลขหมายโทรศัพท เชน (xxx)-xxx-xxxx หรือกําหนดใหอยูในรูปของวัน (Date) ก็สามารถกําหนดไดเปน ddmmm-yyyy ซึ่ง แอทตริบิวตที่เกี่ยวกับวันที่นั้นจะถูกนําไปใชในการกําหนดขอมูลอยางเชน วันที่อยูในใบแจงยอด สินคา หรือวันที่อยูในใบเสร็จรับเงิน ถา R(A1,A2,A3,…..,An) แลว r(R) หมายถึง เซตของทูเพิลที่อยูในรีเลชั่นนั้น โดยแตละทูเพิลนั้นจะ ประกอบดวยคาของโดเมนในแตละแอทตริบิวต ซึ่งรวมไปถึงคาวาง (null) ดวย ดังนั้น ถา R เปนเคารางของรีเลชัน (schema) แลว r จะเปนขอมูลของกลุมสมาชิกทั้งหมดที่อยูใน R หรือ R ถูกนับไดวาเปนรีเลชันโดยตรง (intension) แลวเรียก r เปนสวนขยายของรีเลชั่น (extension) ตัวอยาง กําหนดตารางรีเลชั่น X(A,B,C) แลว Dom(A)={1,2,3} Dom(B)={M,N} Dom(C)={0,1} เราจะไดผลผลิตของจํานวนทูเพิลทั้งหมดเปนผลคูณคารทีเซียน (Cartesian product) ของจํานวน แอทตริบิวตของทุกโดเมน ดังนั้น จํานวน Dom(A) x จํานวนDom(B )x จํานวนDom(C) = 3x2x2 = 12 ทูเพิล เพราะฉะนั้น ตารางรีเลชั่น X มีทูเพิลสูงสุดได 12 ทูเพิล ในที่นี้ r(X) = {<1,M,1>,<2,M,0>,<3,N,0>,<2} สรุปนิยามศัพทที่เกี่ยวของ
ศัพททั่วไป
ศัพทเทคนิค
ตาราง (Table)
รีเลชัน (Relation)
คอลัมน (Column)
แอทตริบิวต (Attribute)/ โดเมน (Domain)
แถว (Row)
ทูเพิล (Tuple)
ขอบเขตคาของขอมูล (Values in a column)
โดเมน (Domain)
ตารางที่ 5.1 ขอบเขตตาราง (Table Definition) สรุปนิยามศัพท ที่เกี่ยวของ ตารางที่มีขอมูลแลว (Populated Table)
เคารางของรีเลชัน (Schema of a Relation) สวนขยาย (Extension)
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-3
รูปที่ 5.1 ตัวอยางรีเลชัน รูปที่ 5.1 แสดงถึงชื่อรีเลชัน คือ Student มีแอทตริบิวต 7 แอทตริบิวต ประกอบดวย Name, SSN, HomePhone, Address, OfficePhone, Age และ GPA โดยมีจํานวน 5 ทูเพิล
5.3
ลักษณะของรีเลชัน • • • • • • •
ทูเพิลที่อยูในรีเลชันจะแสดงอยูในรูปตาราง แอทตริบิวตที่อยูในเคารางรีเลชันนั้นจะพิจารณาจาก R(A1,A2,A3,….,An) โดยมีขอบเขตขอมูลอยูในแตละ ทูเพิล t= ขอบเขตขอมูลในทูเพิลจะไมสามารถแยกขอมูลยอยออกไปไดอีก (Atomic) R(A1,A2,A3,…An) หมายถึง เคารางของรีเลชัน R ในระดับที่ n t = หมายถึง ทูเพิลที่อยูในเคารางรีเลชัน r(R) ซึ่ง Vi จะเปนคาขอมูลที่อยูภายใต แอทตริบิวต Ai เราจะอางถึงคาขอมูลของแตละทูเพิลไดเปน t[Ai] =Vi หรือ t.Ai = Vi (คาขอมูลของแอทตริบิวต Ai สําหรับทูเพิลที่ t) ซึ่งในทํานองเดียวกัน t(Au,Av,…….,Aw) จะเปนการอางถึง ซับทูเพิลของ t โดยมีคาขอมูลของแอทตริบิวต เปน Au,Av,….,Aw ตามลําดับ
รูปที่ 5.2 แสดงถึงลักษณะของ รีเลชัน
5.4
เงื่อนไขบังคับ 5.4.1 เงื่อนไขบังคับของฐานขอมูลเชิงสัมพันธ (Relational Database Constraints) • • •
เงื่อนไขบังคับที่ขึ้นอยูกับภายในโมเดล : จะไมมีทูเพิลที่ซ้ํากัน เงื่อนไขบังคับที่ขึ้นอยูกับเคาราง : จะตองมีการกําหนดขอบเขตขอมูลตามเคาราง ที่ไดมีการกําหนดไวอยูใน ภาษาสําหรับนิยามขอมูล (Data Definition Language หรือ DDL) เงื่อนไขบังคับที่ขึ้นอยูกับโปรแกรมประยุกต : จะถูกแสดงและนําไปใชโดยโปรแกรมประยุกต
5.4.2 เงื่อนไขบังคับของรีเลชัน (Relation Constraints)
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-4
จะพิจารณาจากความสัมพันธที่เปนไปไดทั้งหมด ซึ่งแบงเปนชนิดตางๆดังนี้ • เงื่อนไขบังคับของโดเมน (Domain constraints) • เงื่อนไขบังคับของ Key (Key constraints) • เงื่อนไขบังคับของ Entity (Entity integrity constraints) • เงื่อนไขบังคับของการอางอิง (Referential integrity constraints) • เงื่อนไขบังคับของชนิดอื่นๆ (Other types of constraints)
5.4.3 เงื่อนไขบังคับของโดเมน (Domain Constraints) • • •
ภายในแตละทูเพิลจะประกอบไปดวยคาขอมูลของแตละแอทตริบิวต (attribute A) ซึ่งจะตองเปนคาที่ไม สามารถแตกยอยไปไดอีกโดยเปนคาขอมูลที่สัมพันธกับโดเมน Dom(A) ชนิดขอมูลในแตละแอทตริบิวตนั้น สามารถกําหนดไดเปน เลขจํานวนเต็ม (Integers), เลขจํานวนจริง (real number) , ตัวอักษร (Characters) , บูลีน (Booleans) , วัน (Date) , เวลา (Time) เปนตน ขนาดของขอมูลจะขึ้นอยูกับชนิดขอมูลแตละประเภท
5.4.4 เงื่อนไขบังคับของคีย (Key constraints) • • • • • • • •
•
•
รูปที่ 5.3 แสดงถึงรีเลชันของ CAR ที่มี 2 คีย คูแขง
รีเลชันจะเปนตัวกําหนดเซตของทูเพิล (Key constraints) องคประกอบทั้งหมดที่อยูในเซตของทูเพิลมีความแตกตางกันอยางชัดเจน ซึ่งไมมี 2 ทูเพิลใดๆ จะมีคาของ ขอมูลเหมือนกันในแตละแอทตริบิวต ซับเซตของแอทตริบิวตในรีเลชันจะมีคุณสมบัติวา ไมมี 2 ทูเพิลในรีเลชันใดๆ ที่มีคาของขอมูลเหมือนกันในแต ละแอทตริบิวต ซึ่งซับเซตของแอทตริบิวตนั้นจะถูกเรียกวาซูเปอรคีย (Superkey หรือ SK) คาของ t1[SK] จะไมเทากันกับ คาของ t2[SK] ในแตละรีเลชันจะมีซูเปอรคียอยางนอยหนึ่งคา ซึ่งก็คือเซตของแอทตริบิวตทั้งหมด ซูเปอรคียสามารถมีแอทตริบิวตที่ซ้ํากันได ถา คีย K เปนซูเปอรคีย ของเคารางรีเลชัน R แลวถาไดมีการดึงแอทตริบิวตใดๆก็ตามจาก K จะทําให คีย K นั้นไมไดเปนซูเปอรคียของเคารางรีเลชัน R อีกตอไป เงื่อนไขบังคับ 2 ประการ ที่เปนคียอยางเดนชัด - ถามี 2 ทูเพิลที่มีความแตกตางกันทุกประการในรีเลชัน คาของขอมูลสําหรับแอทตริบิวตทั้งหมดที่เปนคีย จะไมสามารถมีคาเหมือนกัน - เราไมสามารถดึงแอทตริบิวตจากซูเปอรคียที่เล็กที่สุด (minimal superkey) เพราะวาตามเงื่อนไข บังคับนั้นจะตองมีคาขอมูลอยางนอย 1 คา ซูเปอรคียที่เล็กที่สุดจะเกิดจาก ซูเปอรคียใดๆก็ตามถูกดึงแอทตริบิวตออกแลว เซตของแอทตริบิวตไมเปนซูเปอร คีย - ตัวอยาง Car(State,Reg#,SerialNo,Make,Model,year) จะพบวามีคีย 2 ตัวคือ {State,Reg#} กับ {SerialNO} ซึ่ง {SerialNO,Make} จะเปนซูเปอรคีย แตไมไดเปนคีย ถาในรีเลชันนั้นมีคียคูแขง (Candidate Keys) ตองเลือกคียที่เหมาะสม 1 ตัว ใหเปนคียหลัก (Primary Key) แลวทําการขีดเสนใตใตชื่อแอทตริบิวตที่เปนคียหลัก
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-5
5.4.5 เงื่อนไขบังคับความบูรณภาพของเอนทิตี (Entity Integrity) • • • •
รูปที่ 5.4 แสดงถึง เคาราง ฐานขอมูลเชิงสัมพันธ ชื่อ Company
เคารางฐานขอมูลเชิงสัมพันธ จะเปนเซตของรีเลชัน จะไดเปน S={R1,R2,R3,…Rn} โดยที่ S เปนชื่อฐานขอมูล แอทตริบิวตที่เปนคียหลักในแตละรีเลชันของฐานขอมูล ไมสามารถเปนคาวางในทูเพิลใดๆ เพราะวาคาขอมูล ของคียหลักนั้น จะถูกใชในการระบุกับทูเพิลที่สัมพันธกัน t[PK] จะไมเปนคาวางสําหรับทูเพิลใดๆก็ตามที่อยูใน r(R) แอทตริบิวตที่ไมไดเปนคียหลัก บางครั้งก็ไมอนุญาต ใหเปนคาวางได
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-6
รูปที่ 5.5 แสดงถึงขอมูลใน เคารางฐานขอมูล Company
5.4.6 เงื่อนไขบังคับความบูรณภาพในการอางอิง (Referential integrity constraints) • • • •
เงื่อนไขบังคับนี้จะใชก็ตอเมื่อมีตั้งแต 2 รีเลชันขึ้นไป กําหนดความสัมพันธของทูเพิลทั้ง 2 รีเลชัน โดยการอางอิงรีเลชันซึ่งกันและกัน ทูเพิลที่อยูในรีเลชัน R1 จะมีแอทตริบิวตที่เปนคียนอก (Foreign Key หรือ FK) จะมีการอางอิงกับแอทตริ บิวตที่เปนคียหลักที่อยูในรีเลชัน R2 ถาจะกลาววาทูเพิล t1 ในรีเลชัน R1 จะไปอางอิงกับ t2 ในรีเลชัน R2 จะสามารถเขียนไดเปน t1[FK] = t2[PK]
•
รายการของเงื่อนไขบังคับ - คาของขอมูลในคียนอก (FK) ในรีเลชัน R1 จะมีการอางอิงไดก็ตอเมื่อเปนอยางใดอยางหนึ่งดังตอไปนี้ คือ 1. คาขอมูลนั้นจะตองเปนคาที่มีอยูแลวในคียหลักของรีเลชัน R2 หรือ 2. เปนคาวาง (null) - ถาเปนขอ (2) คียนอกที่อยูในรีเลชัน R1 ไมควรเปนสวนใดสวนหนึ่งของคียหลัก
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-7
รูปที่ 5.6 แสดงถึงการ เชื่อมโยงกันของเคา รางฐานขอมูลเชิง สัมพันธ Company
5.4.7 เงื่อนไขบังคับของชนิดอืน่ ๆ •
•
5.5
เงื่อนไขบังคับของความหมาย - ขึ้นอยูกับการใชงานโปรแกรมประยุกต แตไมสามารถกําหนดชัดเจนโดยใชโมเดล - เงื่อนไขบังคับนั้นจะกําหนดเฉพาะสําหรับผูใชงาน - SQL-99 จะเปนตัวกระตุน(trigger) และ มั่นคง(assertion) ที่สามารถใชงานได เงื่อนไขบังคับของการขึ้นอยูกับหนาที่การทํางาน - ถามีการสราง เซตของแอทตริบิวต 2 กลุม คือ แอทตริบิวต X กับแอทตริบิวต Y แลวใหมค ี วามสัมพันธ ตามหนาที่ โดยใหคาของขอมูลใน X ขึ้นอยูกับคาของขอมูลใน Y จะสามารถเขียนไดเปน XÆY
การจัดการขอมูลของรีเลชัน ในการจัดการขอมูลของรีเลชันนั้นจะมีการดําเนินการอยู 3 อยางคือ 1) การแทรกขอมูล (Insert) ซึ่งเปนคําสั่งที่ใช ในการเพิ่มทูเพิลใหมลงในรีเลชัน 2) การลบขอมูล (Delete) จะเปนคําสั่งที่ใชในการลบทูเพิลที่อยูในรีเลชัน และ 3) การปรับปรุงขอมูล (Update/Modify) จะเปนคําสั่งที่ใชในการเปลี่ยนแปลงขอมูลของทูเพิลที่อยูในรีเลชัน ทั้งนี้ เงื่อนไขบังคับของการบูรณาภาพไมควรไดรับผลกระทบจากการจัดดําเนินการขอมูล
5.5.1 การแทรกขอมูล (The Insert Operation) • •
จัดเตรียมรายการชองขอมูลสําหรับทูเพิลใหมซึ่งจะเขาไปแทรกอยูในรีเลชัน การแทรกจะทําใหเกิดปญหาไดดังตอไปนี้ - ทางดานโดเมน : ถาคาของขอมูลในแอทตริบิวตไมถูกตองตามเงื่อนไขที่กําหนด - ทางดานคีย : ถาคาขอมูลของคียในทูเพิลใหมมีอยูแลวในทูเพิลของฐานขอมูล - ทางดานเอนทิตี : ถาคียหลักของทูเพิลใหมเปนคาวาง - ทางดานการอางอิง : ถาคาของขอมูลในคียนอกไมตรงกับคาขอมูลกับคียหลักที่อยูในรีเลชันที่ใชในการ อางอิง
2110422 การออกแบบระบบการจัดการฐานขอมูล ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร จุฬาลงกรณมหาวิทยาลัย
5-8
5.5.2 การลบขอมูล (The Delete Operation) • •
การลบขอมูลจะเกิดปญหาเฉพาะการอางอิงเทานั้น - ถาทูเพิลถูกลบแลวยังมีการอางอิงคียนอกจากทูเพิลอื่นๆที่อยูในฐานขอมูล ถาเกิดเหตุการณที่ไมสามารลบขอมูลได - ยกเลิกการลบขอมูล - พยายามลบทูเพิลที่มีการอางอิงกับทูเพิลที่ไดถูกลบไปแลว - ปรับคาของขอมูลในแอทตริบิวตที่มีการใชอางอิง อาจจะปรับเปนคาวางหรือเปนคาอื่นที่มีอยูในทูเพิล - ดําเนินการกับผูใชอยางเฉพาะเจาะจง - ถาแอทตริบิวตที่ถูกใชอางอิงเปนสวนหนึ่งของคียหลัก จะไมสามารถทําใหเปนคาวางได
5.5.3 การปรับปรุงขอมูล (The Update Operation) •
การปรับปรุงสามารถกอใหเกิดปญหากับโดเมน คียหลัก เอนทิตี และการอางอิงได
แบบฝกหัด 1.
จงพิจารณารีเลชันนี้ แลวทําใหอยูในรูปแบบการเชื่อมโยงของรีเลชัน
2.
Student(SSN,Name,Major,Bdate) Course(Course#,Cname,Dept) Enroll(SSN,Course#,Quarter,Grade) Book_Adoption(Course#,Quarter,Book_ISBN) Text(Book_ISBN,Book_Title,Publisher,Author) รีเลชัน Car_Rent ประกอบดวยแอทตริบิวต Gear, Seat และ Fuel จงหาจํานวนทูเพิลสูงสุดของรีเลชั่น Car_Rent ถา โดเมน(Gear) = {Manual, Auto} โดเมน (Seat) = {5, 7, 12} โดเมน (Fuel) = {Diesel, Benzine , LPG, NGV} จงพิจารณาฐานขอมูล Companyในรูป เพื่อตอบคําถามตอไปนี้ แอทตริบิวสใดในรีเลชั่น WORKS_ON ใน ไมสามารถเปนคา NULL ได เพราะเหตุใด
3. •