【发布时间】:2020-12-23 17:18:36
【问题描述】:
使用提供的架构,我想以某种方式强制每次显示都有唯一的 reserved_seat:seat_id。换句话说,如果该节目中已经预订了特定座位,您将无法预订该座位。
一种选择是将showing_id也添加到reserving_seat(这是多余的),然后对(showing_id,seat_id)进行唯一约束。
这可以在 sql 中完成还是属于应用程序代码?
DDL:
CREATE TABLE showing
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE reservation
(
id INT NOT NULL AUTO_INCREMENT,
showing_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (showing_id) REFERENCES showing(id)
)
CREATE TABLE reservation_seat
(
id INT NOT NULL AUTO_INCREMENT,
reservation_id INT NOT NULL,
seat_id INT NOT NULL,
confirmed TINYINT,
PRIMARY KEY (id),
FOREIGN KEY (reservation_id) REFERENCES reservation(id),
FOREIGN KEY (seat_id) REFERENCES seat(id)
)
CREATE TABLE seat
(
id INT NOT NULL AUTO_INCREMENT,
row VARCHAR(45) NOT NULL,
column VARCHAR(45) NOT NULL,
PRIMARY KEY (id)
)
【问题讨论】:
-
人们希望将表格定义视为文本,而不是图像。尤其是黑色背景上带有微弱灰色线条的图像。
-
@GordonLinoff 如果它可以帮助你回答我的问题,我很乐意改变它。
-
什么是“预订”?那一晚有 4 个相邻的座位?
-
这是一个非常有趣的问题。我建议将其移动或重新发布到dba.stackexchange.com,您可能会得到更多的答案和关注。我还建议遵循@GordonLinoff 的建议并将表定义发布为 SQL 命令文本而不是图表图像。 (如果您确实重新发布,请务必关闭/删除此)。
-
我会继续为您制作 SQL 命令文本...
标签: mysql sql constraints database-normalization unique-constraint