gpt4 book ai didi

mysql - 如何避免重复表?

转载 作者:行者123 更新时间:2023-11-29 00:18:46 24 4
gpt4 key购买 nike

我需要将有关计划日期和拍摄日期的信息存储在数据库中。数据库需要非常可扩展和高效。我是否应该删除 Dates 表并将 DateTakenDatesPlanned 放入不同的数据库中?我唯一不情愿的是有多个表依赖于 DateId。是否有更好的解决方案不需要重复表而需要 DateId

CREATE TABLE Dates
(
DateId INT NOT NULL AUTO_INCREMENT,
ProfileId INT NOT NULL,
PRIMARY KEY (DateId, ProfileId)
);

CREATE TABLE DateTaken
(
DateId INT NOT NULL PRIMARY KEY,
Title VARCHAR(255) NOT NULL,
DateStart DATE NOT NULL,
DateEnd DATE NOT NULL,
Summary VARCHAR(1500),
FOREIGN KEY (DateId) REFERENCES Dates(DateId)
);

CREATE TABLE DatePlanned
(
DateId INT NOT NULL PRIMARY KEY ,
Title VARCHAR(255) NOT NULL,
DateStart DATE NOT NULL,
DateEnd DATE NOT NULL,
Summary VARCHAR(1500),
FOREIGN KEY (DateId) REFERENCES Dates(DateId)
);

CREATE TABLE DateRestaurant
(
RestaurantId INT NOT NULL,
DateId INT NOT NULL,
CheckIn DATE NOT NULL,
CheckOut DATE NOT NULL,
Name VARCHAR(255) NOT NULL,
PRIMARY KEY (DateId, RestaurantId),
FOREIGN KEY (DateId) REFERENCES Dates(DateId)
);

最佳答案

在我看来,您拆分表格是因为您想赋予它们另一种功能意义。为什么?我想这全都与餐厅订单有关。

因此,只需将两个表合并在一起,为 planned status 添加一个字段(或一些字段)或另一个记录状态更改(计划、签到、退房)瞧,你已经完成了。

编辑

我建议添加一个表 OrderStatus,而不是向表中添加状态字段,其中包含 DateIdStatusStartDate,可能是 EndDateSummary。通过这种方式,您可以每次都更新状态,添加任意数量,可以取消并重新打开,等等。

关于mysql - 如何避免重复表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21859869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com