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

Câu hỏi MySQL - Làm thế nào để xử lý nhiều kiểu người dùng - một bảng hay nhiều?

Bản năng của bạn để không tạo một bảng lớn với nhiều NULLS là đúng. Đó là một ý tưởng tồi, từ quan điểm lưu trữ / đánh giá lại / bảo trì, cũng như quan điểm xác thực dữ liệu (sẽ nói thêm về điều đó sau).

Hai cách tiếp cận phổ biến nhất:

1) Có một bảng người dùng với tất cả các trường phổ biến trong đó, bao gồm cả trường "userType". Sau đó, có một bảng riêng biệt cho từng loại người dùng chứa các trường bổ sung. Tất cả người dùng có một hàng trong bảng người dùng và một hoặc nhiều bảng loại người dùng cụ thể. Đây là cách chuẩn hóa nhất và hiệu quả nhất để lưu trữ và đăng nhập nhanh chóng. Điều này cũng cho phép bạn sử dụng các khóa ngoại vi và khóa ngoại để đảm bảo rằng tất cả thông tin bắt buộc cho từng loại người dùng đều có sẵn.

2) Có một bảng người dùng với tất cả các trường phổ biến trong đó. Có một bảng khác được gọi là Thuộc tính người dùng có các trường cho userid, key và value. Bất kỳ siêu dữ liệu bổ sung nào cho một người dùng cụ thể đều có thể được lưu trữ tại đây. Điều này có lợi thế là không yêu cầu bất kỳ quản trị cơ sở dữ liệu nào để thêm các kiểu người dùng mới hoặc siêu dữ liệu được lưu trữ cho từng kiểu người dùng. Tuy nhiên, nó không cho phép bạn thực hiện bất kỳ xác thực dữ liệu nào ở cấp DB.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Neo4j - Thả chỉ mục bằng Cypher

  2. Đặt NOW () làm Giá trị Mặc định cho kiểu dữ liệu datetime?

  3. $ stmt-> close () so với $ stmt-> free_result ()

  4. php:phiên so với cơ sở dữ liệu

  5. chèn truy vấn bằng ajax mà không cần tải lại toàn bộ trang