1)。一对多
2)。可以用来查询
这是我的想法,也许还有另一个更好的选择?

从表(7,1)中的student_id中选择*;

 column(teacher_id)     column(student_id)

   1               7
   1               9
   1               11
   2               1


//例如:select *来回表格,其中类别包含“ | 9 |”或类别包含“ | 1 |”;

 column(sport_id)     column(categories)

   1               |7|8|9|10|11|12|

   2               |1|9|


两种方法,一种是老师与学生(结合)

一个是类别是运动中的一种属性,

我认为,属性不需要使用很多列,对吧?
感谢您的回答。

最佳答案

您的第一个表格设计很好,并且是一对多关系的典型代表。但是,对于第二张表,该数据未标准化,因此可能实际上不应存在于数据库中。如果您需要生成类似于第二个示例的表视图,则MySQL提供了一个方便的聚合函数GROUP_CONCAT可以使用,例如

SELECT
    teacher_id,
    GROUP_CONCAT(student_id SEPARATOR '|') students
FROM yourTable
GROUP BY
    teacher_id;


第二个非规范化版本不好的主要原因是,很难像这样查询管道分隔的数据。数据库旨在将功能和逻辑应用于行,而不是应用于列。

关于java - 只有一列,如何为mysql中的A一对多B设计关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51551930/

10-12 01:50