Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thiết kế DB:bảng thành viên riêng biệt hay tất cả trong một bảng?

Nó phụ thuộc rất nhiều vào những chi tiết "khác" đó là gì. Đây là một câu hỏi phổ biến và thú vị, và không có câu trả lời nào "khó và nhanh" thoạt nhìn. Nhưng nếu chúng ta nghĩ về vấn đề một cách trừu tượng hơn, về mối quan hệ thực tế giữa các thuộc tính ("chi tiết") của bất kỳ thứ cụ thể nào mà bạn muốn đại diện, chúng ta có thể tìm thấy một số điều rõ ràng.

Trong câu hỏi của bạn, bạn nói rằng bạn bè có các chi tiết "tối thiểu" và "khác". Thay vì phân loại những chi tiết này là "tối thiểu" hoặc "khác", hãy phân loại chúng theo việc có hay không bất kỳ chi tiết riêng lẻ ("nguyên tử") nào có thể được xác định đầy đủ bởi bất kỳ điều gì làm cho một người bạn trở nên độc đáo.

Tôi cho rằng có một số khóa chính (PK), như FriendID hoặc địa chỉ e-mail hoặc thứ gì đó. Xem xét số nhận dạng duy nhất này, hãy tự hỏi bản thân:"Nếu tôi được cung cấp chính xác một FriendID (hoặc e-mail hoặc bất kỳ thứ gì bạn đang sử dụng làm PK) thì tôi hoàn toàn chắc chắn về chi tiết nào về người bạn đó? Ví dụ:được cung cấp FriendID =2112, tôi hoàn toàn chắc chắn biết họ, tên và ngày sinh của người bạn đó, nhưng tôi không hoàn toàn biết số điện thoại của người bạn đó vì có nhiều hơn một trong số họ.

Nhóm lại với nhau trong một bảng tất cả các chi tiết mà bạn không rõ ràng biết được cho PK. Đặt các chi tiết mà bạn cần thêm dữ liệu (như "nhà riêng" hoặc "cơ quan" trong trường hợp là số điện thoại) trong bảng "con", được khóa ngoại trở lại bảng "mẹ" trên PK. (Lưu ý:Rất có thể PK của bảng con sẽ là hỗn hợp; nghĩa là bao gồm PK của bảng mẹ và yếu tố phân biệt (như "home" hoặc "work" trong ví dụ này). Các phím tổng hợp cho nhiều bên quan hệ 1-M rất tốt.)

Những người yêu thích cơ sở dữ liệu gọi đây là sự phân tách dựa trên phụ thuộc chức năng .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chèn nếu không tồn tại khác chỉ cần chọn trong mysql

  2. Tại sao mysqli đưa ra lỗi Lệnh không đồng bộ?

  3. Có thể lập chỉ mục giữa các bảng không?

  4. Tất cả các cột đang được đặt thành cùng một giá trị

  5. Phần trăm tính toán MySQL