幸せな日。
私は映画のデータベースを作成しています。すべての映画は、ユーザーごとに 1 票を受け取り、映画のように見える「良い、良い、または公正」を評価します。これらの投票は、ユーザーの ID を持つテーブル [movies_has_rating] に保存されます。誰が投票したか、投票の種類、および作成日とともに、ユーザーが映画に 2 回参加できるようにする必要があります。これは、ユーザーごとに 1 つの投票しか許可されていないためです。ただし、これは既に PHP と MySQL を使用して行っています。クエリ、MySQL から手動で追加する可能性がまだあり、これと同じデフォルトの MySQL を確立することもできます。私の質問は次のとおりです。
1)フィールドが[vote id]と[user_id]を主キーとして定義されている場合、たとえば、同じ映画に対してユーザーの 2 つの評価を避けることができます。
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 [vote id]および[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
);
どうもありがとうございました。