我正在建模一个概念本体,如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]
答案 0 :(得分:0)
您应该查看Celkos嵌套集模型,http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
但无论如何只需将类型ID添加到您的节点表
CREATE TABLE nodes(
nodeID CHAR(1) PRIMARY KEY
genre_id
);