我正在尝试强制执行表 Match 应具有所有唯一元组(团队 1、团队 2)的属性。但是,让第 1 队 = 底特律活塞队和第 2 队 = 芝加哥公牛队。如果 (Chicago Bulls, Detroit Pistons) 已经存在,我不想将 (Detroit Pistons, Chicago Bulls) 插入到表中。
我如何强制执行此约束?
最佳答案
A) 这些元组在语义上是相同的。 (我认为这就是你的情况。)
这意味着元组 {Chicago Bulls, Detroit Pistons} 与元组 {Detroit Pistons, Chicago Bulls} 的含义完全相同。使用 CHECK 约束对两列进行排序。
CHECK (column_1 < column_2)
这种约束会允许 {Chicago Bulls, Detroit Pistons},但会拒绝 {Detroit Pistons, Chicago Bulls}。这有点像将规范形式强加于其他自由形式的数据。
B) 元组在语义上是不同的。
这意味着元组 {Chicago Bulls, Detroit Pistons} 表示一件事,而元组 {Detroit Pistons, Chicago Bulls} 表示另一件事。例如,第一个属性可能表示“主队”,第二个可能表示“客队”。在这种情况下,您所需要的只是对这对列的某种唯一约束。
关于database - 如何在 oracle 表上强制执行唯一的 2 元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206151/