0

userquestion、およびanswerを持つ SQL があります。質問の割合を保持するジャンクション テーブルが必要です。多くのユーザーが多くの質問を評価できます。この SQL の何が問題なのか教えていただけますか? SQL は次のとおりです。

 CREATE TABLE user
(
user_id int(4) NOT NULL,
user_name varchar(255) NOT NULL,
PRIMARY KEY (user_id)
);

CREATE TABLE question
(
question_id int(4) NOT NULL,
question_text longtext NOT NULL,
user_id int(4) NOT NULL,
PRIMARY KEY (question_id),
FOREIGN KEY (user_id) REFERENCES user(user_id)
);

CREATE TABLE answer
(
answer_id int(4) NOT NULL,
user_id int(4)NOT NULL,
question_id int(4) NOT NULL,
PRIMARY KEY (answer_id),
FOREIGN KEY (user_id) REFERENCES user (user_id),
FOREIGN KEY (question_id) REFERENCES question (question_id)
);

CREATE TABLE rate
(
user_id int(4) REFERENCES user NOT NULL,
question_id int(4) REFERENCES question NOT NULL,
rate int(4) NOT NULL
)
4

2 に答える 2

1

Dan Bracukによって概説された構文の誤りに加えて、いくつかの固有の制約がモデルから欠落していると思います。

私は、1 人のユーザーが 1 つの質問に 1 回だけ回答できると信じてanswerいます。についても同様にrateuser_id,question_id一意の制約 / PK を形成する必要があります。また、通常usernameもユニークです。

同じユーザーが同じ質問に 1 回以上回答またはランク付けできるようにする場合は、 および で date_time 属性が欠落しanswerrateいます。

于 2013-04-29T15:29:21.867 に答える