Как установить связь между изображениями, пользователями и таблицами рейтингов - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть следующие таблицы:

 a) Images (Columns : imageId{PK Int} )
 b) Users (Columns : username {PK varchar(50), ...}
 c) Ratings (Columns : imageId {FK}, username {FK}, Stars {int})

Я хочу, чтобы в таблице рейтинга не было повторяющихся записей, таких как:

1, Amigo, 5 (This is right)
1, Durango, 3 (This is right)
1, Amigo, 3 (WRONG) Amigo should not be allowed to add new record but only update

Как я могу сделать это со стороны базы данных, установив отношения вместо того, чтобы заботиться об этом со стороны приложения. Я не хочу делать бэкэнд-вызов и проверять, существует ли эта запись, и если да, пожалуйста, обновите, но я хочу, чтобы база данных была умной, чтобы не добавлять это, либо выдав исключение, которое я поймаю, вместо этого обновив запись. или же если БД может просто обновить его, это было бы здорово. Пожалуйста, наведите меня, что я должен делать.

1 Ответ

0 голосов
/ 02 ноября 2011

Добавьте уникальное ограничение для ImageId и UserName в таблице Ratings.Взгляните на документацию здесь:

http://msdn.microsoft.com/en-us/library/ms191166.aspx

Ваше утверждение alter будет выглядеть примерно так:

ALTER TABLE [dbo].[Ratings] 
ADD CONSTRAINT UNQ_Ratings UNIQUE (imageId, username) 
...