Запретить пользователям присоединяться к опросу несколько раз с помощью MYSQL - PullRequest
0 голосов
/ 22 декабря 2018

Например, у нас есть веб-сайт.Мы добавили опросы на наш сайт.В опросах примут участие пользователи нашего сайта.

У нас есть база данных следующим образом.В качестве пользователей доступны 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-) один участник может участвовать в более чем одном вопроснике (но каждый участник может участвовать только один раз в опросе)

например;

surveyParticipation table

 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 голосов
/ 23 декабря 2018

Добавьте уникальное ограничение на surveynumber и userid в surveyparticipation.

ALTER TABLE surveyparticipation
            ADD UNIQUE (surveynumber,
                        userid);

Или, поскольку у таблицы, по-видимому, нет ни одного, но должен быть, сделайте его первичным ключом.

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

Первичные ключи тоже должны быть уникальными, так что это тоже работает.И, по-видимому, нулевые значения не имеют смысла ни в surveynumber, ни в userid, поэтому неявное не нулевое ограничение, сопровождающее его, также не повредит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...