DatabaseDesign: нарушать правила нормализации из-за логического различия или нет? - PullRequest
0 голосов
/ 03 февраля 2011

У меня огромная база данных. В этой базе данных у меня есть таблица пользователей.

В этой пользовательской таблице у меня есть вся информация о пользователе, которую я могу получить - адрес, имя пользователя, вес, цвет волос и многое другое (думаю, 50-80 столбов).

Теперь у меня будут пользовательские настройки.

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

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

Что мне делать? Собственная таблица для UserSettings и нарушающая правила нормализации для большой логической разницы ИЛИ ставит настройки как столбцы в User-Table и не нарушает правила нормализации для большой логики ???

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Полная нормализация редко подходит для больших сложных баз данных.

Всегда продумывайте все за и против ваших моделей. Учитывайте следующее: сложность, производительность, обслуживание, развитие.

Если ваша база данных является частью развивающейся системы, то вы почти наверняка будете менять свои модели (таблицы) и отношения в какой-то момент в будущем.

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

Попытайтесь рассмотреть, как вы моделируете свои данные различными способами. Например: Ваша текущая запись «Пользователь» звучит больше как запись «Контакт». Записи контактов могут иметь иное применение, чем сохранение системных настроек. Поэтому сохранение двух моделей в виде отдельных таблиц будет правильным решением. Даже если отношения начинаются с 1: 1.

0 голосов
/ 03 февраля 2011

Можно разбить таблицы на части - например, СУБД вполне может избежать большого количества операций поиска на диске (или чтения большого количества ненужных данных) при чтении строк. Это зависит от вашего приложения и того, как оно запрашивает данные.

0 голосов
/ 03 февраля 2011

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

...