我的情况是我有一个包含ax,B,C和D列的表.A是PK,B和C都是外键。
我打算在这个表E中添加一个exta列,在应用程序中它的副作用是它会导致插入一行,之后在B和C列中会有重复的值。
这会破坏任何参考规则吗?我假设是因为如果在这些外键上对这个表进行了任何连接,那么它们将不再返回一个唯一的行。
谢谢,
答案 0 :(得分:3)
如果关系是一对多,则不要通过让多行引用单个外行来破坏引用规则。
以这种方式添加额外的列可能会破坏现有的应用程序。像这样的查询,用于返回一行,现在可能会返回许多行:
select *
from table
where b=1 and c=2
答案 1 :(得分:0)
如果您在应用程序中广泛使用了相关子查询,那么您仍然可能不安全,因为新规则可能意味着现在只返回一条记录的子查询现在可能会在某些环境中返回两个或更多,然后它会中断。仅仅因为该表允许一个或多个记录并不意味着所有相关的子查询都没有写入过滤到只有一个记录(因为它们不能以任何其他方式工作),因此它们可能会受到更改的影响。这(以及性能)是我不使用相关子查询的一个原因。