我正在使用sqlite,并希望拥有一个带有父列的多对多表,用于邻接列表功能。如:
CREATE TABLE YDelta
(
YDeltaThingId NCHAR(8) NOT NULL,
YDeltaTS TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, -- delta timestamp
YDeltaStatus NCHAR(2) NOT NULL, -- 2-letter code for delta status
YDeltaStaffId NCHAR(10) NOT NULL, -- staff member
YDeltaDesc TEXT NOT NULL,
YDeltaParentId ????
PRIMARY KEY (YThingsId, YDeltaTS),
FOREIGN KEY (YDeltaThingId) REFERENCES YThings(YThingsId),
FOREIGN KEY (YDeltaStaffId) REFERENCES YStaff(YStaffId)
);
。 。 。但我不确定如何构建YDeltaParentId。当然,它应该是主键的重复,它是YDeltaThingId NCHAR(8)和YDeltaTS TIMESTAMP列的组合。 (遵循此邻接示例:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)
答案 0 :(得分:2)
如果父键的列有两列,则子项中还需要两列:
CREATE TABLE YDelta (
...
YDeltaParentThingId NCHAR(8),
YDeltaParentTS TIMESTAMP,
...
PRIMARY KEY (YThingsId, YDeltaTS),
FOREIGN KEY (YDeltaParentThingId, YDeltaParentTS)
REFERENCES YDelta(YThingsId, YDeltaTS),
...
)