CREATE TABLE question
(
question_number INT NOT NULL,
question VARCHAR(1000) NOT NULL,
PRIMARY KEY (question_number)
);
CREATE TABLE option
(
question_number INT NOT NULL,
option_number INT NOT NULL,
option VARCHAR(1000) NOT NULL,
PRIMARY KEY (question_number, option_number),
FOREIGN KEY (question_number) REFERENCES question(question_number)
);
但是,您希望将技术ID添加到表中,并且似乎希望将它们用作主键,这使得这有点复杂。
CREATE TABLE question
(
id INT NOT NULL,
question_number INT NOT NULL,
question VARCHAR(1000) NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT uq_question UNIQUE (question_number)
);
CREATE TABLE option
(
id INT NOT NULL,
question_id INT NOT NULL,
option_number INT NOT NULL,
option VARCHAR(1000) NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (question_id) REFERENCES question(id),
CONSTRAINT uq_option UNIQUE (question_id, option_number)
);
1条答案
按热度按时间pwuypxnk1#
您有业务密钥;问题编号和选项编号。问题编号必须唯一标识问题。选项编号必须唯一标识问题中的选项。
这将是沿着如下:
但是,您希望将技术ID添加到表中,并且似乎希望将它们用作主键,这使得这有点复杂。
对于建立在技术主键上的数据库,您希望ID和业务键都是唯一的,因此数据库中的唯一约束更多。