Sql 基于多重排列在DB表上运行高效搜索的问题

Sql 基于多重排列在DB表上运行高效搜索的问题,sql,search,database-design,Sql,Search,Database Design,我有一个StudentId到主题映射的表,下面是两个可能的模式 DB:RDBMS 方案1: 学生 主题 1. A. 1. B 2. A. 2. C 3. B 4. B 4. C 根本没有考虑。表表示一个实体。您的数据有两个实体:学生和科目 这些实体通过n-m关系连接:任何学生都可以有多个科目;任何科目都可以有多个学生 因此,您需要三张桌子: 学生 主题 学生科目 在关系数据库中,您不希望在单个列中存储多个项,特别是在字符串列中。在您的两个选项中,第一个基本上是正确的,但我建议为student

我有一个StudentId到主题映射的表,下面是两个可能的模式

DB:RDBMS

方案1:

学生 主题 1. A. 1. B 2. A. 2. C 3. B 4. B 4. C
根本没有考虑。表表示一个实体。您的数据有两个实体:学生和科目

这些实体通过n-m关系连接:任何学生都可以有多个科目;任何科目都可以有多个学生

因此,您需要三张桌子:

  • 学生
  • 主题
  • 学生科目

在关系数据库中,您不希望在单个列中存储多个项,特别是在字符串列中。在您的两个选项中,第一个基本上是正确的,但我建议为
studentId
s和
subjectId
s提供一个
subjects
表和数字ID。

谢谢您的回复。我想解决一个问题,即如何有效地查找所有
studentId
s,给定
subjectId
s以及一些约束条件如果我寻找订阅科目a、b的学生,那么结果应该只包括订阅科目a、b或a或b的学生。不是a、c或b、c,如果我在上面提供的示例模式中运行此搜索,则返回预期结果:StudentId 1和3。请注意,2和4不是结果的一部分,因为c@Loik . . . 这个问题似乎是关于如何设计数据库的。如果它也是关于运行查询的,那么它对于一个问题来说太宽泛了。