1). От одного до многих
2).it может использоваться для запроса
это моя идея, может быть, еще лучше?
выберите * из таблицы where student_id в (7,1);
column(teacher_id) column(student_id)
1 7
1 9
1 11
2 1
//например: select * fro table, где категории содержат '| 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;
Основная причина, по которой вторая ненормализованная версия плоха, заключается в том, что трудно запросить данные, разделенные данными по каналу. Базы данных были разработаны для применения функций и логики по строкам, а не по столбцам.