Нормализация базы данных - PullRequest
9 голосов
/ 19 июля 2010

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

Спасибо

Ответы [ 13 ]

0 голосов
/ 19 июля 2010

Я согласен с S.Lott и хотел бы добавить:

  1. Хороший ответ зависит от того, что вы уже знаете.Базовая «математика» теории реляционных баз данных, однако, определяет очень четко определенные уровни нормализации.Вы не можете больше нормализоваться, когда достигли окончательной нормальной формы.

  2. В зависимости от того, что вы хотите смоделировать с помощью своих трех сущностей, и от того, как вы их идентифицируете, вы можете придумать совершенно разные концептуальные модели данных, которые можно представить в виде смеси.нормальных форм - или вообще ненормализованных (например, 1 таблица для всех данных с дескрипторами и пустыми отверстиями повсюду ...).Представьте, что вы нормализуете свои три сущности до предельной нормальной формы.Теперь я могу ввести новое требование, или вариант использования, или расширение, которое придает описательному атрибуту до настоящего времени каким-то образом упорядоченный или ссылочный, или структурированный характер, если вы посмотрите на его содержание.Затем модель должна представлять это поведение, и то, что раньше было атрибутом, возможно, будет лучше представлять собой отдельный объект, на который ссылаются другие объекты.

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

Все (работающие) схемы БД, которые я видел до сих пор, либо имеют довольно нормализованную концептуальную модель данных, с довольно некоторой денормализацией, выполненной на уровне логической и / или физической модели данных (говоряв терминах Sybase PowerDesigner), чтобы сделать модель "управляемой" - либо это, либо они не работали, то есть потерпели неудачу, потому что проблемы с обслуживанием стали очень быстрыми.

0 голосов
/ 19 июля 2010

Если вы используете Oracle 9i, вы можете хранить адресные объекты в ваших таблицах. Это позволило бы устранить (обоснованные) опасения по поводу форматов адресов.

0 голосов
/ 19 июля 2010

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

Но в дополнительной таблице могут быть указаны названия улиц, городов, стран ...

И самое важное на каждом вокзалежилье и аэропорт, вероятно, будут иметь только один адрес, так что это отношение n: 1.

...