การเชื่อมโยงตารางในฐานข้อมูล
สมมติว่าเรามีตารางเก็บชื่อผู้ใช้ และเมืองที่พวกเขาอาศัยอยู่:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
ข้อเสียของตารางนี้คือ เมืองเดียวกันถูกทำซ้ำหลายครั้ง สำหรับผู้ใช้ที่ต่างกัน สิ่งนี้นำไปสู่ปัญหา บางประการ
ประการแรก การทำซ้ำตลอดเวลาทำให้ ฐานข้อมูลใช้พื้นที่ มากขึ้นมาก
ประการที่สอง ค่อนข้างไม่สะดวกในการดำเนินการ กับเมือง ตัวอย่างเช่น เราต้องการ แสดงรายชื่อเมืองทั้งหมดออกทางหน้าจอ เรา จะไม่สามารถทำสิ่งนี้ได้ง่ายๆ เราจะต้อง ดึงข้อมูลผู้ใช้ทั้งหมดพร้อมกับเมืองของพวกเขา จากนั้นลบรายการซ้ำของเมืองที่ได้ และหลังจากนั้นเท่านั้นเราจะได้รายการนี้
และตอนนี้ลองจินตนาการว่าในฐานข้อมูลมี 10000
ผู้ใช้จาก 10 เมือง - เพื่อเมืองเหล่านี้ 10
เมือง เราจะต้องดึงตารางทั้งหมด
ที่มีจำนวนแถวมากมายมหาศาล - ผลลัพธ์
จะเป็นกระบวนการที่ช้ามากด้วยการ
ใช้ทรัพยากรที่ไร้ความหมาย
วิธีแก้ปัญหา
จำเป็นต้องแบ่งตารางของเราออกเป็นสองตาราง: ในตารางหนึ่ง
จะเก็บเมือง และในตารางที่สอง - ผู้ใช้
ในขณะเดียวกันในตารางผู้ใช้จะมีคอลัมน์
city_id ซึ่งจะ อ้างอิง
ถึงเมืองของผู้ใช้
เอาล่ะ เรามาสร้างตารางสองตารางกัน ตาราง เมือง:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
ตารางผู้ใช้:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
สมมติว่าคุณต้องการเก็บสินค้า (ชื่อ, ราคา, จำนวน) และหมวดหมู่ของสินค้าเหล่านี้ จงอธิบายโครงสร้างการจัดเก็บ
สมมติว่าคุณต้องการเก็บแม่น้ำและทะเล ซึ่ง แม่น้ำเหล่านี้ไหลลงสู่ทะเลเหล่านั้น จงอธิบายโครงสร้างการจัดเก็บ
สมมติว่าคุณต้องการเก็บเมืองและประเทศ ที่เมืองเหล่านั้นตั้งอยู่ จงอธิบายโครงสร้าง การจัดเก็บ