【问题标题】:sqlite many-to-many + adjacency listsqlite 多对多+邻接表
【发布时间】:2014-03-27 00:26:27
【问题描述】:

我正在使用 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/

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    如果parent的key有两列,那么child也需要两列:

    CREATE TABLE YDelta (
        ...
        YDeltaParentThingId NCHAR(8),
        YDeltaParentTS TIMESTAMP,
        ...
        PRIMARY KEY (YThingsId, YDeltaTS),
        FOREIGN KEY (YDeltaParentThingId, YDeltaParentTS)
                  REFERENCES YDelta(YThingsId, YDeltaTS),
        ...
    )
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多