建模树或图SQL:如何分离节点和节点信息的属性

时间:2011-02-22 19:57:39

标签: sql graph tree

我正在建模一个概念本体,如polytree

使用edge list model将是:

CREATE TABLE nodes(
  nodeID CHAR(1) PRIMARY KEY
);

CREATE TABLE edges(
  childID CHAR(1) NOT NULL,
  parentID CHAR(1) NOT NULL,
  PRIMARY KEY(childID,parentID)
);

我的问题是如何在SQL中对其进行建模,以便节点可以具有其他属性,如“类型”。例如。

(father-node) **Music**  

(child-node) **jazz** [type: genre], **soul** [type: genre]
(child-node) **concert** [type: performed], **DJ set** [type: performed]

1 个答案:

答案 0 :(得分:0)

您应该查看Celkos嵌套集模型,http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

但无论如何只需将类型ID添加到您的节点表

CREATE TABLE nodes(
  nodeID CHAR(1) PRIMARY KEY
  genre_id
);