powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно соединить таблицы?
6 сообщений из 6, страница 1 из 1
Как правильно соединить таблицы?
    #40063563
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста! Проектирую базу данных посещаемости учениками кружка. Необходимо все сделать в 3nf.

У меня есть таблица "ученики" (с рядом атрибутов). И вот хочу сделать отдельную таблицу "посещаемость". Сразу сделал c атрибутами: ID, pupil_id, date. Но потом подумал, если придет, например, 10 учеников в одну дату (пускай 10.04.2021), то дата задублируется 10 раз и, как я думаю, будет уже не 3nf. Как вообще на практике это реализуется? Может это сделать через третью таблицу через связь многие-ко многим?
...
Рейтинг: 0 / 0
Как правильно соединить таблицы?
    #40063564
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotikдата задублируется 10 раз и, как я думаю, будет уже не 3nf.

Ты думаешь неправильно. Но таки да, попробуй создать справочник-календарь. Он может
пригодиться в некоторых случаях.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно соединить таблицы?
    #40063567
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Morskoi_kotikдата задублируется 10 раз и, как я думаю, будет уже не 3nf.

Ты думаешь неправильно. Но таки да, попробуй создать справочник-календарь. Он может
пригодиться в некоторых случаях.


Так а почему неправильно? (хочу разобраться). Потому, что это таблица фактов и в ней допустимы дубли дат?
...
Рейтинг: 0 / 0
Как правильно соединить таблицы?
    #40063568
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotikПотому, что это таблица фактов и в ней допустимы дубли дат?

Подумай на досуге чем дубли дат отличаются от дублей ссылок на таблицу с одним полем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно соединить таблицы?
    #40063571
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Morskoi_kotikПотому, что это таблица фактов и в ней допустимы дубли дат?

Подумай на досуге чем дубли дат отличаются от дублей ссылок на таблицу с одним полем.


Я это понимаю так, что если в справочнике с одним полем изменится значение этого поля, то соответственно по ссылке изменится значение во всех строках таблицы, где эта ссылка находится. Тут понятно, когда, например, изменится фамилия преподавателя, который ведет кружок (или категория преподавателя). Но дата... дата может измениться только в случае ошибки и поэтому справочник дат не нужен? Правильно? И дата по отсутствию избыточности данных приравнивается к ссылке?
...
Рейтинг: 0 / 0
Как правильно соединить таблицы?
    #40075947
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotik,
У Вас в таблице посещаемости будет одна и та же дата фигурировать по многу раз, как и ID занимающегося. Другой вопрос, что каждое сочетание "дата - ID занимающегося" должно быть уникальным, по идее. Ведь один человек ходит на кружок один раз в день. Если же занятия кружка проходят несколько раз в день, и один человек посещает не одно занятие конкретного кружка в день, а несколько (неважно по каким причинам) и Вы хотите и это тоже отслеживать, тогда надо добавить поле времени начала занятия или поле номера занятия кружка или что там у Вас есть.
У Вас дата - это атрибут, а не сущность, так что всё в порядке. А то можно начать переживать ещё по поводу "АААА! У меня один человек ходит на один и тот же кружок двадцать раз в год! Не нарушит ли такая куча одинаковых pupil_id 3НФ? Что делать?". Всё в норме и с датами, и с pupil_id, не переживайте. Людей как сущность в отдельный справочник вынесли, и это правильно, и достаточно.

Ну и если кружков несколько, тогда добавьте ещё в таблицу поле с id кружка.

Это вариант строить таблицу типа pupil_id,дата1,дата2,дата3 - глупость и идиотизм, а у Вас всё верно.
А если нужно будет получить отчёт вида pupil_id,дата1,дата2,дата3 - то его при помощи Pivot можно сделать из Вашей таблицы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно соединить таблицы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]