设计模式-许多父表之一
我经常遇到数据库中的一种情况,其中给定的表可以FK到许多不同的父表之一。我已经看到了解决该问题的两种解决方案,但都不令人满意。我很好奇,您在那里看到过其他哪些模式?有更好的方法吗? 一个人为的例子 假设我的系统有Alerts。可以接收各种对象的警报-客户,新闻和产品。给定的警报可以仅针对一项。无论出于何种原因,客户,商品和产品都在快速移动(或本地化),因此在创建警报时无法将必要的文本/数据提取到警报中。有了这种设置,我已经看到了两种解决方案。 注意:以下DDL用于SQL Server,但我的问题应适用于任何DBMS。 解决方案1-多个可空FKey 在此解决方案中,链接到多个表的表具有多个FK列(为简便起见,下面的DDL不显示FK创建)。 好的 -在这种解决方案中,很高兴我有外键。FK的零光学特性使添加精确数据变得非常方便且相对容易。BAD查询不是很好,因为它需要N个 LEFT JOINS或N个 UNION语句来获取关联的数据。在SQL Server中,特别是LEFT JOINS会阻止创建索引视图。 CREATE TABLE Product ( ProductID int identity(1,1) not null, CreateUTC datetime2(7) not null, Name varchar(100) not null CONSTRAINT PK_Product Primary Key CLUSTERED (ProductID) ) CREATE TABLE Customer ( CustomerID int identity(1,1) not null, CreateUTC datetime2(7) not …