SQL中的2x 1到(零或1)关系

时间:2013-12-26 20:53:13

标签: sql vb.net oledb

我一直面临一个问题,我似乎无法使用OLEDB命令和SQL建立1到0或1个关系。如图所示,我想创建这种关系: enter image description here

我在SQL中创建了这个:

CREATE TABLE TableA
(
TAQID AutoIncrement PRIMARY KEY NOT NULL,
SourceAID INTEGER,
FOREIGN KEY (SourceAID) REFERENCES Table_SourceA(SourceAID),
InformationIndependantToA STRING
)

CREATE TABLE TableB
(
TBID AutoIncrement PRIMARY KEY NOT NULL,
SourceB STRING
)

CREATE TABLE Question
(
QID AutoIncrement PRIMARY KEY NOT NULL,
TAQID INTEGER, FOREIGN KEY (TAQID) REFERENCES TableA(TAQID),
TBQID INTEGER, FOREIGN KEY (TBQID) REFERENCES TableB(TBQID),
Question STRING,
MaximumMarkAvaliable INTEGER,
QuestionFileName STRING,
AnswerFileName STRING,
AdditionalNotes TEXT DEFAULT N/A
)

CREATE TABLE Marking
(
MarkID AutoIncrement PRIMARY KEY NOT NULL,
UserEmailAddress STRING,
FOREIGN KEY (UserEmailAddress) REFERENCES Table_UserDetails(EmailAddress),
QID INTEGER,
FOREIGN KEY (QID) REFERENCES Question(QID),
AnswerDateTime DATETIME,
UserAnswer TEXT,
MarkAwarded INTEGER
)

然而,这会在表A和问题以及表B和问题之间创建一对多的关系。我想创建1到0或1个关系,因为表A /表B中的一个表未在每个问题记录中使用,因此它将是1到0的关系,而正在使用的表将是1到1。 / p>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为你的问题表中只需要两个可以为空的FK列。 一个指向TableA,另一个指向TableB。