Thông thường, khi tôi cần lưu trữ các thuộc tính hệ thống như thông tin quản trị, phiên bản, v.v., tôi sử dụng tệp phẳng (database.properties, init.properties, v.v.). Điều này có vẻ phổ biến trong các chương trình khác mà tôi thấy và sử dụng hàng ngày.Có ý tưởng tồi khi có bảng thuộc tính trong cơ sở dữ liệu không?
Đôi khi tệp phẳng không lý tưởng vì một số lý do. Triển khai một ứng dụng web cho nhiều khách hàng thường đi kèm với những hạn chế. Trong những trường hợp này, tôi sử dụng một bảng cơ sở dữ liệu để chứa thông tin. Ví dụ: giả sử tôi có một số dữ liệu quản trị mà tôi muốn lưu và có thể một số chi tiết cụ thể về môi trường của tôi. Tôi có thể làm điều gì đó như thế này:
property_entry_table
[id, scope, refId, propertyName, propertyValue, propertyType]
1, 0, 1, "DB_VER", "2.3.0", "FLOAT"
2, 0, 1, "LICENCE", "88475", "INT"
3, 0, 1, "TOP_PROJECT", "1", "INT"
4, 0, 1, "SHOW_WELCOME", "F", "BOOL"
5, 0, 1, "SMTP_AUTH", "SSH", "STRING"
6, 1, 1, "ADMIN_ALERTS", "T", "BOOL"
Tôi nhận ra điều này phá vỡ gõ SQL và cho phép tôi để lưu trữ tất cả các loại của các loại như dây đàn. Đây là thực hành tốt hay tôi đã đi về điều này một cách sai lầm?
Nếu không, tôi nên lưu trữ loại thông tin này theo cách nào?
miễn là bộ nhớ của nó dành cho một số thuộc tính hệ thống, v.v. Chỉ cần không có ý tưởng để lưu trữ ** tất cả ** dữ liệu của bạn như thế này! Xem tại đây để thảo luận, tại sao: http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/ –
cũng có thể là động lực cho câu hỏi này, tại sao tôi bị bỏ phiếu ở đây: http://stackoverflow.com/questions/2300356/using-a-single-row-configuration-table-in-sql-server-database-bad-idea/2300450#2300450 – Stephano