sql-server - 数据库设计 - 最佳实践 - 一个用于 Web 表单下拉选项的表格或用于每个下拉选项的单独表格

标签 sql-server database

我在这里查看最佳实践方法。我有一个网页,其中有几个下拉选项。下拉菜单不相关,它们用于杂项。值(位置、建筑规范等)。数据库现在每组选项都有一个表(例如建筑规范表、位置表等)。我想知道我是否可以将它们全部组合到一个表中(称为 listOptions),然后只查询那个表。

Location Table
LocationID (int)
LocatValue (nvarchar(25))
LocatDescription (nvarchar(25))

BuildingCode Table
BCID (int)
BCValue (nvarchar(25))
BCDescription (nvarchar(25))

而不是上面的,有什么理由我不能这样做吗?

ListOptions Table
ID (int)
listValue (nvarchar(25))
listDescription (nvarchar(25))
groupID (int) //where groupid corresponds to Location, Building Code, etc

现在,当我查询表时,我可以将 groupID 传递给查询以提取我需要的其他值。

最佳答案

放入一张表是一种反模式。这些是不同的查找,您不能在数据库中强制执行参照完整性(这是执行它的正确位置,因为应用程序通常不是数据更改的唯一方式),除非它们位于单独的表中。如果您需要额外查找,数据完整性远比节省几分钟的开发时间重要。

关于sql-server - 数据库设计 - 最佳实践 - 一个用于 Web 表单下拉选项的表格或用于每个下拉选项的单独表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433128/

相关文章:

python - 如何从 Python 连接到 Netezza 数据库?

php - 尝试将数据插入 mySQL 数据时 T_OBJECT_OPERATOR

数据库设计 - 是否应将日期用作主键的一部分

sql - 在1500万个单词的语料库中查找单词的句子

sql - SQL逗号错误

php - 带有参数的 Laravel 4 mssql 存储过程作为准备好的语句

sql - 如何在 SQL Server Management Studio 中将列值设置为 NULL?

sql - 如何使用 Apex Oracle SQL 中另一个表的行值触发表行值的更新?

sql - 如何解决将表达式转换为数据类型 int 时出现算术溢出错误?

sql-server - ADO adTinyInt 与 SQL Server 中的 adUnsignedTinyInt