我正在构建一个数据库系统,用户可以对自己可以创建的问题进行投票。我正在努力的是正确地填充数据库,特别是因为我已经尝试了规范化它并且它让我很困惑!我是SQL和MySQLi的新手。
在下面的数据库中,当一个人在我的网页上创建个人资料然后再次使用该信息时,如果我想将他们的UserID与QuestionID和Up-或他们做出了低票?
我正在寻找有关数据库设计的帮助,但特别有助于我将数据放入数据库并将其“捆绑”在一起的问题。
答案 0 :(得分:2)
我尝试更简单的方法,一次一步地将其标准化。
用户表格不错
create table users (
userid int not null auto_increment primary key,
email varchar(100) not null,
password varchar(255) not null
);
问题表
我只是在问题表中标记出问题的人是否以
开头create table questions (
questionid int not null auto_increment primary key,
question mediumtext or whatever,
userid int not null,
add fk here for userid
);
问题投票 - 多对多/联合表
create table question_votes (
question_votesid int not null auto_increment primary key,
questionid int not null,
voterid int not null,
votedate timestamp not null default current_timestamp,
score int not null,
add fk here for questionid and voterid
);
答案表
create table answers (
answerid int not null auto_increment primary key,
answer mediumtext or whatever,
questionid int not null,
userid int not null,
add fk here for questionid, userid
);
您可以选择创建仅包含答案的答案,以及一个名为question_answers的联结表,其中包含questionid,answerid列。您还可以选择将question_userid和answer_userid放在此表中。阅读最后一段以获得答案。
回答投票表
create table answer_votes (
answer_votesid int not null auto_increment primary key,
answerid int not null,
voterid int not null,
votedate timestamp not null default current_timestamp,
score int not null,
add fk here for answerid and voterid
);
将一些虚拟数据放入其中并开始问自己问题 - 我需要哪些信息。如果X发生了怎么办这个架构可以适应我将在X发生的时候被问到的答案吗?等
当你通过头脑中的Q& A时,你会发现你应该在哪里正常化以及在何种程度上。