引用唯一复合键或单个主键的外键

问题描述 投票:0回答:0

我正在为一个帮助学习语言的应用程序创建一个数据库。我需要创建因部分(语法测试、文本测试等)、主题和级别而异的测试。

USER
id (pk, autoincrement)
name
last_name
email (unique)
level_id
password

LEVEL
id (pk)
description

SECTION_TYPE
id (pk, no autoinc [to avoid creating a field for level_num])
section_name

TOPIC
?id (pk)
  section_id (fk)
  level_id (fk)
name

TEST
?id (pk)
  topic_id (fk)
  num

QUESTION
?id (pk)
  test_id (fk)
  num
text
has_multi_ans

ANSWER
?id (pk)
  question_id (fk)
  num
text
is_correct

我读到过使用复合索引可以促进快速搜索。并且按级别和主题搜索测试将是经常发生的事情。但就我而言,复合索引是一个独特的组合。

我可以使它成为一个复合主键,字段用制表符突出显示,而不是创建单个主键

id
。因为在第一种情况下,我还必须创建复合外键。这几乎可以消除创建表测试的需要,但会很混乱。

我该怎么办?

Postgres FK 引用复合 PK 有点不同,因为还有许多其他依赖字段,因此唯一的单个主键是合理的。

postgresql foreign-keys composite-primary-key unique-key
© www.soinside.com 2019 - 2024. All rights reserved.