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

Thiết kế cơ sở dữ liệu tốt, số lượng thuộc tính thay đổi

Các tùy chọn 1, 2 và 3 có chung một lỗ hổng rất nghiêm trọng:bạn phải sửa đổi lược đồ bảng bên dưới khi ai đó mơ thấy một thuộc tính mới. Trong trường hợp của Phương án 1, vấn đề phức tạp hơn bởi khả năng một loại thiết bị mới sẽ được giới thiệu. Bạn có chắc chắn rằng tập hợp các thuộc tính là cố định mọi lúc? Bạn sẽ vui như thế nào khi ngừng hoạt động hoặc nói với khách hàng rằng không, bạn không thể có thuộc tính mới?

Nếu bạn rất có thể thực hiện các truy vấn ngoài các thuộc tính thông thường, bạn có thể thử kết hợp 3 và 4, với dấu gạch ngang của 2 được phân chia theo loại thuộc tính thay vì loại trang bị, điều này có vẻ dễ bay hơi hơn nhiều. Tùy chọn 4, nếu tôi hiểu đúng, là phiên bản dạng bình thường của tùy chọn 1 giải quyết tất cả các vấn đề cố hữu của nó (độ thưa và giòn).

INVENTORY( id*, model, manufacturer, serial )
ATTRIBUTE( id*, name, type, description )
INVENTORY_FACT_STRING( inv_id*, attr_id*, value )
INVENTORY_FACT_NUMBER( inv_id*, attr_id*, value )
INVENTORY_FACT_LIST_STRING( inv_id*, attr_id*, ordinal*, value )

vv



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP để lưu trữ hình ảnh trong MySQL hay không?

  2. Cách chèn mảng json vào cơ sở dữ liệu mysql

  3. Bạn của một người bạn trong PHP / MySQL?

  4. Một bảng cơ sở dữ liệu có thể không có khóa chính?

  5. Mệnh đề IN () truy vấn MySQL chậm trên cột được lập chỉ mục