我必须向我正在维护的 Web 应用程序添加一些功能,并且我必须决定遵循哪个路径来修改数据库 (Sql Server 2010) 以便存储和检索应用程序所需的新数据。
“丑陋但快速”的路径:
Web 应用程序已经有这个“通用域表”,它存储可以通过存储过程检索和过滤的不同域数据,指定域字段。
就像是:
| Id | Description | Domain |
|------------|-------------|--------------|
| 001 | Apple | Fruit |
| 002 | Peach | Fruit |
| 003 | Banana | Fruit |
| A01 | Yellow | Color |
| A02 | Red | Color |
| A03 | Green | Color |
SP_GetDomainValues @Domain='Fruit'
该表已经具有应用层,可以轻松存储和检索数据。
我所需要的只是创建一个数据库脚本,用我需要的新记录和适当的新域来填充表。
我应该补充一点,这个应用程序还有几个域表,每个域表只存储一个域。
“好但慢”的路径:
我必须创建不同的表、存储过程和 DAL 方法来存储和检索数据。
出于以下两个主要原因,我个人喜欢第二种方法:
在查询中使用数据要容易得多,因为您可以自然地加入表,而不是一张大表的子集
数据可以很自然地使用外键约束来验证,如果你有一个表,这可能是不可行的,可能命名为“genericDomain”。不是完全不可能,只是使用约束很麻烦
我倾向于认为,如果您没有某种可以帮助决定选择哪种方式的刚性比例,那么您最终每次都会走上快速而肮脏的道路。
根据您的经验,第一选择是一个糟糕的设计,还是在某些情况下可以使用它而不会感到太内疚?