これがテーブルの SQL コードであるとします。
CREATE TABLE `user_is_in` (
`id_user` INT NULL ,
`id_city` INT NULL ,
`when` DATETIME NULL ,
INDEX `fk_user` (`id_user` ASC) ,
INDEX `fk_city` (`id_city` ASC) ,
CONSTRAINT `fk_user`
FOREIGN KEY (`id_user` )
REFERENCES `user` (`id` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_city`
FOREIGN KEY (`id_city` )
REFERENCES `city` (`id` )
ON DELETE SET NULL
ON UPDATE CASCADE)
ENGINE = InnoDB;
テーブルの用途は、Foursquare チェックインの種類を保存することです (ユーザーは一度に 1 つの場所に登録されました)。
今、私には2つのオプションがあります:
3 つのフィールドを持ち、主キーを持たない一意のインデックスを作成します。
一意のインデックス
id_user_is_in_UNIQUE
(id_user
ASC、id_city
ASC、when
ASC)追加の従来の ID 自動インクリメント フィールドを作成する
ユーザーと都市に関するクエリを作成したいので、2 番目のオプションは好きではありません (つまり、ある都市で 1 つの日付にチェックインしたすべてのユーザーを検索します)。
前もって感謝します。