-3

我正在开发一个股票市场类型的网站。我想知道如何允许用户将公司报价保存到一个监视列表中,其中包含与许多其他可用数据类似的所有更新数据。

将不胜感激有关此事的任何帮助。

4

1 回答 1

4

对于始终为每个用户设置的任何内容,您应该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

WhereUser_Settings.type指定是否应该引用整数或字符串字段。

IE:

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 INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'fr')
  ON DUPLICATE KEY UPDATE value_str='fr';

此外,正如大多数其他人所说,序列化和存储首选项并不是一个特别好的主意,因为:

  1. 您无法通过查询检索单个值,您必须检索整个序列化字符串,对其进行反序列化并丢弃不必要的数据。

  2. 它很容易损坏,并且很难从中恢复。

  3. 编写原始查询是一件很痛苦的事,即:全局修复某个设置。

  4. 您将本质上是表格数据的内容存储在单个表字段中。

这应该可以完成这项工作。如果是这样,请随时接受答案。

于 2013-05-07T08:45:57.200 回答