Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

отримання|здобуття| практичних навичок|навиків| проектування баз даних за допомогою нормальних форм.



 

Практична робота № 1.

Нормальні форми.

Мета роботи:

отримання|здобуття| практичних навичок|навиків| проектування баз даних за допомогою нормальних форм.

Постановка задачі.

Опис предметної області.

Фірма займається продажем деталей. Замовник звертається до службовця, який приймає замовлення. Після оплати замовлення виставляється рахунок-фактура.

Мінімальний набір атрибутів:

OrderNo

унікальний порядковий номер замовлення

CustomerNo

номер замовника (клієнта)

CustomerName

найменування фірми-замовника

CustomerAddress

адреса фірми-замовника (CustomerCity, CustomerState, CustomerZip)

OrderDate

дата замовлення

ItemsOrdered

замовлені товари

Total

сума замовлення

 

Підготовка до процесу нормалізації:

1. Вибір первинного ключа. Кожне замовлення має унікальний порядковий номер, тому використовуватимемо НОМЕР ЗАМОВЛЕННЯ (OrderNo) як стовпець первинного ключа.

2. До сутності ЗАМОВЛЕННЯ не висуваються вимоги, що стосуються впорядкування стовбців і рядків. Зручно розташовувати стовпець (стовпці) первинного ключа на 1-у місці.

 

Представимо дані, що містяться в замовленнях, у вигляді плоского файлу.

 

Номер заказа

 

Дата заказа

 

Номер заказчика

Название фирмы заказчика

Адрес фирмы

Товары

OrderNo

OrderDate

CustomerNo

CustomerName

Customer Address

ItemsOrdered

 

1/1/11

 

Компания1

Гор1, ул.1,д.1

1-NP01, Деталь1, $15, $75, 7;

4-NP02, Деталь2, $27, $108, 5;

4-NP03, Деталь2, $29, $116, 5, 63;

1-NP04, Деталь_3, $750, $750, 63

 

1/1/11

 

Компания2

Гор2, ул.2,д.2

1-NP05, Деталь_4, $62.50, $62.50, 5

 

1/1/11

 

Компания3

Гор3, ул.3,д.3

7-NP06; Деталь_5, $12, $84, 3;

1-NP07, Деталь_5, $15, $32, 3;

1-NP08, Деталь_6, $32, $32

 

1/2/11

 

Компания1

Гор1, ул.1,д.1

40- NP06, Деталь_5, $12, $480, 3;

1-NP09, Деталь_7, $165, $165, 1;

1-NP05, Деталь_8, $42, $42, 5

 

 


Процес нормалізації.

Перша нормальна форма (1NF)

Вимоги першої нормальна форми:

1. На перетині рядка і стовпця повинне знаходилося єдине значення.

2. В таблиці не повинно бути груп даних, що повторюються.

 

Для зручності почнемо аналіз з 2-го пункту.

Порушення 1NF пункт 2.

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

ЗАМОВНИКИ (Customer)

Номер заказчика

Название фирмы заказчика

Адрес фирмы

CustomerNo

CustomerName

Customer Address

 

Компания1

Гор1, ул.1,д.1

 

Компания2

Гор2, ул.2,д.2

 

Компания3

Гор3, ул.3,д.3

 

Порушення 1NF пункт1.

Стовпець ЗАМОВЛЕНІ ТОВАРИ (ItemsOrdered) містить дані, які по своєму характеру можуть бути розділені.



Номер заказа

(РК)

Дата

заказа

Номер заказчика

Номер партии деталей

Описание

Кол.

Qty

Цена за ед.

Unit Price

Общая цена

Total Price

Вес

Wt.

 

1/1/1999

 

NP01

Деталь_1

       
 

1/1/1999

 

NP02

Деталь_2

       
 

1/1/1999

 

NP03

Деталь_2

       
 

1/1/1999

 

NP04

Деталь_3

       
 

1/1/1999

 

NP05

Деталь_4

 

62.50

62 50

 
 

1/1/1999

 

NP06

Деталь_5

       
 

1/1/1999

 

NP07

Деталь_5

       
 

1/1/1999

 

NP08

Деталь_6

       
 

1/2/1999

 

NP06

Деталь_5

       
 

1/2/1999

 

NP09

Деталь_7

       
 

1/2/1999

 

NP05

Деталь_8

       

 

Первинний ключ більше не може служити унікальним ідентифікатором для рядків: його значення в деяких рядках повторюються. Введемо стовпець "Порядковий номер в замовленні".

ЗАМОВЛЕННЯ (Orders)

Номер заказа

(РК)

Порядковый номер в заказе

(PK)

Дата

заказа

Номер заказчика

Номер партии деталей

Описание

Кол.

Qty

Цена за ед.

Unit Price

Общая цена

Total Price

Вес

Wt.

   

1/1/1999

 

NP01

Деталь_1

       
   

1/1/1999

 

NP02

Деталь_2

       
   

1/1/1999

 

NP03

Деталь_2

       
   

1/1/1999

 

NP04

