【发布时间】:2010-06-23 14:12:52
【问题描述】:
我的数据库有两个表,“问题”和“字段”。问题可能有很多字段,字段可能有很多字段。这是一棵具有特殊根节点的树。
我想将它们与 hibernate(目前是 potgresql)一起使用 - 所以从 java 中使用它应该简单明了。
什么是最好的解决方案?
- 将 question_parent_id 和 field_parent_id 添加到“字段”表中,并且仅当 question_parent_id 是它的直接后代时才使用它。 (检查 XOR 哪个 SQL 约束...可能取决于 SQL 服务器)
- 添加 question_parent_id 和 field_parent_id,并始终使用 question_parent_id。请记住保持一致...(question_id 不应更改,可能不是真正的风险)
- 使用postgresql特定的表继承:“问题”和“字段”扩展“内容”,所以一个外键列就足够了。对“问题”和“字段”使用附加约束。
- 使用第三个表(称为“容器”),仅包含一个 ID。容器可能有很多字段,一个字段可能有一个容器。问题只有一个容器。但这需要 java 中的额外代码,并且存在无限循环的风险,即使在 field_container_id 上使用唯一键...
【问题讨论】:
-
我在答案中添加了更多段落。您需要提供一些更具体的信息才能获得具体的答案。 (如果您发现有特定的要求,请考虑提出一个新问题。)
标签: java sql hibernate orm tree