数据库设计:如何保存选定的行

时间:2014-02-16 08:53:06

标签: sql database

我有一个表格来存储每个客户端中的区域

{id, name, ....}

用户可以选择其中一个区域,我需要保存它。请注意,只能选择一个区域。

解决方案1:
添加一个名为selected的新列,并根据此列添加索引。

因此每次用户选择一个区域时,我都需要运行两个更新SQL。

UPDATE table set selected = 0 where selected = 1
Update table set selected = 1 where id = xxx

当我需要检索所选区域时,请运行查询

SELECT * from table where selected = 1

它有效,但似乎没有很好的设计。首先,我添加新列时空间使用情况不佳。并且性能也不好,因为每当我需要在用户选择另一个区域时运行两个更新查询时。

解决方案2:
如果我打开一个新表来保存选定的区域ID,那么在表格中只有一行似乎很奇怪。

2 个答案:

答案 0 :(得分:0)

如果您可以编辑用户的表,则可以为所选区域ID添加一列,根据用户ID在用户表上添加仅运行更新。 如果您无法编辑用户表,则必须创建另一个包含用户ID和地区ID的表,并根据用户的ID更新该表。

用户表中的区域ID将是链接到区域表中记录的外键。如果你必须创建aditional表,那将是一个compsite键,将用户表中的记录与区域表中的记录相关联

答案 1 :(得分:0)

也许我在这里没有正确地阅读你的问题。

但是如果你有一个区域表: regionID - 名称

和用户表:

userID - otherdata - regionID

然后,如果用户选择其他区域,您只需更新用户表中的regionID否?

或者我错过了一些功能?