SlideShare a Scribd company logo
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 เป็ น Relation
1-1
• ทาได้ 3 วิธี
      • 1.สร้ างตารางใหม่ โดยเอา PK ทัง2 มาเป็ น pk ของตารางใหม่
                                          ้
      • 2.ย้ าย pk ฝั่ ง partial มาเป็ น fk ในฝั่ ง total
      • 3.ให้ นา pk ฝั่ งข้ อมูลมากมาเป็ น fk ฝั่ งข้ อมูลน้ อย
1-M
• วิธีการทาคือย้ าย pk ฝั่ ง 1 ไปเป็ น fk ในฝั่ ง M
M-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 เป็ น Relation
1-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 เป็ น Relation
1. ให้ แปลงเอนติติ ้ทุกตัวเป็ นรี เลชัน และแปลงแอตทริ บิวต์ทกตัวของเอน
                                       ่                    ุ
ติตี ้ให้ เป็ นแอตทริ บิวต์ของรี เลชัน
                                     ่

                        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 ของแต่ละรีเลชันมาประกอบกัน
                                                         ่
                                                        Discount

CusName                       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)
                                                                        ู
                                                                             ราคาสุทธิ

พนักงาน.....................................................
Ite 237 midterm guide
1           1
                                         E-Mail
                                 1



1           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 emp
2    where ename='KING';
• อยากทราบว่า ชื่อแผนกไหนอยู่นิวยอก
SQL> select dname,loc from dept
2    where loc ='NEW YORK';
• มีพนักงานไรบ้ างที่มีเงินเดือนมากกว่า 2000
SQL> select * from emp
2    where sal>2000;
• อยากทราบว่ามีพนักงานคนไหนบ้ างที่ทางานแผนกหมายเลข10
SQL> select * from emp
2    where deptno = 10;
• อยากรู้ ว่าพนักงานคนไหนบ้ างที่เป็ น saleman
SQL> select * from emp
2    where job = 'SALESMAN';
• อยากทราบว่า king มีตาแหน่งอะไร และเงินเดือนเท่าไร
SQL> select ename,job,sal from emp
2    where ename='KING';
• ใครบ้ างที่ไม่มีคา com
                   ่
SQL> select ename,comm
2    from emp
3    where comm is null;
• ใครบ้ างมีคา comm.
             ่
SQL> select ename,comm
2    from emp
3    where comm is not null;
• king ทางานแผนกชื่ออะไร และที่ไหน (เชื่อม 2 ตาราง)
SQL> select emp.ename,dept.dname,dept.loc
2    from emp , dept
3    where emp.deptno = dept.deptno and
     emp.ename ='KING';
• มีพนักงานชื่ออะไร เงินเดือนเท่าไร ทางานที่ไหน ที่อยู่แผนก sales
SQL> Select e.ename, e.sal, d.loc, d.Dname
2    From emp e , dept d
3    Where d.deptno = e.deptno and
     e.deptno=30;
• มีพนักงานที่อยู่แผนก sales มีชื่อว่าอะไรบ้ าง ตาแหน่ง เงือนเดือน
  เท่าไร
SQL> Select e.ename, e.sal, e.job, d.Dname
2    From emp e , dept d
3    Where d.deptno = e.deptno and
     e.deptno=30;
• ชื่อ เงินเดือน ตาแหน่ง ของแผนก sales และเงินมากกว่า 2500
SQL> Select e.ename, e.sal, e.job, d.Dname
2    From emp e , dept d
3    Where d.deptno = e.deptno and
     e.deptno=30 and e.sal>2500;
• หาชื่อ เงินเดือน ที่ตงแผนก อยุแผนกไหน ของ king
                       ั้
SQL> select e.ename ,e.sal,d.loc,d.dname
2    from emp e , dept d
3    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 emp
3    where job = 'MANAGER'
• มีพนักงานกี่คน
SQL> select count(*) from emp;
• แต่ละตาแหน่งมีเงินสูงสุด ต่าสุด เฉลี่ย เท่าไร
SQL> select job , max(sal) , min(sal), avg(sal)
2    from emp
3    group by job;
• มีพนักงานตาแหน่งไรบ้ าง ที่มีเงินเดือนเฉลี่ยสูงกว่า 2000
SQL> select ename , job , avg(sal) from emp
2    having avg(sal)>2000
3    group by ename , job;
• ใครเงินเดือนมากกว่า smith
SQL> select ename ,sal from emp
2    where sal > ( select sal from emp where
     ename = 'SMITH');

More Related Content

