Tôi đang thiết kế một cơ sở dữ liệu nơi mọi thứ đều có thể được gắn thẻ và tôi có thể muốn chọn mọi thứ bằng một thẻ cụ thể.
Tôi đang đấu tranh với hai lựa chọn sau đây và muốn một số lời khuyên. Nếu có cách nào tốt hơn xin vui lòng cho tôi biết.
Lựa chọn A
Nhiều bảng tham gia "nhiều-nhiều".
tag: id tagmedia: id title src Creationmedia_tags: id media_id tag_idarticle: id title sáng tạo nội dungarticle_tags: id bài viết_id tag_id
Lựa chọn B
Một bảng "tham chiếu nhãn" duy nhất sử dụng cột "Bảng" để xác định bảng nào cần tham gia.
tag: id tagtag_reference: id row_id tag_id tablemedia: id title src Creationarticle: id title sáng tạo nội dung
Tùy chọn B có vẻ thuận lợi hơn từ quan điểm bảo trì, nhưng hãy cân nhắc rằng truy vấn SQL chọn mọi thứ và điều đó không thể thực hiện được nếu không có nhiều truy vấn.
khi sử dụngLựa chọn BBạn không thể đặt khóa ngoại cho các bảng khác. Vì vậy, tôi sẽ chọnLựa chọn Avà tạo bảng cho từng mối quan hệ m:n.
"Lựa chọn B từ góc độ bảo trì" - là một cơn ác mộng. Điều gì xảy ra nếu một bài viết bị xóa? Có cái này hàng_id
Tất cả các hàng sẽ vẫn ở trong tag_reference
bàn. Bạn luôn cần cập nhật các mục này theo cách thủ công.
Tôi là một lập trình viên xuất sắc, rất giỏi!