EN813304 · Midterm
ชีทสรุป

ชีท 1 แผ่น 2 หน้า

จัดไว้ให้ครบทุกหัวข้อที่ออกสอบ ในพื้นที่ A4 สองหน้าพอดี — เปิดไฟล์ PDF แล้วลอกลงกระดาษด้วยลายมือ (กฎห้องสอบ: ต้องเขียนมือบนกระดาษจริง ห้ามพิมพ์ ห้ามปรินต์ ห้ามเขียนบน iPad)

ลำดับการลอก — ถ้าเขียนไม่ทันทั้งหมด รอบที่ 1 (ต้องมี): ER→Schema · NULL/ตรรกะ 3 ค่า · Aggregates + GROUP BY/HAVING · Keys · Joins · Subqueries · Relational Algebra
รอบที่ 2 (ถ้ามีที่เหลือ): CREATE TABLE · Predicates + LIKE · ER symbols · Modification/CASE · Views · Set operations
รอบที่ 3 (เติมช่องว่าง): ทฤษฎีบทที่ 1–4 · Data types · Index · Authorization · Naming/CHECK

เทคนิค: กล่องกรอบเหลืองในชีท = จุดที่ออกสอบบ่อยหรือคนผิดกันเยอะ ลอกให้ครบ · โค้ดยาว ๆ ลอกแค่โครง (keyword + ลำดับ clause) พอ · เขียนหน้าหลังตามลำดับนี้ จะได้ไม่ต้องพลิกไปมาตอนสอบ

หน้า 1Intro to DB · Relational Model · Relational Algebra · SQL basics · Joins

ชีทสรุปหน้า 1

หน้า 2Set ops · NULL · Aggregates · Subqueries · Views · Types/Index/Auth · Database Design

ชีทสรุปหน้า 2

สรุปสั้นแบบอ่านบนจอ

ถ้าอ่านบนมือถือแล้วรูปเล็กเกินไป ใช้เวอร์ชันข้อความด้านล่างแทนได้

Keys

Superkeyเซตของ attribute ≥1 ตัวที่ระบุ tuple ได้เฉพาะตัว · ถ้า K เป็น superkey แล้ว superset ของ K ก็เป็น superkey
Candidate keyminimal superkey — ไม่มีสับเซตแท้ตัวใดเป็น superkey
Primary keycandidate key ที่ผู้ออกแบบเลือก · ควรเป็นค่าที่ไม่เปลี่ยน
Foreign keyattribute ใน r₁ ที่ค่าต้องปรากฏเป็น PK ใน r₂ · r₁ = referencing, r₂ = referenced

Relational Algebra — 6 basic operators

Opความหมาย
σSelect — กรองแถว · = WHERE
ΠProject — เลือกคอลัมน์ · ลบแถวซ้ำอัตโนมัติ
∪Union — ต้อง arity เท่ากัน + domain เข้ากันได้
−Set difference
×Cartesian product — ทุกคู่
ρRename
∩ · ⋈derived — r ∩ s = r − (r − s) · join = σ(r × s)

ลำดับการทำงานของ SQL

FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT
นี่คือเหตุผลที่ WHERE ใช้ aggregate ไม่ได้ และ ORDER BY ใช้ alias จาก SELECT ได้

JOIN

INNERเฉพาะแถวที่จับคู่ได้ทั้งสองฝั่ง
LEFTทุกแถวซ้าย · ฝั่งขวาที่ไม่มีคู่ = NULL
RIGHTทุกแถวขวา · ฝั่งซ้ายที่ไม่มีคู่ = NULL
FULL OUTERทุกแถวทั้งสองฝั่ง · MySQL ไม่มี → LEFT UNION RIGHT
NATURALจับคู่อัตโนมัติจากชื่อคอลัมน์ร่วมทุกตัว · เก็บคอลัมน์ร่วมชุดเดียว

NULL

Subquery

ER → Schema

Composite attributeแตกเป็นหลายคอลัมน์ (ไม่ใช่ตารางใหม่)
Multi-valued attributeตารางแยกใหม่
1 : 1FK ฝั่งใดก็ได้ + UNIQUE
1 : N / N : 1FK ฝั่ง "many"
M : Njunction table ใหม่ PK = FK ทั้งสอง (+ relationship attributes)
Ternaryตารางใหม่ FK ทั้งสาม
Total (เส้นคู่ ═)FK NOT NULL
Partial (เส้นเดี่ยว —)FK อนุญาต NULL
Weak entity (กรอบสองชั้น)PK = (PK ของ owner, discriminator)