PPT
Chapter 1 2
PPTX
งานนำเสนอ
PPTX
เมทริกซ์ง่ายจะตาย
PDF
การใช้โปรแกรม Access เบื้องต้น
PDF
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
PPT
Database architecture
PDF
PDF
การสร้างตาราง
Chapter 1 2
งานนำเสนอ
เมทริกซ์ง่ายจะตาย
การใช้โปรแกรม Access เบื้องต้น
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
Database architecture
การสร้างตาราง

Similar to Ite 237 midterm guide (20)

PDF
การจัดการฐานข้อมูล
PDF
ความรู้พื้นฐานเกี่ยวกับระบบฐานข้อมูล
PDF
SlideShare เรื่อง การออกแบบฐานข้อมูล
PPTX
PDF
ใบความรู้ที่ 1การออกแบบฐานข้อมูล
PDF
06.1 logical database design[transform erd into relations]
PDF
แบบจำลองข้อมูล
PDF
PDF
PDF
05 entity relationship model
PPT
นอร์มัลไลเซชัน
PPT
PDF
การจัดการฐานข้อมูลเชิงสัมพันธ์2
PDF
การจัดการฐานข้อมูลเชิงสัมพันธ์2
PPT
Chapter8การออกแบบข้อมูล
PDF
Unit 4 normalazation
PDF
หน่วยที่ 3 การสร้างตาราง
PDF
หน่วยการเรียนรู้ที่ 7 การสร้างแบบสอบถามวิชา การจัดการฐานข้อมูล
PPTX
บทที่ 5
การจัดการฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับระบบฐานข้อมูล
SlideShare เรื่อง การออกแบบฐานข้อมูล
ใบความรู้ที่ 1การออกแบบฐานข้อมูล
06.1 logical database design[transform erd into relations]
แบบจำลองข้อมูล
05 entity relationship model
นอร์มัลไลเซชัน
การจัดการฐานข้อมูลเชิงสัมพันธ์2
การจัดการฐานข้อมูลเชิงสัมพันธ์2
Chapter8การออกแบบข้อมูล
Unit 4 normalazation
หน่วยที่ 3 การสร้างตาราง
หน่วยการเรียนรู้ที่ 7 การสร้างแบบสอบถามวิชา การจัดการฐานข้อมูล
บทที่ 5
Ad

