工具:
SQL2000/5/8,.NET 3.5,C#
我遇到了一个有两个表的应用程序。在__code_中,表格如下:
表1(1__)表2
所以表1(T1)有一个ID:IDT1,表2(T2)有它的ID(IDT2)
和
A外键t2.idt1
这个1.n关系是
代码
在某种程度上强制执行。数据库中没有任何FK。(不管是谁设计的,都没有添加约束或类似的东西)。
问题是,我发现应用程序使用表2中的IDT1(正确地)将引用行存储在表1上,
但是
对于特殊情况也使用零(0)。
所以我(在表2中)沿着这些线有一些东西:
IDt2 IdT1 OtherFields
1 1 x
2 1 x
3 5 x
4 0 x
5 3 x
6 0 x
â¦
正如您在第4行和第6行中看到的,fk指向表1中不存在的行。该软件之所以能工作,是因为它有(很多)地方可以用if语句或类似语句跟踪这个地方。现在改变这一点不是一个好主意(我不想触摸到“有效”的代码,我现在也不写“有效”),除非它是唯一的方法。
现在我修改了应用程序的其他方面,
需要
要使用FK的数据库(我们用模板重新自动生成代码,如果FK不在那里,则不会生成某些内容)。
在上述场景中,我是否可以创建一个不检查约束的FK?这会是一个问题吗?(考虑到应用程序已经运行了5年多,在FK中id=0的情况下)?你有什么建议吗?TKS。