アイスクリームショップ(パーラー)のテーブルと、お店で提供されるさまざまな味のテーブルがあります。さらに、ユーザーテーブルがあり、ユーザーはフレーバーを評価できる必要があります。データベースデザイン(DDL)
フレーバーが弱いエンティティであるパーラーとフレーバーの間には1対多の関係があります。 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
を持つユーザーIDを持つユーザー1つの速度味 'チョコレート' しかし、私はやる
SELECT * FROM flavour WHERE parlor_id=10;
例えば:
フレーバー 'チョコレート'がありません
ユーザーはどのようにパーラーに関連付けられていますか?彼らはどこで味を買うのですか?ユーザーは別の店から購入できませんか?違う店のフレーバーや、パーラーBのチョコレートと同じパーラーAのチョコレートが違うのですか? – TommCatt