База данных: Разделение таблиц - PullRequest
1 голос
/ 11 января 2011

Я недавно много читал о базах данных, избыточности и т. Д.

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

Таблица пользователей должна содержать: идентификатор (PK), имя пользователя, пароль, адрес электронной почты и адрес (улица, город, почтовый индекс, страна).

Должен ли я разделить адрес и создать другую таблицу, содержащую только адрес пользователя, как: id (PK), улица, город, почтовый индекс, страна, user_id (FK))? Я даже мог бы разделить здесь почтовый индекс и страну на новые таблицы.

Имеет ли это смысл, особенно разделение почтового индекса и страны на новую таблицу?

Ура!

Ответы [ 4 ]

1 голос
/ 11 января 2011

В большинстве случаев ответ - нет.Зачем иметь дополнительное объединение, чтобы найти адрес?И почему есть две таблицы с отношениями один к одному?

Как говорили другие люди, не усложняйте свою жизнь, если вы не уверены в некотором приросте производительности.

1 голос
/ 11 января 2011

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

0 голосов
/ 11 января 2011

Вы должны делать это на основе требований, а не потому, что можете.Таким образом, либо у вас должна быть функциональная потребность (например, вы хотите хранить несколько адресов на пользователя), либо техническая проблема, которую вы хотите решить (производительность, безопасность и т. Д.).Для меня последнее звучит довольно маловероятно при такой простой конструкции стола, поэтому, учитывая информацию, которую вы предоставляете, я бы предложил придерживаться одной таблицы.

0 голосов
/ 11 января 2011

Лично я не вижу никакой дополнительной выгоды от разделения этих деталей на отдельные таблицы.

Даже если вы вряд ли будете использовать адрес / почтовый индекс очень часто, вы всегда можете выбрать только необходимые поля, используя SELECT username,email.. вместо SELECT *..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...