2014-03-26 47 views
0

我正在使用sqlite並希望有一個多對多的表與鄰接列表能力的父列。如: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/

回答

2

如果父的關鍵有兩列,還需要在孩子兩列:

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