具有组合主键的外键约束(关系)

牢骚

以下示例用于解释我要实现的目标。考虑一个带有用户的表,另一个带有主题的表。每个用户都应该能够(一次)对每个主题进行评分,但不必对每个主题进行评分。这些是示例的示例表:

CREATE TABLE [Topic](
    [topicID] [int] NOT NULL,
    [topic] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Topic] PRIMARY KEY(topicID))

CREATE TABLE [User](
    [userID] [int] NOT NULL,
    [name] [nvarchar](50) NOT NULL
 CONSTRAINT [PK_User] PRIMARY KEY(userID))

CREATE TABLE [Vote](
    [topicID] [int] NOT NULL,
    [userID] [int] NOT NULL,
    [vote] [int] NOT NULL,
 CONSTRAINT [PK_Vote] PRIMARY KEY 
([topicID],[userID]))

PK_Vote选择主键是为了指定一个约束,即每个用户最多只能为每个主题投票一次。是否有任何方法可以使用此组合主键指定外键约束(关系)?据我了解,我只能整体引用一个键,因此这是不可能的,因为该键的每个部分(列)都应与另一个表的主键匹配。

我要这个SQL Server 2008。

梅迪·洛菲(Mehdi Lotfi)

我建议创建带有标识列的投票表,并添加唯一索引以限制插入重复的记录,并为用户和主题表创建外键约束。

CREATE TABLE [Vote](
    VoteId INT NOT NULL IDENTITY(1,1),
    [topicID] [int] NOT NULL,
    [userID] [int] NOT NULL,
    [vote] [int] NOT NULL,
 CONSTRAINT [PK_Vote] PRIMARY KEY ([VoteId]))
 GO

 CREATE UNIQUE NONCLUSTERED INDEX UX_Vote ON dbo.Vote(TopicID, UserID)
 ALTER TABLE [Vote] ADD CONSTRAINT FK_Vote_Topic FOREIGN KEY(TopicID) REFERENCES dbo.Topic(TopicID)
 ALTER TABLE [Vote] ADD CONSTRAINT FK_Vote_User FOREIGN KEY(UserID) REFERENCES dbo.[User](UserID)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有外键的组合主键输出到不同的表

来自分类Dev

当外键约束是组合主键的一部分时,依赖关系规则试图清除SQLAlchemy中的主键

来自分类Dev

外键与主键的关系

来自分类Dev

具有外键约束的关系数据库如何摄取可能顺序错误的数据?

来自分类Dev

避免外键组合的约束

来自分类Dev

查询具有主键和辅助键约束的Cassandra

来自分类Dev

关联关系外键约束

来自分类Dev

在不知道主表主键的情况下,在具有外键关系的表中插入2行

来自分类Dev

SQL Server性能:具有外键约束的复合键

来自分类Dev

使用Hibernate插入具有主键/外键的行

来自分类Dev

外键必须具有与引用的主键相同的列数

来自分类Dev

外键必须与引用的主键具有相同的数字列

来自分类Dev

主键和外键约束混乱

来自分类Dev

如何使用主键和外键约束?

来自分类Dev

MySQL主键作为外键-约束错误

来自分类Dev

更改外键约束主键错误

来自分类Dev

在“车辆”表上插入或更新违反外键约束,车辆与用户表具有多对一关系

来自分类Dev

MVC删除具有多个必需外键约束的记录

来自分类Dev

具有外键表约束的备份MySQL模式

来自分类Dev

如何清除具有外键约束的数据库?

来自分类Dev

从具有外键约束的多个表中删除记录

来自分类Dev

生成具有外键约束的插入语句

来自分类Dev

删除具有外键约束的模型条目的问题

来自分类Dev

是主键由整数和外键组成,还是具有主键自动增量和外键,哪个更好?

来自分类Dev

使用由整数和外键组成的主键还是具有自动递增的主键和外键,哪个更好?

来自分类Dev

Oracle:获取所有约束/列(主键和外键)

来自分类Dev

在数据库中找到引用某个主键的所有外键约束

来自分类Dev

无法在现有表的主键上创建约束或索引或外键

来自分类Dev

在数据库中找到引用某个主键的所有外键约束

Related 相关文章

  1. 1

    具有外键的组合主键输出到不同的表

  2. 2

    当外键约束是组合主键的一部分时,依赖关系规则试图清除SQLAlchemy中的主键

  3. 3

    外键与主键的关系

  4. 4

    具有外键约束的关系数据库如何摄取可能顺序错误的数据?

  5. 5

    避免外键组合的约束

  6. 6

    查询具有主键和辅助键约束的Cassandra

  7. 7

    关联关系外键约束

  8. 8

    在不知道主表主键的情况下,在具有外键关系的表中插入2行

  9. 9

    SQL Server性能:具有外键约束的复合键

  10. 10

    使用Hibernate插入具有主键/外键的行

  11. 11

    外键必须具有与引用的主键相同的列数

  12. 12

    外键必须与引用的主键具有相同的数字列

  13. 13

    主键和外键约束混乱

  14. 14

    如何使用主键和外键约束?

  15. 15

    MySQL主键作为外键-约束错误

  16. 16

    更改外键约束主键错误

  17. 17

    在“车辆”表上插入或更新违反外键约束,车辆与用户表具有多对一关系

  18. 18

    MVC删除具有多个必需外键约束的记录

  19. 19

    具有外键表约束的备份MySQL模式

  20. 20

    如何清除具有外键约束的数据库?

  21. 21

    从具有外键约束的多个表中删除记录

  22. 22

    生成具有外键约束的插入语句

  23. 23

    删除具有外键约束的模型条目的问题

  24. 24

    是主键由整数和外键组成,还是具有主键自动增量和外键,哪个更好?

  25. 25

    使用由整数和外键组成的主键还是具有自动递增的主键和外键,哪个更好?

  26. 26

    Oracle:获取所有约束/列(主键和外键)

  27. 27

    在数据库中找到引用某个主键的所有外键约束

  28. 28

    无法在现有表的主键上创建约束或索引或外键

  29. 29

    在数据库中找到引用某个主键的所有外键约束

热门标签

归档