MySQL - Использование PRIMARY KEY - UNIQUE INDEX связанной таблицы многие ко многим

Счастливый день.

Я создаю базу данных фильмов, все фильмы получат один голос за каждого пользователя, оценивая фильм "Хорошо, хорошо или справедливо". Эти голоса хранятся в таблице [movies_has_rating] с идентификатором пользователя. кто сделал голосование, с типом голосования и датой создания, мне нужно убедиться, что пользователь может дважды участвовать в фильме, так как разрешен только один голос на пользователя, хотя это уже я сделал через PHP и MySQL. запросы, все еще есть возможность добавить его вручную из MySQL, и также будет возможность установить этот же MySQL по умолчанию, мой вопрос:

1) Если поля определены как [идентификатор голосования] и [идентификатор_пользователя] в качестве первичных ключей, вы можете избежать двух оценок пользователя для одного фильма, например.

CREATE TABLE `user_has_rating` (
    `movie_id`  int UNSIGNED NOT NULL ,
    `vote_id`  int UNSIGNED NOT NULL ,
    `user_id`  int UNSIGNED NOT NULL ,
    `create_at`  datetime NOT NULL ,
    PRIMARY KEY (`vote_id`, `user_id`)
)

2) Необходимо добавить в поля UNIQUE INDEX [ голосовой идентификатор] и [user_id], когда они уже определены как первичные ключи, что имеет преимущества и отличия при использовании UNIQUE INDEX, когда мы определяем первичные ключи.

CREATE TABLE `user_has_rating` (
    `movie_id`  int UNSIGNED NOT NULL ,
    `vote_id`  int UNSIGNED NOT NULL ,
    `user_id`  int UNSIGNED NOT NULL ,
    `create_at`  datetime NOT NULL ,
    PRIMARY KEY (`vote_id`, `user_id`),
    UNIQUE INDEX `vote_id` (`vote_id`) ,
    UNIQUE INDEX `user_id` (`user_id`) 
);

3) Необходимо указать тип метода индекса, например, " BTREE или HASH "

CREATE TABLE `user_has_rating` (
    `movie_id`  int UNSIGNED NOT NULL ,
    `vote_id`  int UNSIGNED NOT NULL ,
    `user_id`  int UNSIGNED NOT NULL ,
    `create_at`  datetime NOT NULL ,
    PRIMARY KEY (`vote_id`, `user_id`),
    UNIQUE INDEX `vote_id` (`vote_id`) USING BTREE ,
    UNIQUE INDEX `user_id` (`user_id`) USING BTREE 
);

Большое спасибо за вашу помощь, большое спасибо!

0 ответов

Другие вопросы по тегам