【问题标题】:Category and Subcategories MySQL类别和子类别 MySQL
【发布时间】:2017-11-15 18:17:32
【问题描述】:

我有 3 张桌子:

CREATE TABLE student
(ID INT PRIMARYKEY NOT NULL)

CREATE TABLE classA
(ID INT PRIMARYKEY NOT NULL)

CREATE TABLE classB
(ID INT PRIMARYKEY NOT NULL)  

我的主要类别是“学生”。我的子类别是来自“classA”或“classB”的学生。

现在我的问题是如何在 mysql 中实现这个模型?我考虑过在学生和班级A之间建立一对多的关系,在学生和班级B之间建立一对多的关系。不知道这是否是最好的方法,是否真正实现了我想要的。

我是一个主要的初学者,我的英语很差,所以提前抱歉

【问题讨论】:

  • 每个班级只有一个学生吗?如果每个班级将有多个学生,并且每个学生可以有多个班级,则需要多对多关系。
  • @PaydenK.Pringle 每个班级可以有多个学生,但一个学生可以在 A 班或 B 班。所以他不能同时在两个班

标签: mysql database heidisql


【解决方案1】:

这完全取决于您的规范 :)

如果一个学生在班级表中应该有许多共同受访者,那么是的,您必须建立一对多的关系。

学生的主键和 ClassA 和 ClassB 的外键。

我们举一个超级简单的例子:

如果学生表中的学生将借一些书(您会将这些书保留在 ClassA 表中),那么这是学生表之间的一对多关系,其中一行包含学生 id(主键)和 classA 将有很多行具有相同的学生ID(这里是外键)和他借的书:)

希望对您有所帮助!

【讨论】:

  • 感谢您的回答。所以我不希望classA表中的学生ID不止一次,每个ID都应该是唯一的。所以一个学生要么在 A 班,要么在 B 班,但不能同时在这两个班。但是在这两个班里都有不止一个学生。那么我应该实现一对一的关系吗?
  • 是的,如果是这种情况,那么您将拥有 studentTable(studentId 作为主键)-> classTableA(studentId 作为外键)的一对一关系。这是一种可能的设计,另一种可能是学生表将有一个带有 classId 的列(假设 classA 为 1,classB 为 2),在这种情况下反之亦然:学生表中班级的 ID 将是外键和类表中类的 id 将是外键。
  • 如果您觉得这个答案有帮助,请接受它作为答案(答案下方的复选标记:))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2016-09-19
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多