【问题标题】:modelling ontology graph in SQL: the two fathers problem用 SQL 建模本体图:两个父亲问题
【发布时间】:2011-02-22 19:08:28
【问题描述】:

我正在使用树在 SQL 中对本体建模,以指示概念之间的关系。 我的问题是如何在不复制概念的情况下消除图表/树中的概念。

例如。我有课程的概念:“空手道”、“帆船”(可以从教练那里学到的课程)和地方:“健身房”、“船俱乐部”可以参加这些课程。在图中它将是:

gym        boat club
   has     has
     courses
   of        of
karate    sailing

如何为这个图表建模以避免船俱乐部开设空手道课程并且不重复课程的概念?

谢谢!

【问题讨论】:

标签: php sql graph tree ontology


【解决方案1】:

我会扭转整个数据架构,并将其视为一个图表。为所有概念(节点)——健身房、船俱乐部、课程、空手道、帆船——和另一个表创建它们之间的链接(顶点)。该表看起来像:

Links
  from (concept foreign key)
  to (concept foreign key)
  link_type (has/of/etc)

在内存中构建所有信息可能需要更多的 SQL,但此架构将简单地处理这些关系。

【讨论】:

  • 谢谢,这就是我想要做的! (stackoverflow.com/questions/5083210/…)。问题是我不知道我怎么能说“船俱乐部”只有“航行”(而不是空手道)的“课程”,因为“课程”被映射到“航行”和“空手道”的孩子。跨度>
  • 如果您的所有链接都是 3 元素(X 具有 Z 的 Y),您可以在 Links 表中添加另一个键。如果链接是 n 元素,我不确定如何表示它们。
  • 最终我决定实现一个不相交的表,这听起来是解决问题的一种可能方法..
【解决方案2】:

包含 Karate 和 Sailing 数据的表将包含其他两个表的主键作为外键。这将允许您拥有任意数量的每种数据类型,同时仍然能够遍历表以获取您的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多