我有一张冰淇淋店(会客室)的桌子和一间供客厅内不同口味的桌子。另外还有一个用户表,用户应该能够评定风味。数据库设计(DDL)
客厅和味道之间存在一对多的关系,味道是一个弱的实体。 Flavor和User之间还有一个多对多的关系,然后创建一个名为Vote的新表。
我的DDL脚本如下所示:
CREATE TABLE parlor (
parlor_id INTEGER AUTO_INCREMENT,
name VARCHAR(255),
street VARCHAR(255),
street_numb INTEGER,
zip INTEGER,
PRIMARY KEY (parlor_id)
);
CREATE TABLE flavour (
name VARCHAR(255),
parlor_id INTEGER,
PRIMARY KEY (name, parlor_id),
FOREIGN KEY (parlor_id) REFERENCES parlor (parlor_id)
);
CREATE TABLE user (
uid INTEGER AUTO_INCREMENT,
username VARCHAR(255) UNIQUE,
password BINARY(64),
PRIMARY KEY (uid)
);
CREATE TABLE vote (
date TIMESTAMP,
ranking INTEGER(5),
flavour VARCHAR(255),
uid INTEGER,
parlor_id INTEGER,
PRIMARY KEY (date, uid, flavour, parlor_id),
FOREIGN KEY (uid) REFERENCES user (uid),
FOREIGN KEY (flavour) REFERENCES flavour (name),
FOREIGN KEY (parlor_id) REFERENCES flavour (parlor_id)
);
我的问题是,我能够投票选举的味道,甚至没有在客厅存在。例如:
INSERT INTO vote (date, ranking, flavour, uid, parlor_id) VALUES ('...', 5, 'Chocolate', 1, 10)
在ID为10会客,与用户ID 1倍速率的味道 '巧克力' 用户与5
但是当我做...
SELECT * FROM flavour WHERE parlor_id=10;
没有味道'巧克力'
用户如何与客厅关联?他们在哪里买口味?用户不能从不同的商店购买吗?来自不同客厅的味道有什么不同,或者客厅A的巧克力与客厅B的巧克力相同? – TommCatt