2010-03-18 16 views
19

Cách tốt nhất để cấu trúc bảng MySQL để lưu trữ cài đặt quản trị là gì?Tôi nên cấu trúc bảng cài đặt với MySQL bằng cách nào?

Như thế này?

Setting _|_ Value 
setting1 | a 
setting2 | b 
setting3 | c 
setting4 | d 
setting5 | e 

Hoặc như thế này?

|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_| 
Settings | a  | b  | c  | d  | e  | 

Hoặc có thể một số cách khác?

Trả lời

20

tên Bảng = 'Cài đặt'

name | varchar <-- primary key 
value | varchar 

Sau đó, bạn có thể truy vấn như thế này:

SELECT * FROM settings WHERE name = 'default_printer'; 

Tùy chọn này là tốt đẹp và dễ dàng và nó sẽ làm việc tốt với 10, hoặc 10.000 cài đặt. Với tùy chọn khác, bạn sẽ phải thêm một cột mới, đó sẽ là một sự lãng phí hoàn toàn vô nghĩa của thời gian.

Sửa

Sau comment 1 của bạn, bạn có thể chọn nhiều giá trị như thế này:

SELECT * FROM settings WHERE name IN ('default_printer','default_page_size'); 

:-)

+0

1 cho rõ ràng chỉ ra rằng tôi cần một chính vì tôi đã quên nó trong bài viết gốc của mình;) ... Có vẻ khá tốt. Tôi đặc biệt thích điều đó, bằng cách sử dụng thiết lập này, tôi có thể tạo một chức năng cho phép tôi chọn một cài đặt (hoặc nhiều cài đặt cùng một lúc), điều này rất tiện dụng. – Cam

+2

Tôi đồng ý, tôi đã thêm một câu lệnh SQL có thể khác, chúng tôi sử dụng phương pháp này trên hệ thống ERP của chúng tôi, chứa rất nhiều cài đặt. :-) –

+0

Điều gì sẽ xảy ra nếu bạn muốn lưu trữ các loại khác nhau trong "Giá trị", có thể chấp nhận sau này làm cho đoạn mã trong mã của bạn thành loại bạn mong đợi không? Nếu bạn có rất ít cài đặt và tất cả chúng đều là các loại khác nhau, ví dụ: chuỗi, int, float, sẽ có ý nghĩa hơn khi sử dụng lược đồ thứ hai? – radtek

0

Như thường lệ, nó phụ thuộc. Giải pháp 1 đơn giản hơn. Sol # 2 dễ dàng tích hợp với ORM, nhưng có thể đạt đến giới hạn kích thước hàng DB. Google cho OTLT (như trong một vấn đề Bảng Tìm kiếm Đúng) Bạn có bao nhiêu cài đặt (vài? Hàng chục? Hàng trăm?) Bạn sẽ cần chúng bao lâu một lần?

+0

Hàng chục. Tôi có thể cần một số người trong số họ thường xuyên như mọi lần truy cập trang. Đó là, cài đặt quản trị viên có thể ảnh hưởng đến chế độ xem của các trang nhất định mỗi khi chúng được hiển thị. Ví dụ: một trong các cài đặt sẽ là tên của một sản phẩm nổi bật và một cài đặt khác sẽ là tên tệp cho hình ảnh gif của sản phẩm đã nêu. – Cam

3

Cân nhắc tùy chọn đầu tiên (Setting, Value) làm cột. Nhưng cũng cân nhắc việc thêm bổ sung, cột meta là tốt, chẳng hạn như Description (sẽ có ích nếu bạn có rất nhiều các thiết lập không rõ ràng), PreviousValue, LastUpdated, UpdatedBy vv

+1

Mẹo hay khi thêm cột meta – afarazit

Các vấn đề liên quan