아이스크림 가게 (팔러) 용 테이블과 팔러에서 제공되는 다양한 맛을위한 테이블이 있습니다. 또한 사용자 테이블이있어 사용자가 맛을 평가할 수 있어야합니다.데이터베이스 디자인 (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)
);
내 문제는 내가 심지어 가게에 존재하지 않는 맛을 위해 투표 할 수 있어요 있다는 것입니다. 예를 들면 다음과 같습니다 ID (10)와 가게에서
INSERT INTO vote (date, ranking, flavour, uid, parlor_id) VALUES ('...', 5, 'Chocolate', 1, 10)
, 5
하지만 내가 할 ...
SELECT * FROM flavour WHERE parlor_id=10;
와 사용자 ID 1 비율 맛 '초콜릿'을 가진 사용자
맛이없는 '초콜릿'
사용자는 팔러와 어떤 관련이 있습니까? 그들이 맛을 사는지? 사용자가 다른 매장에서 구입할 수 없습니까? 다른 가게의 맛에 대해 다른 점이 있습니까? 아니면 Parlor A의 초콜릿이 Parlor B의 초콜릿과 같은가요? – TommCatt