防止用户使用MYSQL多次加入调查

时间:2018-12-22 16:13:52

标签: mysql database

例如,我们有一个网站。我们已经将调查添加到我们的站点。 用户将在我们的网站上参与调查。

我们有一个如下数据库。 有3个表格,分别是用户,调查和SurveyParticipation。

users
->userID         (int)
->username       (varchar(45))
->password       (varchar(45))
->email          (varchar(45))
->firstname      (varchar(45))
->lastname       (varchar(45))

surveys
 ->surveyNumber       (int)
 ->questionNumber     (int)
 ->question           (varchar(500))

surveyParticipation
 ->surveyNumber       (from the surveys table)
 ->userID             (from the users table)

我只想使用mysql(phpmyadmin)进行以下操作,而不使用任何编程语言;

1-)一个成员可以参加一个以上的调查表(但每个成员只能参与一次调查)

例如;

调查参与表

 surveyNumber:1   userID:     1
 surveyNumber:1   userID:     2
 surveyNumber:1   userID:     3
 surveyNumber:1   userID:     4
 surveyNumber:1   userID:     5
 surveyNumber:1   userID:     6
 surveyNumber:1   userID:     7
 surveyNumber:2   userID:     1
 surveyNumber:2   userID:     2
 surveyNumber:2   userID:     3
 surveyNumber:2   userID:     4
 surveyNumber:2   userID:     1  (This user has joined more than once! How do I prevent it)

你能帮助我解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

surveynumber中的useridsurveyparticipation上添加唯一约束。

ALTER TABLE surveyparticipation
            ADD UNIQUE (surveynumber,
                        userid);

或者,由于该表显然没有,但应该有一个,因此使其成为主键。

ALTER TABLE surveyparticipation
            ADD PRIMARY KEY (surveynumber,
                             userid);

主键也必须是唯一的,因此也可以使用。而且,在surveynumberuserid中,null似乎都没有意义,因此随之而来的隐式not null约束也没有害处。