【问题标题】:Database Peer to peer relationship数据库对等关系
【发布时间】:2018-03-01 19:54:16
【问题描述】:

我有一个带有案例 ID 案例名称的表格案例

caseId | CaseName
------ |---------
1      | Case 1
-------|-------
2      |Case2
-------|-------
3      |Case 3
-------|-------
4      |Case 4

我有一个所有这些案例都相关的要求,如下所示:-

1-2
1-3
1-4
2-3
2-4
3-4

如何有效地存储记录

【问题讨论】:

  • 你不需要存储它。它可以表示为自连接的 Carthesian 乘积的一部分。

标签: sql database oracle11g schema


【解决方案1】:

如果caseId 列具有唯一值

with t( caseId  )as (
select 1 from dual union all 
select 2 from dual union all 
select 3  from dual union all 
select 4 from dual  
) 

select t1.caseId, t2.caseId from t t1
cross join t t2
where
t1.caseId <  t2.caseId

【讨论】:

    【解决方案2】:

    由于它是多对多关系,因此您可以创建一个联结表,其中两列都作为 case 的外键。

    case_relation(case_id_1,case_id_2)。像这样。

    【讨论】:

      【解决方案3】:

      制作另一张桌子。案例 ID 和相关案例 ID 列的数据类型应与您的第一个表中的案例 ID 相同。

      Case Id   Related Case Id
      1          4
      2          4
      2          3
      

      【讨论】:

      • 感谢您格式化我的问题。我在尝试格式化时放弃了。你是怎么做到的?此外,我正在考虑类似的路线,寻找任何其他有效的解决方案。我认为这是最好的方法。再次感谢您的帮助
      • 对于格式化,您可以编辑问题。选择那里的代码示例。然后单击文本区域菜单中的 { } 图标。这意味着,选择的文本需要被视为代码。
      • @Nrusingha - 对于格式化,您可能希望在此网站本身上找到说明。搜索“堆栈溢出”和“格式化”,看看它返回什么。是的,就是这么简单!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 2017-03-18
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多