如何建立图像,用户和评级表之间的关系

时间:2011-11-01 04:21:41

标签: database database-design relational-database

我有以下表格:

 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

如何通过建立关系而不是从应用程序端处理此关系,从数据库端执行此操作。我不想进行后端调用并检查此记录是否存在,如果是,请更新,但我想要的是数据库是聪明的不要通过抛出异常来添加它,我将捕获广告更新记录而不是要么 如果DB可以只更新它会很酷。请指导我该怎么做。

1 个答案:

答案 0 :(得分:0)

在Ratings表中的ImageId和UserName上添加UNIQUE约束。看一下这里的文档:

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

你的alter语句看起来像这样:

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