только столбец, Как спроектировать отношения для A One To Many B в MySQL

0

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|

оба метода, один - учитель со студентом (комбинация)

одна категория является атрибутом в спорте,

Я думаю, не нужно использовать много столбцов, не так ли? Спасибо за ответ.

Теги:

1 ответ

2
Лучший ответ

Ваш первый дизайн стола прекрасен и типичен для отношений от одного до многих. Но, что касается вашей второй таблицы, эти данные не нормализованы, поэтому, вероятно, в реальной базе данных не должно существовать. Если вам нужно создать представление вашей таблицы, которое выглядит как второй пример, тогда MySQL предлагает удобную агрегатную функцию GROUP_CONCAT которая может использоваться, например

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

Основная причина, по которой вторая ненормализованная версия плоха, заключается в том, что трудно запросить данные, разделенные данными по каналу. Базы данных были разработаны для применения функций и логики по строкам, а не по столбцам.

  • 0
    спасибо за Ваш ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню