我们有一个数据库,其中几个表被分区。这些表的主键(为简洁起见,PK)的形式为
- 交易日期,ID
其中transaction_date是分区键,id是唯一的整数列。如果我们没有对表进行分区,那么我们只会使用id作为 PK。
我们还有其他几个需要外键 (FK) 来引用这些分区表的表。我无法决定是使用复合 FK(引用 PK 的两列)还是使用单列 FK(引用唯一索引支持的id列)。
这两种方法有什么优点/缺点吗?到目前为止,我能想到的唯一因素(我什至可能在这些方面错了)是:
单列 FK:降低应用程序开发的复杂性。
复合 FK:在加入 FK 列时允许消除分区。
分区方案中涉及的所有唯一约束必须将分区列定义为基本索引定义(索引键的子集)的一部分 - (不仅仅是包含的列)。换句话说,在这种情况下,您将无法仅在
ID
列上创建唯一约束。设置分区函数和方案。
创建一个
PRIMARY KEY
引用分区方案的表。现在,尝试在不指定分区列的情况下在分区表上创建唯一约束。
所以,当你问这个问题时:
恐怕 SQL Server 已经为您做出了决定。您必须同时使用
TransactionDate
AND定义您的 FKID
。