想知道是否有人可以协助处理在MSSQL数据库中存储“已检查”项目的最佳方法。 在我的表单上,我有一个字段列表(名称,地址等),然后是用户可以检查的列表框,例如最喜欢的颜色。
在我的数据库中,我会有一个用户详细信息表(tbl_userdetails - [UserID,Address ...])和一个颜色表(tbl_colors,[ColorID,ColorName,ColorCode])。我还需要一个用户颜色表(tbl_userColors - [userID,ColorID])这些论文将通过“userID”链接
通常,为了保存用户详细信息,我有一个sql字符串“UPDATE tbl_userdetails SET ... WHERE userID = @userID”。将更改的已检查项目保存到下一个表格的最佳方法是什么?
我的想法是:
还有其他想法吗?构建INSERT语句的最佳方法是什么?
干杯
答案 0 :(得分:0)
只要没有任何内容与这些记录相关联,DELETE和INSERT策略就能正常运行。如果您在关系的“一”方面有任何引用tbl_userColors
的表格,那么您将会感到头痛。
MERGE战略通常是体面的。一个可能不幸的结果是MISSING记录与FALSE记录相同。例如,您拥有颜色列表{red, green, blue}
,并且您的用户正在进行选择。六个月后,你会发疯并添加orange
。现在你不知道谁没有选择橙色与那些根本没有选择橙色的选项。
第三种选择是在Enabled BIT
表上放置tbl_userColors
字段。这使您可以确定是否向用户显示了颜色选项,如果用户从未看过特定颜色选项,则会拒绝该选项。
说到启用双边投资协定。您的tbl_colors
表也应该具有Enabled BIT - 或者从UI中删除颜色而不删除其数据库记录的其他一些机制。您在某些时候意识到您不再希望向用户提供blue
,但您也不想丢失历史数据。
还有一小撇子:你的桌子名字太可怕了。你应该考虑放弃匈牙利表示法。我是骆驼案例表名的忠实粉丝:Users
,Colors
和UserColors
。
答案 1 :(得分:-1)
非常简单。检查项时,它返回一个布尔值。每当你准备好保存到数据库时,你只想循环遍历颜色,如果选中它(AKA检查是真的),那么你将它添加到一个列表,你可以稍后循环以保存所有的值。 / p>