【发布时间】:2020-03-08 17:00:35
【问题描述】:
我有这张桌子。在“评论”中,我想确保“用户”字段与字段 Reservation.User(进行预订的用户)具有相同的值,其中 Reservation 具有在字段 Review.Id_Reservation 中指定的 id。我怎么能这样做?
CREATE TABLE Reservation
(
Reservation_Number SERIAL UNIQUE /*NOT NULL*/ PRIMARY KEY,
User VARCHAR(64) DEFAULT 'Member', FOREIGN KEY(User) REFERENCES User(Email)
ON UPDATE CASCADE
ON DELETE SET DEFAULT,
Place INT, FOREIGN KEY(Place) REFERENCES Place(Id_Place)
ON UPDATE CASCADE
ON DELETE NO ACTION,
);
CREATE TABLE Review
(
Id_Review SERIAL UNIQUE PRIMARY KEY,
Id_Reservation INT NOT NULL, FOREIGN KEY(Id_Prenotazione) REFERENCES Reservation(Reservation_Number),
User VARCHAR(64) NOT NULL DEFAULT 'Member', FOREIGN KEY(User) REFERENCES Reservation(User)
/*How can I check that this user is the same who made the reservation and not another one? */
Description TEXT,
Stars INT DEFAULT 0
Type BOOLEAN DEFAULT TRUE
Answer VARCHAR(64),
Private BOOLEAN DEFAULT FALSE
CHECK(Stars > 0 AND Stars <= 5)
);
【问题讨论】:
-
-
这是查看用户名的唯一方法吗?在我看来,我希望看到用户名也带有“从用户中选择 *”
-
唯一标准化的,即理智的方式。
-
如果相应的用户已被删除,我必须在“评论”中有一个字段,该字段假定值为“成员”,以指定谁撰写了评论
-
我猜预订也会更改为
'Member'?那么问题出在哪里?您也可以从预订中获得'Member',而不是以前的用户名。你在这里叫错树了。
标签: sql postgresql create-table