Проектирование базы данных в mysql
Существует база данных, в которой есть таблицы: department, employee, calendar, event.
Немного расшифровки: существует рабочий, который работает в департаменте. У рабочего есть календарь на год (месяц и дни), каждый день в каждом месяце отмечается какое-либо событие (выходной, рабочий день, отпуск и тд). Это производственный календарь.
Нужно было спроектировать базу данных. Не совсем уверен, что правильно сделал, прошу помощи или хотя бы направления на правильный путь.
И еще вопрос: календарь в базе данных (месяцы и дни месяца) нужно заполнять вручную или можно как-то сделать это проще?
Ответы (1 шт):
К таблицам department, employee вопросов нет. Хранить в calendar отдельно месяц и день это двойной источник проблем (15 месяц, 45 день), лучше хранить дату, если нет возможности, то год и день.
По заданию выходит, что у вас счетное количество событий, значит для них должна быть отдельная таблица без привязки к чему либо
event
-----
idevent
event
Сам производственный календарь преобразуется
calendar
--------
idcalendar
caldate
idemploye
idevent
Уникальный ключ по вашей задаче для этой таблицы должен быть caldate+idemploye.
По поводу заполнения таблицы calendar - стандарта нет. Можно заполнить для сотрудника на месяц событием по умолчанию.
Обычно календарь без привязки к сотруднику в БД хранят отдельно, чтобы указывать продолжительность каждого рабочего дня. Смысла ссылаться на такой календарь особо нет, т.к. всегда можно сделать связь по дате.
