Helpex - Trao đổi & giúp đỡ Đăng nhập

Lưu dữ liệu dưới dạng mảng hoặc trường riêng lẻ (php / MySQL)

Đỗ Diên Vỹ
· 01:41 21/12/2011
6 ngày trước

Tôi đang thiết kế một hệ thống mới cho người dùng / khách hàng và tôi có các tùy chọn người dùng hệ thống của mình. Trước khi bắt đầu tạo mã và cơ sở dữ liệu, tôi muốn đảm bảo rằng mình làm đúng.

Tôi có các tùy chọn này:

  • cỡ chữ
  • mặt chữ
  • màu chữ
  • chủ đề
  • trang chủ
  • tùy chọn bảng điều khiển
  • một số tùy chọn đúng / sai như bật chia sẻ, v.v.

và nhiều hơn nữa.

Ý tưởng của tôi là tạo mỗi trường cho mỗi tùy chọn nhưng tôi không biết có thể tôi có thể lưu một đối tượng hoặc mảng thay thế trong một đốm màu.

Nó là một ý tưởng tốt?

10 hữu ích 0 bình luận 264 xem chia sẻ
Hoàng Thu Ngọc
· 01:58 21/12/2011
01:58:43 21/12/2011

Bạn có thể tạo một bảng bổ trợ để giữ các tham chiếu của tên thuộc tính. Sau đó, bạn có thể liên kết bảng đó với một bảng hợp nhất - giữa id người dùng và id của một trong các thuộc tính. Làm như vậy, bạn luôn có thể thay đổi các thuộc tính.

Sử dụng Khóa ngoại, bạn cũng có thể “xóa theo tầng” chi tiết người dùng có thuộc tính không tồn tại nữa. Hơn nữa, bạn có thể đảm bảo rằng bạn chỉ thêm các tham chiếu đến các tên thuộc tính hợp lệ và bạn tối ưu hóa việc tìm kiếm bằng cách sử dụng các chỉ mục.

Hãy nói rằng:

CREATE TABLE user_preferences_headers
(
  `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL
);

CREATE TABLE `users`
(
   `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   `name` VARCHAR(255) NOT NULL,
   `pass` VARCHAR(255) NOT NULL
);

CREATE TABLE `user_preferences`
(
  `id_user` INT NOT NULL,
  `id_preference_entity` INT NOT NULL,
  `value` VARCHAR(255)
);

ALTER TABLE `user_preferences` ADD INDEX ( `id_user` );
ALTER TABLE `user_preferences` ADD INDEX ( `id_preference_entity` );

ALTER TABLE `user_preferences` ADD FOREIGN KEY ( `id_user` ) REFERENCES `users` (
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ; 
ALTER TABLE `user_preferences` ADD FOREIGN KEY ( `id_preference_entity` ) REFERENCES `user_preferences_headers` (
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ; 

Bây giờ, trước tiên bạn chọn tất cả các tiêu đề user_preferences_headerstheo tên hoặc không, và bạn sử dụng id để chọn giá trị tùy chọn mong muốn của người dùng (cũng được xác định bằng id) từ đó user_preferences. Lưu ý rằng khi bạn xóa một mục nhập user_preferences_headers, tất cả các mục nhập liên kết đến id của hàng đã xóa cũng sẽ bị xóa.

12 hữu ích 0 bình luận chia sẻ
Vũ Bích Quân
· 02:03 21/12/2011
02:03:10 21/12/2011

Lưu chúng riêng lẻ sẽ giúp cho việc tìm kiếm, v.v. có thể thực hiện được trên mỗi trường. Nếu bạn tuần tự hóa chúng, thì việc tìm kiếm sẽ trở nên khó khăn / không thể.
Bạn có thể không cần điều đó ngay bây giờ, nhưng nó có thể được yêu cầu thêm xuống dòng.

3 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ php mysql database serialization , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm