การเชื่อมโยงตารางในฐานข้อมูลด้วย Python
สมมติว่าเรามีตารางเก็บชื่อผู้ใช้ และเมืองที่พวกเขาอาศัยอยู่:
| 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 |
งานปฏิบัติ
สมมติว่าคุณต้องการเก็บข้อมูลสินค้า (ชื่อ, ราคา, จำนวน) และหมวดหมู่ของสินค้าเหล่านี้ อธิบายโครงสร้างการจัดเก็บ
สมมติว่าคุณต้องการเก็บข้อมูลแม่น้ำและทะเล ที่แม่น้ำเหล่านี้ไหลลงไป อธิบายโครงสร้าง การจัดเก็บ
สมมติว่าคุณต้องการเก็บข้อมูลเมืองและประเทศ ที่เมืองเหล่านั้นตั้งอยู่ อธิบายโครงสร้าง การจัดเก็บ