2014-01-05 2 views
1

Я хочу сделать сайт для школы, и из-за этого мне нужно предложение. Я пытаюсь составить таблицу расписания для каждого преподавателя, было бы неплохо установить их в одной таблице или в разных таблицах для каждого учителя (Примечание: Учителя могут изменять расписание с сайта.)? Таблица расписания выглядит так, но для того, чтобы включить расписание всех учителей, я тоже хотел добавить столбец идентификаторов. enter image description hereНужно предложение

И второй вопрос о чате. Чтобы добавить функцию чата на мой сайт, я открыл новую таблицу с именем Chats. Итак, вопрос в том, было бы неплохо открыть разные таблицы для чатов, или было бы хорошо, если бы я изменял таблицу чатов каждый раз, когда вызывал новый чат?

+0

Я предлагаю нормализованную базу данных. Если вы не знаете, что это значит, я слышал хорошие вещи о книге Database Design for Mere Mortals. –

+2

Отдельная таблица для каждого учителя? Нет, никогда не делай этого. Добавление пользователя в систему не требует * модификации схемы базы данных *. – David

+0

Пожалуйста, не задавайте сразу два вопроса. В этом случае они связаны друг с другом, но как только у вас есть ответ на первый вопрос, второй может быть вообще не нужен. –

ответ

3

Как правило, если у вас один и тот же тип данных, он должен быть всегда всегда (*) храниться в одной таблице.

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

Опять же, ответ относится ко второму вопросу. Все чаты должны заходить в одну таблицу Chats. Вы должны использовать столбец, чтобы идентифицировать чат (сообщение) как часть разговора, а также участников.

(*) Для дальнейшего расширения на почти всегда выше. Причина, по которой я сказал почти всегда, а не всегда, заключается в том, что могут быть некоторые случаи, когда две или более таблицы содержат один и тот же тип данных, было бы хорошей идеей. Например, в примере с расписаниями. Возможно, вы захотите сохранить все данные расписания учителей в таблице Schedules, но периодически перемещайте данные старше года из этой таблицы в таблицу ArchivedSchedules. Эта вторая таблица может иметь примерно такую ​​же структуру, как и таблица Schedules, но разделение данных таким образом имеет смысл, поскольку это улучшит производительность доступа.

+1

Разве таблица чатов не вызовет ошибок, если она станет огромной? –

+2

Большие таблицы не вызывают _bugs_. Это может привести к медленному запуску запросов, но это будет другая вещь. –

+0

Вы всегда можете архивировать старые чаты. –

Смежные вопросы