我对如何调整我的数据库感到有点困惑,目前我正在处理三个表:
。
我不确定这是否是最佳实践,其中一个选项是将一个表“Item”中的所有值与多个空值混合。
任何建议和建议都将不胜感激。
发布于 2012-01-04 15:16:06
分离出这样的值对于处理锁定问题是很有帮助的。如果您有多个正在更新的守护进程/脚本,以及这些表并在它们上持有锁,那么将所有这些值放在一个表上是一个问题。当然,既然“item”的值被分隔成三个表,那么如果/当您需要所有这些表时,您就会遇到追踪它们的问题。一般来说,把这些桌子像这样分开是可以的。
另外,在任何人沿着这样分割数据的道路前进之前,通常最好尝试/用尽以下每一项:
尽可能多地使用“with(Nolock)”,以防止可能出现的锁定问题。
修改维护此数据的脚本,以尽可能少地使用“begin”类型的事务。
修改维护数据的脚本的执行,使它们更有可能被顺序调用而不是并发调用。让他们做同样的工作。
发布于 2012-01-04 15:08:41
我倾向于同意这三张表。因为您说这些项只能链接到零或一个Feature_1和零或一个Feature_2,所以可以向item表中添加两个列,并引用Feature_1和Feature_2主键。您可以对这些列使用外键约束,并使其为空,以指示不存在该特性。这也意味着您可以放弃布尔值,并保留检查类型1或类型2的特性是否可用而无需连接表的好处。
发布于 2012-01-04 14:59:49
纯粹主义者会说,您应该将每个功能作为单独的表,每个表都带有条目表的外键。而且,总的来说,我同意,虽然相当小的项目不会同时具有两个特性,而且功能记录的大小很小,但可能值得消除必须加入表的开销。
https://stackoverflow.com/questions/8728859
复制相似问题