2016-03-03 3 views
1

Я изо всех сил пытаюсь выяснить, как найти оба преобразования к этой проблеме. Я пытаюсь изучить нормализацию базы данных/нормализацию базы данных, прежде чем перейти к созданию моей первой базы данных.Преобразование в 2NF, затем 3NF, показывающее оба преобразования

Например: Я пытаюсь преобразовать следующее в 2NF, а затем 3NF, показывающее оба преобразования. Я застрял в части «обоих конверсий».

(б, м, I, O, д, J, L, S, E, C, N, H, A, F, K, P, г, д)

ФД в: б → фм → кб →
й м → лй → д.в. → C
п, ч → пл → аль → K
г → перейти → S

заранее спасибо!

+0

Нормализация до 3NF не должна выполняться через 2NF, это может помешать вам получить лучшие конструкции 3NF. – philipxy

+0

Итак, каков ваш справочный материал и что он делает, чтобы сделать сначала? – philipxy

ответ

2

Если вы проходите курс, сначала следуйте плану своего учителя, прежде чем принимать советы от других. Но если вы учитесь самостоятельно, вот несколько советов.

Одна вещь для реализации заключается в том, что нормализация - это подход снизу вверх, а не подход сверху вниз. В тех случаях, когда это наиболее полезно, когда вам дается совокупность данных, которые уже определены, и вы хотите знать, насколько это нормализовано. В первые дни реляционных баз данных было много систем, которые были перерезаны из бумажных ручных систем или из файловых и записывающих систем или из предварительных СУБД. Нормализация может помочь вам лучше понять эти данные и дать вам реальную информацию о том, почему существующая система работает не очень хорошо.

Но если вам нужен подход сверху вниз, я предлагаю совершенно другой план. Узнайте, как к ER-моделированию самого предмета. Не пытайтесь создавать базу данных с помощью модели ER. Это не его сила. Вместо этого попытайтесь понять, как эксперты по предметам понимают свои данные. Моделирование ER простое, но оно абстрактно. Трудная часть моделирования ER заключается в том, что каждый атрибут действительно описывает объект или отношения, к которым вы его привязываете. Это очень легко сделать неправильно.

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

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

Чем больше вы это сделаете, тем лучше вы получите.

+0

Можете ли вы быть настолько уверены, что модель ER, преобразованная «механически» в таблицы, приведет к созданию базы данных, которая удовлетворяет требованиям 3NF? Это должно зависеть от того, насколько хорошо ваш процесс анализа идентифицировал функциональные зависимости и захватил их в вашей ER-модели. Практика моделирования ER имеет * нет * стандартный способ представления FD вообще, и в моем опыте относительно необычно даже видеть модели ER, которые определяют альтернативные ключи. Это всего лишь две причины, по которым я не буду полагаться на моделирование ER, чтобы создать нормализованный дизайн базы данных. – sqlvogel

+0

Я действительно говорил «большую часть времени». Это эмпирическое правило, а не формальная надежная методология. Однако, если идентификаторы для избранных объектов выбраны хорошо, все остальные атрибуты будут зависеть от идентификатора, всего идентификатора и ничего, кроме идентификатора, большую часть времени. Попробуйте несколько раз, и посмотрите, как хорошо это работает. Вы можете цирсизировать мою рекомендацию новичку, чтобы полагаться на эвристику, но я стараюсь, чтобы все было просто. –

+0

Кстати, вы имеете право указать, что FD не являются частью модели ER. Вот почему я думаю, что люди, которые приходят и спрашивают, нормализуется ли их ERD, может потребоваться уточнить в своих собственных главах, будут ли они проводить ER-моделирование или реляционное моделирование. –

1

Согласно вашей ФЗ и отношения, ваш ключ кандидат будет: {} bmiodjnhr

Следовательно,

Prime Attrbutes (9) ={b,m,i,o,d,j,n,h,r} 

    Non-Prime Attrbutes (9) = { l, s, e, c, a, f, k, p, g} 





        Now Checking for 2NF: 

"Частичные Зависимости не допускаются". Значит, часть ключа кандидата не должна определять атрибут не Prime.

Здесь Частичные Зависимости:

B → F м → K B → е м → л M → A я → C п, ч → р г → г о → S

   Hence Partial Dependencies exist, Relation is not in 2NF. 

        *How to resolve Partial Dependencies* 

Разложить ваше отношение так:

R1 = {} BFE

R2 = {mkla}

R3 = {IC}

R 4 = {NHP}

R 5 = {гк}

R6 = {ос}

R7 = {bmiodjnr}

    Now Checking for 3NF: 

"Tra Учитывать регистр Зависимости не допускается в 3NF»

средства, базы данных находится в 3НФЕ, если и только если он следовать какой-либо один или оба правила ниже:

Правила 1: Для каждого данного ФЗ, левостороннего (LHS) FD должен быть Superkey для любой таблицы в базе данных.

ИЛИ

Правило 2: для каждого данного ФЗ, правая сторона (RHS) ФД должен быть премьер Атрибут для муравьиной Relation/табл.

Здесь Транзитивная зависимость: L → A, L → K

Следовательно, существует Транзитивная зависимость, связь не находится в 3NF.

   *How to resolve Transitive Dependencies* 

Разложить таблицу, как это:

R1 = {ОФЭ}

R2 = {мл}

R3 = {Lak}

R 4 = {IC}

R5 = {nhp}

R6 = {гк}

R 7 = {ос}

R 8 = {} bmiodjnr

      **Now this is in 3NF.** 

Надежда это помогает. Это ответ на ваш вопрос.Если вы хотите точно узнать, как проверить, является ли отношение в 2NF или 3NF или BCNF, или как найти ключ-кандидат или как разложить таблицу, обратитесь к разделу «Нормализация» моих заметок. Вот ссылка: DataBase Normalization