Деталь_3

       
   

1/1/1999

 

NP05

Деталь_4

 

62.50

62.50

 
   

1/1/1999

 

NP06

Деталь_5

       
   

1/1/1999

 

NP07

Деталь_5

       
   

1/1/1999

 

NP08

Деталь_6

       
   

1/2/1999

 

NP06

Деталь_5

       
   

1/2/1999

 

NP09

Деталь_7

       
   

1/2/1999

 

NP05

Деталь_8

       

 

Друга нормальна форма (2NF)

1. Таблиця повинна відповідати 1NF.

2. Кожен стовпець повинен залежати від усього первинного ключа.

Порушення 2NF.

Значення в стовпцях ДАТА_ЗАМОВЛЕННЯ (OrderDate) і НОМЕР_ЗАМОВНИКА (CustomerNo) залежать тільки від частини первинного ключа – стовпця НОМЕР_ЗАМОВЛЕННЯ, а не від стовпця ПОРЯДКОВИЙ_НОМЕР_В_ЗАМОВЛЕННІ (Line Item).

Для усунення проблеми зробимо декомпозицію.

ЗАМОВЛЕННЯ_РОЗШИФРОВКА (OrderDetails).

Номер заказа

(РК)

Порядковый номер в заказе

(PK)

Номер партии деталей

Описание

Кол.

Qty

Цена за ед.

Unit Price

Общая цена

Total Price

Вес

Wt.

   

NP01

Деталь_1

       
   

NP02

Деталь_2

       
   

NP03

Деталь_2

       
   

NP04

Деталь_3

       
   

NP05

Деталь_4

 

62.50

62 50

 
   

NP06

Деталь_5

       
   

NP07

Деталь_5

       
   

NP08

Деталь_6

       
   

NP06

Деталь_5

       
   

NP09

Деталь_7

       
   

NP05

Деталь_8

       

 

 

ЗАМОВЛЕННЯ

Номер заказа

Дата заказа

Номер заказчика

OrderNo

OrderDate

CustomerNo

 

1/1/11

 
 

1/1/11

 
 

1/1/11

 
 

1/2/11

 

 

Висновки.

Умови 2НФ - виконані: усі стовпці залежать від усього первинного ключа.

Третя нормальна форма (3NF)

1. Таблиця повинна відповідати вимогам 2NF.

2. Жоден неключовий стовпець не повинен залежати от іншого неключового стовпця.

3. Наявність в таблиці даних, які можна отримати на підставі інших стовпців не допускається.

Порушення 2 пункту вимог 3NF.

У таблиці ЗАМОВЛЕННЯ_РОЗШИФРОВКА (OrderDetails) від стовпця PartNo повністю залежать стовпці Weight (Вес) і Description (Опис), тому необхідно знову виконати розбиття однієї таблиці дві.

ТОВАРИ

Номер партии деталей

Описание

Вес

NP01

Деталь_1

 

NP02

Деталь_2

 

NP03

Деталь_2

 

NP04

Деталь_3

 

NP05

Деталь_4

 

NP06

Деталь_5

 

NP07

Деталь_5

 

NP08

Деталь_6

 

NP06

Деталь_5

 

NP09

Деталь_7

 

NP05

Деталь_8

 

 

Стовпець ЦІНА_ОДИНИЦІ (UnitPrice) залишається в таблиці ЗАМОВЛЕННЯ_РОЗШИФРОВКА т.я.:

1. Ціна товару в момент продажу може зміниться оскільки можуть бути запропоновані знижки.

2. Ціна товару може змінюватися з часом під дією таких чинників, як інфляція. Але майбутні зміни цін не повинні впливати на те, які ціни були вказані в замовлення у минулому.

Стовпець НОМЕР_ПАРТІЇ (PartNo) в т. ЗАМОВЛЕННЯ_РОЗШИФРОВКА залишаємо для зв'язку двох таблиць. Такий ключ в таблиці ЗАМОВЛЕННЯ_РОЗШИФРОВКА називається зовнішнім.

 

ЗАМОВЛЕННЯ_РОЗШИФРОВКА.

Номер заказа

(РК)

Порядковый номер в заказе

(PK)

Номер партии деталей

Кол.

Qty

Цена за ед.

Unit Price

Общая цена

Total Price

   

NP01

     
   

NP02

     
   

NP03

     
   

NP04

     
   

NP05

 

62.50

62.50

   

NP06

     
   

NP07

     
   

NP08

     
   

NP06

     
   

NP09

     
   

NP05

     

Порушення 3NF пункт 3.

Стовпець ЗАГАЛЬНА_ЦІНА (TotalPrice) можна обчислити за допомогою стовпців ЦІНА ЗА ОД. (Unit Price) і КІЛЬКІСТЬ (Qty).

Вихід із ситуації – видалення стовпця.

 

 


Дата добавления: 2015-09-30; просмотров: 33 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
1-бап. Банк, оның мәртебесi және тұрған жерi 18 страница | 

mybiblioteka.su - 2015-2024 год. (0.038 сек.)