一尘不染

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

sql

我正在建模像polytree这样的概念本体。

使用边缘列表模型将是:

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]

阅读 122

收藏
2021-05-16

共1个答案

一尘不染

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

但是无论如何,只要向您的节点表添加类型ID

CREATE TABLE nodes(
  nodeID CHAR(1) PRIMARY KEY
  genre_id
);
2021-05-16