• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ite 237 midterm guide
 

Ite 237 midterm guide

on

  • 395 views

 

Statistics

Views

Total Views
395
Views on SlideShare
395
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ite 237 midterm guide Ite 237 midterm guide Presentation Transcript

    • ITE 237 Advance Database Midterm
    • Entity• วัตถุที่เราสนใจ อาจเป็ นได้ ทงบุคคล สถานที่ วัตถุ เหตุการณ์ หรื อ ั้ แนวคิดที่ก่อให้ เกิดกลุมของข้ อมูลที่ต้องการ ่ เช่น นักเรี ยนทุกคนมีข้อมูลเหมือนกันแต่ไม่มีเงินเดือนแบบอาจารย์ ดังนัน นักเรี ยนจะอยู่คนละเอนทิตี ้กับอาจารย์ ้• มี 2 แบบ – Strong entity ซึงมี PK ่ – Weak entity ไม่มี PK แต่มี Partial key ซึงนาไปใช้ ร่วมกับ PK ที่ ่ ดึงมาจาก strong กลายเป็ น คีย์ร่วม มีไว้ สาหรับ Delete Cascade
    • Attribute• ลักษณะหรื อคุณสมบัติที่นามาอธิบายเอนติตี ้ และ ความสัมพันธ์• Single value attribute มีค่าเดียวใน record• Key attribute คือ attribute ที่เป็ น PK• Composite attribute คือมีหลายค่า – เช่น ชื่อ > ชื่อจริง , นามสกุล บางองค์กรก็รวม บางองค์กรก็แยก เพือไว้ ใช้ ค้นหา ่ ข้ อมูลตามความต้ องการ• Multi-value attribute คือ 1 attribute มีได้ หลายค่า – เช่น เบอร์ โทร ซึ่งต้ องแตกตารางใหม่ เอา PK ไปใช้ ร่วมด้ วย• Derived attribute คือ attribute ที่ได้ จากการคานวณจาก attribute อื่นๆ
    • Single value attribute• สัญลักษณ์ที่ใช้ คือ วงรี เส้ นขอบเส้ นเดี่ยว มีชื่อแอททริ บิวต์บรรจุอยู่ ภายใน
    • Composite attribute• สัญลักษณ์ที่ใช้ แสดง Composite Attribute คือวงรี เส้ นขอบ เส้ นเดี่ยว แต่มีวงรี ย่อยมาเชื่อมต่อด้ วย
    • Multivalued Attribute• สัญลักษณ์ที่ใช้ แสดง Multivalued Attribute คือวงรี ที่มีเส้ น ขอบเป็ นเส้ นคู่ บรรจุชื่อ แอททริ บิวต์ภายใน
    • Derived Attribute• สัญลักษณ์ที่แสดง Derived Attribute เป็ นวงรี ที่มีเส้ นขอบเป็ น เส้ นประ มีชื่อแอททริ บิวต์บรรจุภายใน
    • Cardinality• Cardinality คือความสัมพันระหว่าง entity มี 3 แบบ• ความสัมพันธ์แบบหนึ่งต่อหนึ่ง หรื อ 1-1• ความสัมพันธ์แบบหนึ่งต่อกลุม หรื อ 1-M ่• แบบกลุมต่อกลุม หรื อ M-N ่ ่
    • ความสัมพันธ์แบบหนึ่งต่อหนึ่ง หรื อ 1-1– เช่น อาจารย์ 1 คน จะสามารถเป็ นคณบดีได้ 1 แผนก และในขณะเดียวกัน คณะวิชาแต่ละคณะ ก็มีอาจารย์ที่ทาหน้ าที่เป็ นคณบดีได้ เพียง 1 คนเท่านัน ้
    • ความสัมพันธ์แบบหนึ่งต่อกลุ่ม หรื อ 1-M– เช่น ลูกค้ าหนึงคนมีใบสังซื ้อได้ หลายใบ และใบสังซื ้อแต่ละใบจับคูกบลูกค้ า ่ ่ ่ ่ ั ได้ เพียงคนเดียว
    • แบบกลุ่มต่อกลุ่ม หรื อ M-N– เช่น สินค้ า 1 ชนิดถูกสังตามใบสังซื ้อได้ หลายใบ และใบสังซื ้อ 1 ใบสามารถ ่ ่ ่ สังสินค้ าได้ หลายชนิด ่
    • แปลง ER เป็ น Relation1-1• ทาได้ 3 วิธี • 1.สร้ างตารางใหม่ โดยเอา PK ทัง2 มาเป็ น pk ของตารางใหม่ ้ • 2.ย้ าย pk ฝั่ ง partial มาเป็ น fk ในฝั่ ง total • 3.ให้ นา pk ฝั่ งข้ อมูลมากมาเป็ น fk ฝั่ งข้ อมูลน้ อย1-M• วิธีการทาคือย้ าย pk ฝั่ ง 1 ไปเป็ น fk ในฝั่ ง MM-N• วิธีการทาคือ M-N ต้ องสร้ างตารางใหม่แล้ วนา Pk ทัง2 ตารางมาใช้ เป็ น ทังpkร่ วมและfk ้ ้ ตารางใหม่ มีไว้ เพื่อ delete cascade แต่ต้องระวังบางครังอาจใช้ ไม่ได้ ต้องมี pk เพิ่ม ซึง ้ ่ เป็ นของ ตารางใหม่เอง
    • Recursive• Recursive คือ ข้ อมูลที่มีความสัมพันธ์กนเองในเอนทิตี ้ ั• 1-1 เช่น พี่1 คนมีน้องรหัสได้ 1 คน ส่วนน้ องก็มีพี่รหัสได้ คนเดียว STUDENT 1 1 HAVE
    • • 1-M เช่น หัวหน้ า1 คนมีลกน้ องได้ หลายคน ลูกน้ องหลายคนมีหวหน้ า ู ั ได้ คนเดียว EMPLOYEE 1 M HAVE
    • • M-N เช่น เรี ยนวิชาต้ องผ่านหลายวิชาขันต่ากว่า เช่น จะเรี ยน ้ eng3 ต้ องเรี ยน eng1 และ 2 ก่อน SUBJECT M N PASS
    • แปลง ER เป็ น Relation1-1 – วิธีทา ให้ สร้ างตารางใหม่และให้ เอา pk มาเปลี่ยนชื่อเช่น IDE มาเป็ น ID_F ,ID_M ซึงเป็ น pk ร่วม ่1-M – วิธีทา ให้ เพิ่ม attribute แล้ วเปลี่ยนชื่อ pk เพื่อให้ ทาเป็ น fk (ซึงจะเป็ น ่ total ไม่ได้ เพราะค่าหัวหน้ าจะว่าง)M-N – วิธีทา ต้ องสร้ างตารางใหม่และเอา pk มาเปลี่ยนชื่อ ซึงเป็ น pk ร่วม ่
    • FK กับ Partial Key• Partial key จะใช้ใน weak entity ซึ่งนา pk จาก strong entity มาเป็นคีย์ร่วม ว่างและซ้าไม่ได้ – EX เช่นตารางครอบครัวมี ชื่อ ความสัมพันธ์ เวลาวาดให้ใช้ชื่อเป็นเส้นประ (เพราะเป็น partial key ซึ่งจะใช้ pk จาก strongร่วมด้วย)• แต่ถ้าเป็น FK จะนา pk จากอีกตารางมาใช้ร่วม ซึ่งซ้าและว่างก็ได้
    • สัญลักษณ์ในการเขียน ERD• Strong• Weak• Relationship
    • • Single Value Attribute• Multivalued Attribute• Derived Attribute
    • • Composite Attribute• Key Attribute
    • 1• 1-1 1 E1 E2 1 N• 1-N E1 E2 N• M-N M E1 E2
    • การใช้ Partial หรื อ Total*จะต้ องคานึงถึงความยืดหยุ่น M 1 พนักงาน แผนก M 1 E1 E2
    • • DBA = database administrator มีหน้ าที่คือ ควบคุม Database สร้ าง ER สร้ าง Table และ SQL• EERD = สร้ างขึ ้นเพื่อแก้ ไขค่าว่างใน attribute ซึงจะมี super ่ class ซึงทุกคนต้ องมี กับ sub class ที่มีเฉพาะบางคนซึงแบ่งไว้ ่ ่ เวลาสร้ างตาราง จะต้ องนา pk ของ super class มาเป็ น pk ของ subclass มี 2 แบบคือ disjoint คือ ข้ อมูลใน subclass จะไม่ซ ้ากัน ส่วน overlap ข้ อมูลใน subclass จะมีซ ้ากันได้• Key = คือ attribute หรื อกลุม attribute ที่บอกค่า ่ attribute อื่นๆได้
    • • Super key = attribute หรื อกลุม ที่สามารถบอกค่า ่ attribute อื่นได้ , เราไม่ใช้ ใน db เพราะยากกว่าการ insert (ถ้ าให้ เป็ น pk หมด จะว่างไม่ได้ และซ ้าไม่ได้ )• Candidate key = attribute ที่น้อยที่สดใน sk ที่บอก ุ attribute อื่นได้ (ว่างและซ ้าไม่ได้ )• Primary key = candidate keyที่เราเลือกให้ กาหนด attribute อื่นใน entity (ว่างและซ ้าไม่ได้ )
    • • Alternative key (secondary key) = candidate key ที่เราไม่เลือก เอาไว้ ทา secondary index เพื่อไว้ ค้น (จริ งๆ ใน DB จะใช้ where) (ว่างและซ ้าไม่ได้ )• Foreign key = candidate key ที่ไปอยู่ในตารางอื่น มีไว้ สาหรับสร้ างความสัมพันธ์ (ว่างและซ ้าได้ )• Dependency = attribute หนึ่งขึ ้นอยู่กบ attribute ั หนึ่ง
    • Integrity• Entity Integrity (PK) = PK ห้ ามซ ้าและว่าง• 2. Referential integrity (FK) – 2.1.Restrition (Enforcement reference Integrity) • 1.ห้ ามลบข้ อมูลตารางแม่ เมื่อถูกอ้ างถึง ซึ่งจะลบได้ ก็ตอเมื่อ ให้ ทา fkในตารางลูก ่ เป็ นค่าว่างก่อน • 2.จะลบข้ อมูลในตารางหลักได้ ก็ตอเมื่อไม่มีการอ้ างถึง ่ • 3. เราสามารถลบข้ อมูลในตารางหลักได้ เลยถ้ าไม่มีการอ้ างถึง – 2.2 Cascade • 2.2.1 Delete cascade. เมื่อมีการลบแม่ ก็ลบลูกด้ วย • 2.2.2 Update cascade. เมื่อมีการอัพเดทแม่ ลูกก็จะอัพด้ วย
    • Normalization• Normalization คือการกระจายตาราง เพื่อขจัด anomaly( ข้ อผิดพลาด) 3 อย่าง ซึงจะลดความซ ้าซ้ อน ่• 1. insert คือยากต่อการใส่ข้อมูลหรื อใส่คาใน entity แล้ วบางครัง ่ ้ ไม่สามารถใส่ pk หรื อมีคาว่าง เช่น ตารางบุคคลมีนกเรี ยนกับครู ให้ ่ ั IDS เป็ น PK แล้ วมีครู เข้ ามาใหม่ แต่ไม่สามารถทาได้ เพราะไม่มี IDS เพิมตาม(ไม่มี PK) ่• 2. update คือเมื่อupdate ต้ อง update ทังหมด ซึงมี ้ ่ โอกาสผิด• 3. delete คือลบแล้ วหายไปจากระบบเลย
    • Normal Form• รูปแบบโครงสร้ างของ relation ที่มีคณสมบัติเฉพาะ NF มีหลายระดับ NF ระดับที่ ุ สูงกว่า จะมีการจัดโครงสร้ างข้ อมูลที่ดีกว่า และลดปั ญหาที่อาจเกิดขึ ้นใน NF ระดับที่ต่า กว่าได้• 1NF = ห้ ามมี muti-value ถ้ าพบต้ องแยกตารางและเอา PK คู่ และ Repeating group ถ้ าพบต้ องเพิ่มค่า PK (ในตาราง) เช่น รู้รหัสวิชา(ไม่ใช่PK)ก็ จะรู้เกรดและชื่อวิชา ดังนั ้นต้ องเพิ่ม PK ซึง 1NF ยังใช้ ใน DB ไม่ได้ เพราะยังเกิด ่ anomaly อยู่• 2NF = เป็ น NF1 , non-key ทุกตัวต้ องขึ ้นกับ pk แต่ไม่สามารถใช้ ใน DB ได้ เพราะยังเกิด anomaly• 3NF = ต้ องเป็ น 2NF ห้ าม non-key ขึ ้นกับ non key อื่นๆ ได้ (Transitive) ต้ องกระจายตาราง **จะทาถึงแบบนี ้มากสุด 90% **ERD = 3NF เพราะมีการ สร้ างตารางเหมือนกับที่ออกแบบไว้ ซงใช้ หลัก cardinality (FK) ึ่
    • หลักการแปลง ER เป็ น Relation1. ให้ แปลงเอนติติ ้ทุกตัวเป็ นรี เลชัน และแปลงแอตทริ บิวต์ทกตัวของเอน ่ ุติตี ้ให้ เป็ นแอตทริ บิวต์ของรี เลชัน ่ Customer CusID CusName CusAdd CusSurName• Customer(CusID, CusName, CusSurName, CusAdd)
    • 2. เพิมแอตทริ บิวต์ให้ กบรี เลชัน ่ ั ่ 2.1 ถ้ าความสัมพันธ์เป็ นแบบ 1 to 1 ให้ นา pk ของรีเลชันฝั่ งใดฝั่ งหนึงไป ่ ่ อยู่ในรีเลชันของอีกฝั่ งหนึง ่ ่ **ต้ องให้ คาในแอตทริบิวใหม่เป็ น Null น้ อยสุดหรือไม่มี ่ 1 1 Teacher เป็ นคณบดี Faculty ThName FacName ThID FacID ThSurName• Teacher(ThID, ThName, ThSurName)• Faculty(FacID,FacName,ThID*)
    • 2. เพิ่มแอตทริ บิวต์ให้ กบรี เลชัน ั ่ 2.2 ถ้ าความสัมพันธ์เป็ นแบบ 1 to Mให้ นา pk ของรีเลชันฝั่ งที่เป็ น 1ไปอยู่ในรี ่ เลชันของฝั่ งที่เป็ น M ่CusName 1 M Customer สังซื ้อ ่ Orders ReqDate OrderDate CusID OID CusSurName • Customer(CusID, CusName, CusSurName) • Orders(OID,OrderDate, ReqDate ,CusID*)
    • 3. สร้ างรีเลชันใหม่สาหรับความสัมพันธ์แบบ M to M ่ โดยสร้ าง PK ได้ จาก การนาเอา PK ของแต่ละรีเลชันมาประกอบกัน ่ DiscountCusName M M Customer รายการสังซื่อ ่ Orders Amount UnitPrice CusID OID CusSurName • Customer(CusID, CusName, CusSurName) • Orders(OID,OrderDate, ReqDate ,CusID*) • OrderDetail(OID*, CusID*, Discount, Amount, UnitPrice)
    • 4. สาหรับเอนติติ ้ที่มีแอตทริ บิวต์แบบหลายค่า• ให้ สร้ างรี เลชันเพิ่ม ที่มีแอตทริ บิวต์แบบหลายค่านัน ่ ้• PK ของรี เลชันใหม่เกิดจาก PK ของรี เลชันเดิมประกอบกับ แอตทริ บิวต์ที่ ่ ่ เกิดจากแอตทริ บิวแบบหลายค่า CusName Customer CreditNum CusID CusSurName• Customer(CusID, CusName, CusSurName)• CusCredit(CusID*, CreditNum)
    • 5. สาหรับเอนติตี ้แบบอ่อน ให้ สร้ างเป็ นรี เลชัน และมี PK ที่มาจาก PK ่ ของรี เลชันหนึ่งรวมกับ PK ของเอนติตี ้แบบอ่อน ่ 1 M Invoice Invoice has Detail Inv no Date Line• Invoice(Inv no, Date)• InvoiceDetail( Inv no* ,Line)
    • หมายเลขใบเสร็จ........................... วันที่ออก................................ชื่อลูกค้ า …………………………….............................ที่อยู.่ ............................................................................................... รหัสสินค้ า ชื่อสินค้ า ราคา/หน่วย จานวน รวม รวมมูลค่า ภาษี มลค่าเพิ่ม(VAT) ู ราคาสุทธิพนักงาน.....................................................
    • 1 1 E-Mail 11 N N วันทีสั่งซือ ่ ้ 1 N M 1 N N M N N 1 E-Mail
    • PL / SQL• Field dept มี DEPTNO , DNAME, LOC• Emp มี EMPNO, ENAME , JOB, MGR, HIREDATE ,SAL , COMM , DEPTNO• Salgrade มี GRADE LOSAL HISAL
    • • อยากทราบว่า king เงินเดือนเท่าไรSQL> select ename,sal from emp2 where ename=KING;
    • • อยากทราบว่า ชื่อแผนกไหนอยู่นิวยอกSQL> select dname,loc from dept2 where loc =NEW YORK;
    • • มีพนักงานไรบ้ างที่มีเงินเดือนมากกว่า 2000SQL> select * from emp2 where sal>2000;
    • • อยากทราบว่ามีพนักงานคนไหนบ้ างที่ทางานแผนกหมายเลข10SQL> select * from emp2 where deptno = 10;
    • • อยากรู้ ว่าพนักงานคนไหนบ้ างที่เป็ น salemanSQL> select * from emp2 where job = SALESMAN;
    • • อยากทราบว่า king มีตาแหน่งอะไร และเงินเดือนเท่าไรSQL> select ename,job,sal from emp2 where ename=KING;
    • • ใครบ้ างที่ไม่มีคา com ่SQL> select ename,comm2 from emp3 where comm is null;
    • • ใครบ้ างมีคา comm. ่SQL> select ename,comm2 from emp3 where comm is not null;
    • • king ทางานแผนกชื่ออะไร และที่ไหน (เชื่อม 2 ตาราง)SQL> select emp.ename,dept.dname,dept.loc2 from emp , dept3 where emp.deptno = dept.deptno and emp.ename =KING;
    • • มีพนักงานชื่ออะไร เงินเดือนเท่าไร ทางานที่ไหน ที่อยู่แผนก salesSQL> Select e.ename, e.sal, d.loc, d.Dname2 From emp e , dept d3 Where d.deptno = e.deptno and e.deptno=30;
    • • มีพนักงานที่อยู่แผนก sales มีชื่อว่าอะไรบ้ าง ตาแหน่ง เงือนเดือน เท่าไรSQL> Select e.ename, e.sal, e.job, d.Dname2 From emp e , dept d3 Where d.deptno = e.deptno and e.deptno=30;
    • • ชื่อ เงินเดือน ตาแหน่ง ของแผนก sales และเงินมากกว่า 2500SQL> Select e.ename, e.sal, e.job, d.Dname2 From emp e , dept d3 Where d.deptno = e.deptno and e.deptno=30 and e.sal>2500;
    • • หาชื่อ เงินเดือน ที่ตงแผนก อยุแผนกไหน ของ king ั้SQL> select e.ename ,e.sal,d.loc,d.dname2 from emp e , dept d3 where e.deptno = d.deptno and e.ename = KING;
    • • เงินเดือนสูงสุด ต่าสุด เฉลี่ยของ emp เท่าไรSQL> select avg(sal) , max(sal) , min(sal)2 from emp;
    • • คนที่มีตาแหน่ง manager เงินเดือน ตาสุด สูงสุด เฉลี่ย เท่าไรSQL> select max(sal) , min(sal) , avg(sal)2 from emp3 where job = MANAGER
    • • มีพนักงานกี่คนSQL> select count(*) from emp;
    • • แต่ละตาแหน่งมีเงินสูงสุด ต่าสุด เฉลี่ย เท่าไรSQL> select job , max(sal) , min(sal), avg(sal)2 from emp3 group by job;
    • • มีพนักงานตาแหน่งไรบ้ าง ที่มีเงินเดือนเฉลี่ยสูงกว่า 2000SQL> select ename , job , avg(sal) from emp2 having avg(sal)>20003 group by ename , job;
    • • ใครเงินเดือนมากกว่า smithSQL> select ename ,sal from emp2 where sal > ( select sal from emp where ename = SMITH);