Size: a a a

2020 December 11

В

Владислав in sql_ninja
Какой-то Хмырь
ну, походу, нужна третья таблица "уроки-ученики" с полями id_урока и id_ученика
о как...спасибо.
а в sql возможно сделать проверку по актуальным данным? Например, если сумма учеников на уроке == 5, а потом я мануально удалил (отвязал) ученика от урока, но в таблице "уроки" все равно будет отображаться 5, хотя это уже будет не верно.

UPD: грубо говоря, чтобы в колонке number_of_students показывалась сумма учеников которая привязана к id_lesson, чтобы всегда были актуальные данные, т.е. цифры были динамически зависимы
источник

O

Oleg T in sql_ninja
Владислав
о как...спасибо.
а в sql возможно сделать проверку по актуальным данным? Например, если сумма учеников на уроке == 5, а потом я мануально удалил (отвязал) ученика от урока, но в таблице "уроки" все равно будет отображаться 5, хотя это уже будет не верно.

UPD: грубо говоря, чтобы в колонке number_of_students показывалась сумма учеников которая привязана к id_lesson, чтобы всегда были актуальные данные, т.е. цифры были динамически зависимы
данные в таблицах статичны по природе своей - меняются только под воздействием. если нужен автопересчёт, то это представление или расчётные колонки, но не знаю есть ли они в SQLite
источник

O

Oleg T in sql_ninja
Владислав
о как...спасибо.
а в sql возможно сделать проверку по актуальным данным? Например, если сумма учеников на уроке == 5, а потом я мануально удалил (отвязал) ученика от урока, но в таблице "уроки" все равно будет отображаться 5, хотя это уже будет не верно.

UPD: грубо говоря, чтобы в колонке number_of_students показывалась сумма учеников которая привязана к id_lesson, чтобы всегда были актуальные данные, т.е. цифры были динамически зависимы
Если вам нужно чтобы в вэбморде где-то отображались данные, то это не прямая выборка из таблицы, не SELECT * FROM table. Это может быть запрос, который свяжет две таблицы и вернёт результаты расчётов.
источник

В

Владислав in sql_ninja
Oleg T
данные в таблицах статичны по природе своей - меняются только под воздействием. если нужен автопересчёт, то это представление или расчётные колонки, но не знаю есть ли они в SQLite
автопересчет пока не нужен, просто если мне понадобится ,например, выборка учеников конкретного занятия, я мог бы "обновить/пересчитать" таблицу, и на ее данных уже "фильтровать"
источник

В

Владислав in sql_ninja
Oleg T
Если вам нужно чтобы в вэбморде где-то отображались данные, то это не прямая выборка из таблицы, не SELECT * FROM table. Это может быть запрос, который свяжет две таблицы и вернёт результаты расчётов.
пока через cli, но в перспективе мб нужна будет вэбморда
источник

O

Oleg T in sql_ninja
Ну короче, хранить эти данные в третьей таблице или отдельном поле это денормализация.
источник

O

Oleg T in sql_ninja
Владислав
автопересчет пока не нужен, просто если мне понадобится ,например, выборка учеников конкретного занятия, я мог бы "обновить/пересчитать" таблицу, и на ее данных уже "фильтровать"
Это просто запрос. меняете условия, а не данные.
источник

В

Владислав in sql_ninja
Oleg T
Ну короче, хранить эти данные в третьей таблице или отдельном поле это денормализация.
Вы имеете введу отдельную  таблицу для id_student и id_lesson?
источник

O

Oleg T in sql_ninja
я имею в виду, что если у вас есть таблица студентов и таблица занятий и связь между ними, то количество студентов на занятии есть производная информация, которую не нужно нигде материально хранить, кроме случаев хранилищ данных, но это не ваш случай.
источник

К

Какой-то Хмырь... in sql_ninja
Владислав
Вы имеете введу отдельную  таблицу для id_student и id_lesson?
ну ты просто напишешь
select id_lesson, count(*) from lesson_student group by id_lesson

вот тебе и кол-во учеников на уроке
источник

O

Oleg T in sql_ninja
Владислав
автопересчет пока не нужен, просто если мне понадобится ,например, выборка учеников конкретного занятия, я мог бы "обновить/пересчитать" таблицу, и на ее данных уже "фильтровать"
вы тут явно путаете таблицу с результатом запроса. данные с представлением.
источник

К

Какой-то Хмырь... in sql_ninja
и ну и этсамое, PK повесь на эту таблу на оба поля
источник

В

Владислав in sql_ninja
Oleg T
я имею в виду, что если у вас есть таблица студентов и таблица занятий и связь между ними, то количество студентов на занятии есть производная информация, которую не нужно нигде материально хранить, кроме случаев хранилищ данных, но это не ваш случай.
обойтись без столбца "кол-во уч.", а эту информацию получать по выборке связи студентов к занятию?...хм  но не породит это в будущем костылей? если мне понадобится средняя количество учеников определенного урока за определенный диапазон, то визуально я бы видел сразу цифру и из него посчитал бы среднее, а то придется (наверно) что то типо цикла делать, прогонять каждое занятие из выборки и считать кол-во связей на каждый урок, а потом эти числа сложить и поделить на их количество ...
извините, если это все элементарно.
источник

В

Владислав in sql_ninja
Какой-то Хмырь
и ну и этсамое, PK повесь на эту таблу на оба поля
primary key?
источник

К

Какой-то Хмырь... in sql_ninja
Владислав
primary key?
да) чтобы один ученик не мог два раза на одном уроке присутствовать
источник

O

Oleg T in sql_ninja
Владислав
обойтись без столбца "кол-во уч.", а эту информацию получать по выборке связи студентов к занятию?...хм  но не породит это в будущем костылей? если мне понадобится средняя количество учеников определенного урока за определенный диапазон, то визуально я бы видел сразу цифру и из него посчитал бы среднее, а то придется (наверно) что то типо цикла делать, прогонять каждое занятие из выборки и считать кол-во связей на каждый урок, а потом эти числа сложить и поделить на их количество ...
извините, если это все элементарно.
нет. почитайте про третью нормальную форму БД.
источник

O

Oleg T in sql_ninja
Владислав
обойтись без столбца "кол-во уч.", а эту информацию получать по выборке связи студентов к занятию?...хм  но не породит это в будущем костылей? если мне понадобится средняя количество учеников определенного урока за определенный диапазон, то визуально я бы видел сразу цифру и из него посчитал бы среднее, а то придется (наверно) что то типо цикла делать, прогонять каждое занятие из выборки и считать кол-во связей на каждый урок, а потом эти числа сложить и поделить на их количество ...
извините, если это все элементарно.
Описанный запрос это не сложно. А вот неконсистентность данных - расхождение числа учеников и числа реальных связей это точно будет плохо.
источник

В

Владислав in sql_ninja
Oleg T
нет. почитайте про третью нормальную форму БД.
ну идея с id_student и id_lesson, мне от @User322 нравится, звучит здраво.
источник

В

Владислав in sql_ninja
Oleg T
Описанный запрос это не сложно. А вот неконсистентность данных - расхождение числа учеников и числа реальных связей это точно будет плохо.
согласен
источник

O

Oleg T in sql_ninja
Владислав
ну идея с id_student и id_lesson, мне от @User322 нравится, звучит здраво.
Это нужно сделать если этого еще нет.
источник