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/