ฐานข้อมูลเชิงสัมพันธ์: คีย์และความสัมพันธ์
แนะนำใหม่| English | ความหมาย |
|---|---|
| primary key/ˈpraɪməri kiː/ | คีย์หลัก |
| foreign key/ˈfɒrən kiː/ | คีย์ภายนอก |
อะไรจะอธิบายการสังเกตนี้ได้?
- การซ้ำที่อยู่ผู้ใช้ในคำสั่งซื้อทุกฉบับอาจทำให้เกิดบันทึกที่ขัดแย้งกันเมื่อที่อยู่มีการเปลี่ยนแปลง
- เริ่มต้นด้วยการทำนาย ระบุปริมาณหรือลักษณะที่คุณจะเปรียบเทียบ แล้วตัดสินใจว่าหลักฐานอะไรที่จะแยกแยะคำอธิบายสองแบบได้
สร้างโมเดล
- ตารางฐานข้อมูลเชิงสัมพันธ์ประกอบด้วยแถวและคุณสมบัติ คีย์หลัก ใช้ระบุแถว; คีย์ภายนอก เชื่อมโยงไปยังคีย์อ้างอิงในตารางอื่น การทำให้เป็นมาตรฐานสามารถลดการซ้ำซ้อนที่ไม่จำเป็นและความผิดปกติในการอัปเดตได้ขณะคงความสัมพันธ์ที่มีนัยสำคัญไว้
- คีย์หลัก (primary key): เซตของแอททริบิวต์ที่ใช้ระบุแถวในตารางได้อย่างเดียว; คีย์อ้างอิง (foreign key): เซตของแอททริบิวต์ที่อ้างอิงถึงคีย์ในตารางอื่น
การออกแบบแบบใดช่วยหลีกเลี่ยงการอัปเดตที่อยู่ลูกค้าซ้ำซ้อน?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การจัดเก็บที่อยู่ครั้งเดียวในตารางลูกค้าและเชื่อมโยงคำสั่งซื้อด้วย foreign key ทำให้แต่ละข้อเท็จจริงอัปเดตในที่เดียว การซ้ำซ้อนที่อยู่/orders ทุกคำสั่งซื้อนำไปสู่สำเนาที่ไม่สอดคล้องกัน และชื่อไม่ได้รับประกันความเป็นเอกลักษณ์
จับคู่แต่ละคำศัพท์เทคนิคกับความหมายที่แม่นยำ
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ใช้นิยามเพื่อแยกแยะปริมาณและกระบวนการที่เกี่ยวข้อง
เลือกหลักฐานมาทดสอบสมมติฐาน
- การรวม (join) รวมแถวตามเงื่อนไขที่กำหนด จำนวนผลลัพธ์ขึ้นอยู่กับความเข้มแข็งของความสัมพันธ์และตัวกรอง ข้อจำกัดคีย์ภายนอกบังคับกฎความสัมพันธ์แต่ไม่ทำการเข้ารหัสข้อมูลส่วนบุคคลโดยอัตโนมัติ
- ออกแบบชุดข้อมูลคำสั่งซื้อผู้ใช้อ้างอิงขนาดเล็กที่ไม่มีข้อมูลส่วนบุคคลจริง Declare คีย์ ทดสอบการแทรกซ้ำและการอ้างอิงที่หายไป จากนั้นตรวจสอบผลลัพธ์การ query กับตารางเป้าหมายที่คำนวณด้วยมือ
นิสัยสองอย่างใดทำให้การตรวจสอบหรือแบบจำลองในกรณีนี้รองรับได้มากขึ้น?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
การระบุเงื่อนไขและสมมติฐานช่วยให้ผู้อื่นทำงานซ้ำได้โดยถูกต้อง และการบันทึกหลักฐานรองรับช่วยให้พวกเขาตรวจสอบข้อสรุปได้ การซ่อนผลลัพธ์ที่ขัดแย้งกันจะกำจัดหลักฐานที่อาจทลายข้อสรุปที่ผิดพลาด และข้อมูลจากตัววัดเพียงหนึ่งค่าไม่สามารถใช้ยืนยันข้ออ้างที่กว้างขวางได้
ทำงานจากปริมาณที่ทราบค่า
- ระบุค่าที่ทราบและหน่วยของมัน เลือกความสัมพันธ์โดยพิจารณาว่าข้อสมมติฐานสอดคล้องกับเคสนี้ แล้วจัดรูปสมการก่อนแทนค่า
- ข้อมูล: ลูกค้าสี่รายมีคำสั่งซื้อ分別是 2, 0, 3 และ 1 คำสั่ง An inner join ของลูกค้าไปยังคำสั่งคืน 2+0+3+1 = 6แถว A left join ยังคงลูกค้าที่ไม่มีคำสั่งไว้เป็นแถว null-matched หนึ่งแถว ทำให้ได้ 7在这里
ลูกค้าสามรายมีคำสั่งซื้อจำนวน 1, 3 และ 2 การรวมภายใน (inner join) ระหว่างลูกค้ากับคำสั่งจะคืนกี่แถว? ใช้ลำดับขั้นตอนเดียวกัน: ข้อมูลที่ทราบ → แบบจำลอง →ความสัมพันธ์ → แทนค่า → หน่วยและการตีความ
ลูกค้า 3 คน มีคำสั่งซื้อ 1, 3 และ 2 ตามลำดับ การ JOIN แบบภายในระหว่างลูกค้ากับคำสั่งซื้อจะคืนแถวจำนวนเท่าไหร่?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ผลลัพธ์คือ 6แถว รู้: ลูกค้าสามรายมี 1, 3 และ 2 คำสั่งซื้อ Inner join ส่งคืนหนึ่งแถวสำหรับคู่ลูกค้า-คำสั่งซื้อ: 1 + 3 + 2 = 6 แถว ลูกค้าที่ไม่มีคำสั่งซื้อจะไม่เพิ่มอะไรเข้าใน inner join
ตรวจสอบข้อสรุปและขอบเขต
- คีย์หลักไม่จำเป็นต้องเป็นชื่อบุคคล การรวม (join) ไม่ใช่การต่อกันของตารางอย่างง่าย ควรใช้ query ที่มีพารามิเตอร์สำหรับข้อมูลที่ไม่ไว้วางใจแทนการสร้าง SQL จากสตริงดิบ
- กลับไปที่การสังเกตเดิม อธิบายว่าผลลัพธ์นี้สนับสนุนสิ่งใด มีเงื่อนไขใดบ้าง และเป็นอย่างไรในการทดสอบคำอธิบายอื่นที่ขัดแย้งกัน
คีย์ภายนอกจะเข้ารหัสทุกแถวโดยอัตโนมัติ คำกล่าวนี้ไม่ถูกต้อง: คีย์ภายนอกคือลิงก์อ้างอิงระหว่างตาราง - ใช้บังคับให้แถวที่ถูกอ้างอิงมีอยู่จริง มันไม่ทำการเข้ารหัส การปกป้องเนื้อหาในแถวเป็นกลไกความปลอดภัยแยกต่างหาก
ฐานข้อมูลเชิงสัมพันธ์: คีย์และความสัมพันธ์: การรวม (join) รวมแถวตามเงื่อนไขที่กำหนด จำนวนผลลัพธ์ขึ้นอยู่กับความเข้มแข็งของความสัมพันธ์และตัวกรอง ข้อจำกัดคีย์ภายนอกบังคับกฎความสัมพันธ์แต่ไม่ทำการเข้ารหัสข้อมูลส่วนบุคคลโดยอัตโนมัติ
คีย์ภายนอกจะทำการเข้ารหัสทุกแถวโดยอัตโนมัติ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Foreign key เป็นลิงก์อ้างอิงระหว่างตาราง - บังคับให้แถวที่ถูกอ้างอิงมีอยู่จริง มันไม่ทำ encryption; การปกป้องเนื้อหาแถวเป็นกลไกความปลอดภัยแยกต่างหาก
ชุดคุณสมบัติที่ระบุแถวตารางได้อย่างไม่ซ้ำกัน: เขียนคำศัพท์เทคนิค
Difficulty 1/5 · 100 coins + a small bonus on first completion today
คีย์หลักหมายถึง เซตของคุณสมบัติที่ใช้ระบุแถวตารางได้อย่างเป็นเอกลักษณ์