SQL设计缺乏跨数据库外键引用

brm*_*ore 21 database sql-server foreign-keys

无论好坏,我们都有一个依赖于多个数据库的解决方案,这些数据库都引用了一个共同的管理数据库.数据库作为模块的一部分提供,并非安装所需的所有模块(可能为什么我们首先拥有多个数据库).管理数据库是必需的,但是...所以它总是在那里.

我想为混乱带来一些参照完整性和秩序,但是由于SQL服务器无法做跨数据库外键而受到阻碍.数据库中没有大量流失,但是(非)非技术用户会插入/更新信息.

我看到他的选择是:

a)使用触发器强制伪外键(好的,但有点工作)

b)使用触发器从管理员复制到其他数据库(灾难的明确方法)

c)在代码/ DAL中强加伪造的外键(与ORM不兼容)

d)不要担心它在数据库级别,使用良好的UI设计,以确保没有人做任何愚蠢的事情,并限制访问/保持呼吸直接SQL访问.

坦率地说,我倾向于选择"D",但我认为我会比我更聪明地表达意见......

kem*_*002 4

我们遇到了完全相同的问题,坦率地说,这很糟糕。我们发现唯一有效的解决方案是选项 D 并使用业务层来尝试保持同步(封装在事务等中)