如果我的父表和子表填充了数据,那么在它们之间添加新表是否微不足道?
例如,在介绍之前,关系是:
父母 - >子
然后:
父母 - >新表 - >子
在这种情况下,我指的是SQLite3,因此此模式中的Child具有与父表的主键匹配的外键。
谢谢!
答案 0 :(得分:2)
这可能太明显了,但是......
它有多么微不足道将取决于已经编写了多少需要随之改变的代码。如果这是一个新的应用程序,编写的代码很少,而你刚刚开始研究设计,那么是的,它是微不足道的。如果您有大量的函数(无论是外部代码,还是存储过程和视图等数据库代码)访问这些表,期望原始关系,那么它就变得不那么重要了。
如果您知道足够的SQL来填充新表并设置关系,那么在数据库中更改它应该是相对不重要的。
与所有开发挑战一样,您只需要查看将受影响的内容,方式以及确定如何对这些更改进行说明。
所有这一切都是一种啰嗦的说法,“这取决于你的情况”。
答案 1 :(得分:0)
我根本不同意大卫的意见,只是准确地说明了改变的几个方面。
如果您已经实施了合理的标准,那么唯一受代码影响的代码就是处理Child(而不是New_Table)中已更改列的代码。如果还没有,那么不需要改变的未知数量的代码将不得不改变。
第二个考虑因素是儿童主键的质量。如果您有自然关系密钥,则添加New_Table的影响较小,而不是需要更改数据。如果您有IDENTITY类型的密钥,那么您可能需要重新加载,或者更糟糕的是,“重新计算”密钥。
最后,介绍New_Table是对Normalization错误的修正,这是一件好事。因此,某些Child.columns将成为New_Table.columns,并且可以从现有数据加载New_Table。您需要正确而完整地执行此操作,以便从纠正中实现性能提升。这可能意味着更改几个代码段。
如果你有ANSI SQL,那么所有任务都非常简单直接。