Ite 237 midterm guide

  • 1. ITE 237 Advance Database Midterm
  • 2. Entity • วัตถุที่เราสนใจ อาจเป็ นได้ ทงบุคคล สถานที่ วัตถุ เหตุการณ์ หรื อ ั้ แนวคิดที่ก่อให้ เกิดกลุมของข้ อมูลที่ต้องการ ่ เช่น นักเรี ยนทุกคนมีข้อมูลเหมือนกันแต่ไม่มีเงินเดือนแบบอาจารย์ ดังนัน นักเรี ยนจะอยู่คนละเอนทิตี ้กับอาจารย์ ้ • มี 2 แบบ – Strong entity ซึงมี PK ่ – Weak entity ไม่มี PK แต่มี Partial key ซึงนาไปใช้ ร่วมกับ PK ที่ ่ ดึงมาจาก strong กลายเป็ น คีย์ร่วม มีไว้ สาหรับ Delete Cascade
  • 3. Attribute • ลักษณะหรื อคุณสมบัติที่นามาอธิบายเอนติตี ้ และ ความสัมพันธ์ • Single value attribute มีค่าเดียวใน record • Key attribute คือ attribute ที่เป็ น PK • Composite attribute คือมีหลายค่า – เช่น ชื่อ > ชื่อจริง , นามสกุล บางองค์กรก็รวม บางองค์กรก็แยก เพือไว้ ใช้ ค้นหา ่ ข้ อมูลตามความต้ องการ • Multi-value attribute คือ 1 attribute มีได้ หลายค่า – เช่น เบอร์ โทร ซึ่งต้ องแตกตารางใหม่ เอา PK ไปใช้ ร่วมด้ วย • Derived attribute คือ attribute ที่ได้ จากการคานวณจาก attribute อื่นๆ
  • 4. Single value attribute • สัญลักษณ์ที่ใช้ คือ วงรี เส้ นขอบเส้ นเดี่ยว มีชื่อแอททริ บิวต์บรรจุอยู่ ภายใน
  • 5. Composite attribute • สัญลักษณ์ที่ใช้ แสดง Composite Attribute คือวงรี เส้ นขอบ เส้ นเดี่ยว แต่มีวงรี ย่อยมาเชื่อมต่อด้ วย
  • 6. Multivalued Attribute • สัญลักษณ์ที่ใช้ แสดง Multivalued Attribute คือวงรี ที่มีเส้ น ขอบเป็ นเส้ นคู่ บรรจุชื่อ แอททริ บิวต์ภายใน
  • 7. Derived Attribute • สัญลักษณ์ที่แสดง Derived Attribute เป็ นวงรี ที่มีเส้ นขอบเป็ น เส้ นประ มีชื่อแอททริ บิวต์บรรจุภายใน
  • 8. Cardinality • Cardinality คือความสัมพันระหว่าง entity มี 3 แบบ • ความสัมพันธ์แบบหนึ่งต่อหนึ่ง หรื อ 1-1 • ความสัมพันธ์แบบหนึ่งต่อกลุม หรื อ 1-M ่ • แบบกลุมต่อกลุม หรื อ M-N ่ ่
  • 9. ความสัมพันธ์แบบหนึ่งต่อหนึ่ง หรื อ 1-1 – เช่น อาจารย์ 1 คน จะสามารถเป็ นคณบดีได้ 1 แผนก และในขณะเดียวกัน คณะวิชาแต่ละคณะ ก็มีอาจารย์ที่ทาหน้ าที่เป็ นคณบดีได้ เพียง 1 คนเท่านัน ้
  • 10. ความสัมพันธ์แบบหนึ่งต่อกลุ่ม หรื อ 1-M – เช่น ลูกค้ าหนึงคนมีใบสังซื ้อได้ หลายใบ และใบสังซื ้อแต่ละใบจับคูกบลูกค้ า ่ ่ ่ ่ ั ได้ เพียงคนเดียว
  • 11. แบบกลุ่มต่อกลุ่ม หรื อ M-N – เช่น สินค้ า 1 ชนิดถูกสังตามใบสังซื ้อได้ หลายใบ และใบสังซื ้อ 1 ใบสามารถ ่ ่ ่ สังสินค้ าได้ หลายชนิด ่
  • 12. แปลง ER เป็ น Relation 1-1 • ทาได้ 3 วิธี • 1.สร้ างตารางใหม่ โดยเอา PK ทัง2 มาเป็ น pk ของตารางใหม่ ้ • 2.ย้ าย pk ฝั่ ง partial มาเป็ น fk ในฝั่ ง total • 3.ให้ นา pk ฝั่ งข้ อมูลมากมาเป็ น fk ฝั่ งข้ อมูลน้ อย 1-M • วิธีการทาคือย้ าย pk ฝั่ ง 1 ไปเป็ น fk ในฝั่ ง M M-N • วิธีการทาคือ M-N ต้ องสร้ างตารางใหม่แล้ วนา Pk ทัง2 ตารางมาใช้ เป็ น ทังpkร่ วมและfk ้ ้ ตารางใหม่ มีไว้ เพื่อ delete cascade แต่ต้องระวังบางครังอาจใช้ ไม่ได้ ต้องมี pk เพิ่ม ซึง ้ ่ เป็ นของ ตารางใหม่เอง
  • 13. Recursive • Recursive คือ ข้ อมูลที่มีความสัมพันธ์กนเองในเอนทิตี ้ ั • 1-1 เช่น พี่1 คนมีน้องรหัสได้ 1 คน ส่วนน้ องก็มีพี่รหัสได้ คนเดียว STUDENT 1 1 HAVE
  • 14. • 1-M เช่น หัวหน้ า1 คนมีลกน้ องได้ หลายคน ลูกน้ องหลายคนมีหวหน้ า ู ั ได้ คนเดียว EMPLOYEE 1 M HAVE
  • 15. • M-N เช่น เรี ยนวิชาต้ องผ่านหลายวิชาขันต่ากว่า เช่น จะเรี ยน ้ eng3 ต้ องเรี ยน eng1 และ 2 ก่อน SUBJECT M N PASS
  • 16. แปลง ER เป็ น Relation 1-1 – วิธีทา ให้ สร้ างตารางใหม่และให้ เอา pk มาเปลี่ยนชื่อเช่น IDE มาเป็ น ID_F ,ID_M ซึงเป็ น pk ร่วม ่ 1-M – วิธีทา ให้ เพิ่ม attribute แล้ วเปลี่ยนชื่อ pk เพื่อให้ ทาเป็ น fk (ซึงจะเป็ น ่ total ไม่ได้ เพราะค่าหัวหน้ าจะว่าง) M-N – วิธีทา ต้ องสร้ างตารางใหม่และเอา pk มาเปลี่ยนชื่อ ซึงเป็ น pk ร่วม ่
  • 17. FK กับ Partial Key • Partial key จะใช้ใน weak entity ซึ่งนา pk จาก strong entity มาเป็นคีย์ร่วม ว่างและซ้าไม่ได้ – EX เช่นตารางครอบครัวมี ชื่อ ความสัมพันธ์ เวลาวาดให้ใช้ชื่อเป็นเส้นประ (เพราะเป็น partial key ซึ่งจะใช้ pk จาก strongร่วมด้วย) • แต่ถ้าเป็น FK จะนา pk จากอีกตารางมาใช้ร่วม ซึ่งซ้าและว่างก็ได้
  • 19. • Single Value Attribute • Multivalued Attribute • Derived Attribute
  • 21. 1 • 1-1 1 E1 E2 1 N • 1-N E1 E2 N • M-N M E1 E2
  • 22. การใช้ Partial หรื อ Total *จะต้ องคานึงถึงความยืดหยุ่น M 1 พนักงาน แผนก M 1 E1 E2
  • 23. • 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 อื่นๆได้
  • 24. • Super key = attribute หรื อกลุม ที่สามารถบอกค่า ่ attribute อื่นได้ , เราไม่ใช้ ใน db เพราะยากกว่าการ insert (ถ้ าให้ เป็ น pk หมด จะว่างไม่ได้ และซ ้าไม่ได้ ) • Candidate key = attribute ที่น้อยที่สดใน sk ที่บอก ุ attribute อื่นได้ (ว่างและซ ้าไม่ได้ ) • Primary key = candidate keyที่เราเลือกให้ กาหนด attribute อื่นใน entity (ว่างและซ ้าไม่ได้ )
  • 25. • Alternative key (secondary key) = candidate key ที่เราไม่เลือก เอาไว้ ทา secondary index เพื่อไว้ ค้น (จริ งๆ ใน DB จะใช้ where) (ว่างและซ ้าไม่ได้ ) • Foreign key = candidate key ที่ไปอยู่ในตารางอื่น มีไว้ สาหรับสร้ างความสัมพันธ์ (ว่างและซ ้าได้ ) • Dependency = attribute หนึ่งขึ ้นอยู่กบ attribute ั หนึ่ง
  • 26. 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. เมื่อมีการอัพเดทแม่ ลูกก็จะอัพด้ วย
  • 27. Normalization • Normalization คือการกระจายตาราง เพื่อขจัด anomaly( ข้ อผิดพลาด) 3 อย่าง ซึงจะลดความซ ้าซ้ อน ่ • 1. insert คือยากต่อการใส่ข้อมูลหรื อใส่คาใน entity แล้ วบางครัง ่ ้ ไม่สามารถใส่ pk หรื อมีคาว่าง เช่น ตารางบุคคลมีนกเรี ยนกับครู ให้ ่ ั IDS เป็ น PK แล้ วมีครู เข้ ามาใหม่ แต่ไม่สามารถทาได้ เพราะไม่มี IDS เพิมตาม(ไม่มี PK) ่ • 2. update คือเมื่อupdate ต้ อง update ทังหมด ซึงมี ้ ่ โอกาสผิด • 3. delete คือลบแล้ วหายไปจากระบบเลย
  • 28. 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) ึ่
  • 29. หลักการแปลง ER เป็ น Relation 1. ให้ แปลงเอนติติ ้ทุกตัวเป็ นรี เลชัน และแปลงแอตทริ บิวต์ทกตัวของเอน ่ ุ ติตี ้ให้ เป็ นแอตทริ บิวต์ของรี เลชัน ่ Customer CusID CusName CusAdd CusSurName • Customer(CusID, CusName, CusSurName, CusAdd)
  • 30. 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*)
  • 31. 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*)
  • 32. 3. สร้ างรีเลชันใหม่สาหรับความสัมพันธ์แบบ M to M ่ โดยสร้ าง PK ได้ จาก การนาเอา PK ของแต่ละรีเลชันมาประกอบกัน ่ Discount CusName M M Customer รายการสังซื่อ ่ Orders Amount UnitPrice CusID OID CusSurName • Customer(CusID, CusName, CusSurName) • Orders(OID,OrderDate, ReqDate ,CusID*) • OrderDetail(OID*, CusID*, Discount, Amount, UnitPrice)
  • 33. 4. สาหรับเอนติติ ้ที่มีแอตทริ บิวต์แบบหลายค่า • ให้ สร้ างรี เลชันเพิ่ม ที่มีแอตทริ บิวต์แบบหลายค่านัน ่ ้ • PK ของรี เลชันใหม่เกิดจาก PK ของรี เลชันเดิมประกอบกับ แอตทริ บิวต์ที่ ่ ่ เกิดจากแอตทริ บิวแบบหลายค่า CusName Customer CreditNum CusID CusSurName • Customer(CusID, CusName, CusSurName) • CusCredit(CusID*, CreditNum)
  • 34. 5. สาหรับเอนติตี ้แบบอ่อน ให้ สร้ างเป็ นรี เลชัน และมี PK ที่มาจาก PK ่ ของรี เลชันหนึ่งรวมกับ PK ของเอนติตี ้แบบอ่อน ่ 1 M Invoice Invoice has Detail Inv no Date Line • Invoice(Inv no, Date) • InvoiceDetail( Inv no* ,Line)
  • 35. หมายเลขใบเสร็จ........................... วันที่ออก................................ ชื่อลูกค้ า ……………………………............................. ที่อยู.่ ............................................................................................... รหัสสินค้ า ชื่อสินค้ า ราคา/หน่วย จานวน รวม รวมมูลค่า ภาษี มลค่าเพิ่ม(VAT) ู ราคาสุทธิ พนักงาน.....................................................
  • 37. 1 1 E-Mail 1 1 N N วันทีสั่งซือ ่ ้ 1 N M 1 N N M N N 1 E-Mail
  • 38. PL / SQL • Field dept มี DEPTNO , DNAME, LOC • Emp มี EMPNO, ENAME , JOB, MGR, HIREDATE ,SAL , COMM , DEPTNO • Salgrade มี GRADE LOSAL HISAL
  • 39. • อยากทราบว่า king เงินเดือนเท่าไร SQL> select ename,sal from emp 2 where ename='KING';
  • 43. • อยากรู้ ว่าพนักงานคนไหนบ้ างที่เป็ น saleman SQL> select * from emp 2 where job = 'SALESMAN';
  • 44. • อยากทราบว่า king มีตาแหน่งอะไร และเงินเดือนเท่าไร SQL> select ename,job,sal from emp 2 where ename='KING';
  • 45. • ใครบ้ างที่ไม่มีคา com ่ SQL> select ename,comm 2 from emp 3 where comm is null;
  • 46. • ใครบ้ างมีคา comm. ่ SQL> select ename,comm 2 from emp 3 where comm is not null;
  • 47. • king ทางานแผนกชื่ออะไร และที่ไหน (เชื่อม 2 ตาราง) SQL> select emp.ename,dept.dname,dept.loc 2 from emp , dept 3 where emp.deptno = dept.deptno and emp.ename ='KING';
  • 48. • มีพนักงานชื่ออะไร เงินเดือนเท่าไร ทางานที่ไหน ที่อยู่แผนก sales SQL> Select e.ename, e.sal, d.loc, d.Dname 2 From emp e , dept d 3 Where d.deptno = e.deptno and e.deptno=30;
  • 49. • มีพนักงานที่อยู่แผนก sales มีชื่อว่าอะไรบ้ าง ตาแหน่ง เงือนเดือน เท่าไร SQL> Select e.ename, e.sal, e.job, d.Dname 2 From emp e , dept d 3 Where d.deptno = e.deptno and e.deptno=30;
  • 50. • ชื่อ เงินเดือน ตาแหน่ง ของแผนก sales และเงินมากกว่า 2500 SQL> Select e.ename, e.sal, e.job, d.Dname 2 From emp e , dept d 3 Where d.deptno = e.deptno and e.deptno=30 and e.sal>2500;
  • 51. • หาชื่อ เงินเดือน ที่ตงแผนก อยุแผนกไหน ของ king ั้ SQL> select e.ename ,e.sal,d.loc,d.dname 2 from emp e , dept d 3 where e.deptno = d.deptno and e.ename = 'KING';
  • 52. • เงินเดือนสูงสุด ต่าสุด เฉลี่ยของ emp เท่าไร SQL> select avg(sal) , max(sal) , min(sal) 2 from emp;
  • 53. • คนที่มีตาแหน่ง manager เงินเดือน ตาสุด สูงสุด เฉลี่ย เท่าไร SQL> select max(sal) , min(sal) , avg(sal) 2 from emp 3 where job = 'MANAGER'
  • 55. • แต่ละตาแหน่งมีเงินสูงสุด ต่าสุด เฉลี่ย เท่าไร SQL> select job , max(sal) , min(sal), avg(sal) 2 from emp 3 group by job;
  • 56. • มีพนักงานตาแหน่งไรบ้ าง ที่มีเงินเดือนเฉลี่ยสูงกว่า 2000 SQL> select ename , job , avg(sal) from emp 2 having avg(sal)>2000 3 group by ename , job;
  • 57. • ใครเงินเดือนมากกว่า smith SQL> select ename ,sal from emp 2 where sal > ( select sal from emp where ename = 'SMITH');