Как мне нормализовать эту таблицу - PullRequest
1 голос
/ 11 июля 2011

У меня есть база данных, в которой хранятся тысячи закладок, а таблица BM_Table имеет следующие столбцы

Name  Location

Поскольку несколько одинаковых имен имеют разное местоположение, а несколько разных имен - одно и то же.

Кто-топредложил мне нормализовать отношение, чтобы избежать этого дублирования значений.

Но, как вы можете видеть, атрибут no * Name или Location можно использовать в качестве первичного ключа; формируется только ключ-кандидат

Так как мне нормализовать таблицу?

Пожалуйста, объясните подробно.

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Если ваша таблица похожа на эту (угадывая типы данных)

create table your-table-name
  name varchar(10) not null,
  location varchar(10) not null,
  primary key (name, location)
);

, значит она уже в 5NF.

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

0 голосов
/ 11 июля 2011

Полагаю, тот, кто предлагал вам это, хотел для вас создать три таблицы:

tbl_name (name_id, name)
tbl_location (locaiton_id, location)
tbl_name_location (name_id, location_id)

и использовать tbl_name_location для связывания двух других.

Этот подход создаст некоторые«искусственные» идентификаторы, которые вы будете использовать только для связи одной таблицы с другой.До тех пор, пока вы сэкономите место для нескольких записей имен и местоположений, возникает вопрос: будет ли это полезно для вас?Трудно сказать, не зная, как вы будете использовать эту базу данных.Каждый запрос потребует некоторых объединений после нормализации, поэтому я полагаю, что бенчмаркинг и профилирование были бы лучшим способом определить, получили ли вы что-нибудь путем нормализации.

0 голосов
/ 11 июля 2011

таблица 1: NameID Имя

Таблица 2: LocationID Расположение

Таблица 3: NameToLocationID NameID LocationID

При проектировании системы управления реляционными базами данных (RDBMS) процесс организации данных для минимизации избыточности называется нормализацией. Цель нормализации базы данных - разложить отношения с аномалиями, чтобы получить меньшие, хорошо структурированные отношения. Нормализация обычно включает в себя разделение больших таблиц на более мелкие (и менее избыточные) таблицы и определение отношений между ними. Цель состоит в том, чтобы изолировать данные, чтобы в одну таблицу можно было добавлять, удалять и модифицировать поле, а затем распространять через остальную часть базы данных через определенные отношения.

Нормализация базы данных

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