Таблицы базы данных; разложить их или обнулить их вместе? - PullRequest
1 голос
/ 25 июля 2011

Быстрый вопрос относительно дизайна базы данных;

Учитывая, что я храню User данные в базе данных, я могу идентифицировать две ( на первый взгляд ) отдельные формы данных, связанных с пользователем; данные учетной записи и данные профиля .

Большинство данных профиля являются необязательными и ненужными ( может, и часто будет NULL), тогда как данные учетной записи являются неотъемлемой частью пользователя, и их способность использовать службу ( немного или никакие записи не могут / будут NULL)

Есть ли какое-то преимущество, если разбить это на две таблицы как 1-to-1? С точки зрения дизайна это кажется логичным, но когда речь идет о производительности, это обычная ( хорошая ) практика?

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

С точки зрения логического проектирования тип объекта определяется его атрибутами.Каждый уникальный набор атрибутов определяет разные вещи и должен идти в своей собственной таблице, если у вас нет веских причин поступать иначе.Используйте принципы проектирования, такие как «Нормальная форма» и «Принцип ортогонального проектирования», чтобы проверить, какие атрибуты принадлежат к какой таблице.

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

3 голосов
/ 25 июля 2011

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

...