我对两个表之间的以下关系有点麻烦:
说,有两个表,一个是学生,另一个是模块。 1名学生可以有1个或多个模块,但是,1个模块在技术上可以有0个或更多学生。我如何在数据库中实现它?感谢。
答案 0 :(得分:4)
这是N:N关系。答案是你必须创建一个中间表,它将在Student表和Module表之间创建一个链接。
例如,您可以命名为StudentByModule的中间表将包含一个标识学生的密钥和另一个标识该模块的密钥。这假设您已在两个表中创建了正确的密钥。
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/many-to-many.html
对于没有为任何学生分配模块的情况,这将通过中间表中没有行将模块链接到学生来建模。
另请注意,为了将学生与模块相关联,您首先必须确保首先创建学生和模块。
答案 1 :(得分:1)
这实际上是一种多对多关系。您使用第三个表来实现它以链接表
Student table
--
StudentId PK
...
Module table
---
ModuleId PK
...
StudentModule table
---
StudentId FK
ModuleId FK
只有学生和模块之间存在链接时,最后一个表才会有记录。您插入Student
和Module
表的主键以使它们链接。