2016-04-21 69 views
0

我想在关系模型中表示多对多的关系,但我有一些疑问。代表sqlite中的多对多关系

CREATE TABLE TipoDeSeguro 
(
    tipoSeguro TEXT NOT NULL, 
    tipoDeSeguroID INTEGER NOT NULL PRIMARY KEY 
) 
; 

CREATE TABLE Cobertura 
(
    nome TEXT NOT NULL, 
    coberturaID INTEGER NOT NULL PRIMARY KEY 
) 
; 

这些是我想要使用多对多relationShip加入的表格。

CREATE TABLE JoinTipoDeSeguroToCobertura 
(
    coberturaID INTEGER, 
    tipoDeSeguroID INTEGER 
) 
; 

这是我的分界表。这两个元组都是PRIMARY KEYS?他们是否应该参考他们的主要课程?

问候

回答

2

他们应该是外键和not null如果需要的话。

CREATE TABLE JoinTipoDeSeguroToCobertura 
(
    coberturaID INTEGER not null, 
    tipoDeSeguroID INTEGER not null, 

    foreign key(coberturaID) references Cobertura(coberturaID), 
    foreign key(tipoDeSeguroID) references TipoDeSeguro(tipoDeSeguroID) 
); 
+0

并可能coberturaID和tipoDeSeguroID应该不是NULL,对吧? – Perseverance

+0

@Perseverance记得使用'pragma foreign_keys = on'来启用外键约束。然后尝试为该表的某一列插入任何内容,并获得'FOREIGN KEY约束失败'。 – Ch0k0l8

+0

实际上,它*可能会将NULL插入'JoinTipoDeSeguroToCobertura',所以如果需要的话,NOT NULL将仍然有用。并且这两列应该是主键的一部分。 –