我正在开发一个股票市场类型的网站。我想知道如何允许用户将公司报价保存到一个监视列表中,其中包含所有更新的数据,类似于许多其他可用的数据。
感谢您对此事的帮助。
对于总是为每个用户设置的任何内容,您应该倾向于将其保留在Users
表中,按照通常的规范化。至于可选配置,我倾向于喜欢下面的表结构:
TABLE Users:
id INT AI
name VARCHAR
...
TABLE User_Settings
user_id INT PK,FK
name VARCHAR PK
type BOOL
value_int INT NULL
value_str VARCHAR NULL
其中User_Settings.type
指定要引用的是整数还是字符串字段。
INSERT INTO Users (id, name) VALUES (1, 'Sammitch');
INSERT INTO User_Settings (user_id, name, type, value_int) VALUES (1, 'level', 1, 75);
INSERT INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'en');
对于INSERT/UPDATE问题:
INSERT INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'fr')
ON DUPLICATE KEY UPDATE value_str='fr';
另外,正如大多数人所说,序列化和存储首选项并不是一个特别好的主意,因为:
你不能检索单个值的查询,你必须检索整个序列化
很容易损坏,很难恢复。
编写原始查询是一件痛苦的事情,例如:全局修复某个设置。
这应该可以完成工作。