我想创建一个用于创建学术考试的数据库应用程序。为简单起见,数据库包含以下3个表。
问题:
分类
ProblemCategory:
每个问题至少与一个类别相关联,最多与五个类别相关联。我的问题是如何确保在数据库级别保持此约束?
以下设计是否可以替代上述设计?
问题:
分类
答案 0 :(得分:1)
问题1:每个问题至少与一个类别相关联。
答案:在Problems表上声明一个外键约束。
Problems.ProblemID REFERENCES ProblemCategory.ProblemID
(据推测还有外键限制 在ProblemCategory上声明引用Problems.ProblemID和Categories.CategoryID。)
问题2:每个问题最多与5个类别相关联。
答案:在ProblemCategory表上声明一个约束。 (正如布兰科指出的那样。)
WHERE (SELECT MAX(CatCount)
FROM (SELECT COUNT(*) AS CatCount
FROM ProblemCategory
GROUP BY ProblemID)
) <= 5
问题3:每个问题记录最多设计五个Cat ID。
答案:不,这是一个糟糕的主意。 (阅读有关规范化的任何文本。)考虑: