⊗pyPmDOLT 122 of 129 menu

Liên kết bảng trong cơ sở dữ liệu bằng Python

Giả sử chúng ta có một bảng chứa tên người dùng và các thành phố họ sống:

users
id name city
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

Nhược điểm của bảng này là một thành phố lặp lại nhiều lần cho các người dùng khác nhau. Điều này dẫn đến một số vấn đề.

Thứ nhất, việc lặp lại liên tục dẫn đến việc cơ sở dữ liệu chiếm dụng nhiều không gian hơn đáng kể.

Thứ hai, việc thực hiện các thao tác với các thành phố khá bất tiện. Ví dụ, chúng ta muốn hiển thị danh sách tất cả các thành phố. Sẽ không thể thực hiện điều này một cách đơn giản. Chúng ta sẽ phải lấy tất cả người dùng cùng với các thành phố của họ, sau đó loại bỏ các bản sao chép từ các thành phố đã lấy và chỉ khi đó chúng ta mới nhận được danh sách này.

Và bây giờ hãy tưởng tượng rằng trong cơ sở dữ liệu có 10000 người dùng từ 10 thành phố - chỉ để lấy 10 thành phố này, chúng ta sẽ phải truy xuất toàn bộ bảng với số lượng hàng khổng lồ - điều này sẽ trở thành một thao tác rất chậm với việc lãng phí tài nguyên vô nghĩa.

Giải pháp cho vấn đề

Cần chia bảng của chúng ta thành hai: một bảng sẽ lưu trữ các thành phố, và bảng kia - người dùng. Đồng thời, trong bảng người dùng sẽ có cột city_id, cột này sẽ tham chiếu đến thành phố của người dùng.

Vậy, hãy tạo hai bảng. Bảng với các thành phố:

cities
id name
1 city1
2 city2
3 city3

Bảng với người dùng:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Bài tập thực hành

Giả sử bạn cần lưu trữ sản phẩm (tên, giá, số lượng) và danh mục của các sản phẩm này. Hãy mô tả cấu trúc lưu trữ.

Giả sử bạn cần lưu trữ các con sông và biển mà các con sông này đổ vào. Hãy mô tả cấu trúc lưu trữ.

Giả sử bạn cần lưu trữ các thành phố và quốc gia mà chúng thuộc về. Hãy mô tả cấu trúc lưu trữ.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối