ite 237 midterm guide
DESCRIPTION
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 เปน 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
HAVE
1 1
• 1-M เชน หวหนา1 คนมลกนองไดหลายคน ลกนองหลายคนมหวหนาไดคนเดยว
EMPLOYEE
HAVE
M 1
• M-N เชน เรยนวชาตองผานหลายวชาขนต ากวา เชน จะเรยน eng3 ตองเรยน eng1 และ 2 กอน
SUBJECT
PASS
N M
แปลง 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-N
• M-N
E1
E1
E1
E2
E2
E2
1 1
1 N
M N
การใช Partial หรอ Total
*จะตองค านงถงความยดหยน
พนกงาน แผนก M 1
E1 E2 M 1
• 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, CusSurName,
CusAdd)
Customer CusID
CusName
CusSurName CusAdd
2. เพมแอตทรบวตใหกบรเลชน 2.1 ถาความสมพนธเปนแบบ 1 to 1 ใหน า pk ของรเลชนฝงใดฝงหนงไป
อยในรเลชนของอกฝงหนง
**ตองใหคาในแอตทรบวใหมเปน Null นอยสดหรอไมม
• Teacher(ThID, ThName, ThSurName)
• Faculty(FacID,FacName,ThID*)
Teacher
ThID ThName
ThSurName
เปนคณบด Faculty
FacID FacName
1 1
2. เพมแอตทรบวตใหกบรเลชน 2.2 ถาความสมพนธเปนแบบ 1 to Mใหน า pk ของรเลชนฝงทเปน 1ไปอยในร
เลชนของฝงทเปน M
• Customer(CusID, CusName, CusSurName)
• Orders(OID,OrderDate, ReqDate ,CusID*)
Customer
CusID
CusName
CusSurName
สงซอ Orders
OID OrderDate
1 M
ReqDate
3. สรางรเลชนใหมส าหรบความสมพนธแบบ M to M
โดยสราง PK ไดจาก การน าเอา PK ของแตละรเลชนมาประกอบกน
• Customer(CusID, CusName, CusSurName)
• Orders(OID,OrderDate, ReqDate ,CusID*)
• OrderDetail(OID*, CusID*, Discount, Amount, UnitPrice)
Customer
CusID
CusName
CusSurName
รายการสงซอ Orders
OID UnitPrice
M M
Amount
Discount
4. ส าหรบเอนตตทมแอตทรบวตแบบหลายคา • ใหสรางรเลชนเพม ทมแอตทรบวตแบบหลายคานน • PK ของรเลชนใหมเกดจาก PK ของรเลชนเดมประกอบกบ แอตทรบวตทเกดจากแอตทรบวแบบหลายคา
• Customer(CusID, CusName, CusSurName)
• CusCredit(CusID*, CreditNum)
Customer
CusID
CusName
CusSurName
CreditNum
5. ส าหรบเอนตตแบบออน ใหสรางเปนรเลชน และม PK ทมาจาก PK ของรเลชนหนงรวมกบ PK ของเอนตตแบบออน
• Invoice(Inv no, Date)
• InvoiceDetail( Inv no* ,Line)
Date
Invoice has Invoice
Detail
Inv no Line
1 M
หมายเลขใบเสรจ........................... วนทออก................................ ชอลกคา ……………………………............................. ทอย................................................................................................
รหสสนคา ชอสนคา ราคา/หนวย จ านวน รวม
รวมมลคา ภาษมลคาเพม(VAT)
ราคาสทธ พนกงาน.....................................................
1
1
1
N
1 N
N
1
N
M
N M
N
1
N
1
วนทสงซ อ
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');