我有一个国家列表。每个用户可以检查多个国家。保存后,此“用户国家/地区列表”将用于获取其他用户是否适合特定用户选择的国家/地区。
问题是解决这个问题最有效的方法是什么......
我有一个,一个用于将用户选择保存为分隔列表,如加拿大、美国、法国......在单个 varchar(max) 字段中,但问题是,一旦来自德国的用户进入页面,我将执行此检查。要搜索德国,我需要获取所有项目并取消分隔每个字段以检查值或使用 sql 'like',这又是非常慢的......
如果您有更好的解决方案或一些提示,我会很高兴听到。
只是为了确保,许多用户将有自己的国家/地区选择,并且只有他们希望用户登陆他们的页面。而数百万用户将访问这些页面。因此越快越好。
技术、MSSQL 和 ASP.NET
谢谢
最佳答案
您不应在一个单元格中存储一列值。考虑有一个单独的表来存储每个选定的国家和用户表的外键引用。这是标准 Database Normalization .
请不要按照您的想法行事,不要在一个字段中存储多个条目。由于糟糕的数据库设计,我不得不重写的应用程序比任何其他原因都多,这是一个糟糕的设计。
已添加
我工作时在墙上贴了这张海报:http://www.informationqualitysolutions.com/FreeStuff/rettigNormalizationPoster.pdf
我的一位前辈是 DB Design 的新手,这对她帮助很大。我会为可能需要它的任何新员工保留它。它通过示例很好地解释了规范化。
关于c# - 每个数据库单元保存多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825775/