我需要哪种钥匙?

时间:2012-04-08 16:22:07

标签: sql-server unique-key

我有一张桌子Page。此表中的每条记录都有一个主要ID。

现在,我有一张表照片,有:

    每条记录
  • id
  • idPage指的是一个页面。

我需要表Photos中的一种键:所以,当我在表格上添加ididPage两次相同的记录时,它不会添加它两次。

我知道在MySql中是UNIQUE密钥。什么是SQL Server?我该如何创建呢?

3 个答案:

答案 0 :(得分:0)

如果您的ID是主键,则它必须已经是唯一的,并且您将无法在多个页面上拥有相同的照片。您可能希望连接表PhotosPages的PK为(idPhoto,idPage),而不是将idPage直接存储在Photos表中。

或者,您可以在(idPage,id)上创建unique index。这可能是合适的,因为idPage是页面的外键,并且索引肯定会加速您将要执行的任何连接。 unique constraint是另一种可能性,但在我看来,索引更有用。

答案 1 :(得分:0)

在Photos表上,将id和idPage一起用作复合键。这样可以防止重复。

答案 2 :(得分:0)

我认为您正在寻找CONSTRAINT UNIQUE,因为默认情况下主键id是唯一的,所以您需要保留两个组合idpageid添加到pageidCONSTRAINT UNIQUE。对于将idpageid设置为复合键,这将是等效的。