我需要存储有关计划日期和数据库中日期的信息。数据库需要具有很高的可扩展性和效率。我应该删除Dates
表并将DateTaken
和DatesPlanned
放入不同的数据库吗?我唯一不情愿的是有多个表依赖于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)
);
答案 0 :(得分:1)
在我看来,你正在拆分表,因为你想给它们另一个功能意义。为什么?我想这都是关于餐馆订单的。
因此,只需将两个表合并在一起,为planned status
添加一个字段(或一些字段),或者为保留状态更改日志的第二个表(计划,签入,签出)瞧,你已经完成了。
修改强>
我建议添加一个包含OrderStatus
,DateId
,Status
,可能StartDate
的表格EndDate
,而不是向表中添加状态字段。 }和Summary
。我通过这种方式每次都可以更新状态,添加任意数量,可以取消并重新打开等等。