Главная Новые темы Список тем Задать вопрос Поиск  

Форум "DataBase и SQL"


Язык запросов баз даных


 #0  Галенфеа © 23.12.03 10:13:12 - 28.05.06 12:25:58

Пример пятой нормальной формы или лекции



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

заранее спасибо. Цитата

 #1 Kortez © 23.12.03 10:16:03

Пятая нормальная форма - это миф, теория, ей нет места в жизни. И никто ее не внедрил в свои проекты. По крайней мере я таких не знаю  
 #2 Andrey © 23.12.03 10:17:44

Кстати хотелось бы ссылку на описание любой нормальной формы БД. Так, для общего развития :)
 #3 Е-Моё имя © 23.12.03 10:22:04

> ссылку на описание любой нормальной формы
ццц.одидаз.ком  
 #4 Andrey © 23.12.03 10:33:54

>Е-Моё имя
И на том спасибо :)
 #5 kelep © 01.05.05 17:51:24

Я знаю только первцую и вторую нормальные формы. Даже не знал, что есть ещё...

>#4 Andrey ©

Это из теории реляционных БД. Но прошло полтора года, ты уже Аввторитет, наверное, сам знаешь  
 #6 deep © 04.05.05 10:17:30

>  #5 kelep ©
чаще всего проектирование базы сводят к 3-ей нормальной форме, так что советуюю еще почитать на эту тему.    
 #7 kelep © 04.05.05 10:33:27

Спасибо, я так и понял  
 #8 Riddle © 04.05.05 11:32:56

Отношение находится в 5-ой НФ, если оно не содержит зависимостей соединения. Если в процессе естественного соединения декомпозированных отношений (разделенных на два)в сравнении с первоначальным отношением генерируются ложные кортежи (кортеж отображает один экземпляр объекта, проще говоря строка), то такая декомпозиция характеризуется зависимостью соединения. Зависимость соединения является обобщением как многозначной зависимости, так и функциональной зависимости. Функциональная зависимость имеет место в таком случае: атрибут а2 функционально зависит от атрибута а1, если каждому значению а1 соответствует единственное значение а2, т.е. каждый кортеж, имеющий одно и то же значение а1, должен иметь одно и то же значение а2). Многозначная зависимость - это условие, обеспечивающее независимость атрибутов путем обязательного повторения значений. Примером данной зависимости является такая ситуация: в университете преподаватель факультета отвечает за преподавание нескольких предметов, или отдел некоторой фирмы выполняет несколько проектов. Т.е. многозначность присутствует в тех отношениях, где моделируются связи типа 1:М. В отношении R (X,Y,...,Z) отсутствует зависимость соединения *(X,Y,...,Z)в том и только в том случае, когда R восстанавливается без потерь путем соединения своих проекций на X,Y,...,Z. Ну и само собой разумеется, что отношение должно быть уже в 4-ой НФ.
Содрано мной из следующей книги: Малыхина М.П. Базы данных: основы, проектирование, использование. - СПб.: БХВ-Петербург, 2004.-512 с.: ил. К сожалению, примера автор не привел.
Попытаюсь сделать это сама (правильность гарантировать не могу):
Существует отношение НИР(Номер_НИР, Сотр, Задание_НИР)(расшифровывается - научно-исследовательские работы), которое можно разделить на два отношения: НИР-СОТРУДНИКИ(Номер_НИР, Сотр) и НИР-ЗАДАНИЯ(Номер_НИР, Задан_НИР). При соединении оба этих отношений получается исходное отношение, значит, данное отношение НИР находится в 5-ой НФ.
 #9 deep © 04.05.05 12:26:27

из всего это сырбора можно сделать вывод: привидение к нормальным формам в таблицах способствует искоренению избыточности(дублирования) данных в них. Однако, "слишком нормализованные" таблицы дают проиграш в быстродействии(приходится делать слишком много объединений) а порою и удобстве хранения/понимания данных. Так что обычно приходится пользоваться "золотой серединой".  
 #10 Riddle © 04.05.05 12:56:39

Вообще, что считается в одной таблице избыточными данными, в другой уже не считается. Например, относится ли такое отношение к 1 НФ: таблица, состоящая из двух столбцов - имя и дата рождения в виде число, месяц, год. Скажете - нет, потому что значение не атомарно, т.е. дата рождения -оставное значение. Необходимо разделить дату рождения на отдельные столбцы: день, месяц, год. Тогда и будет таблица в 1 НФ. НО если же дата рождения в данном случае будет использоваться только в таком, составном виде, то она уже и так находится в 1 НФ.    
 #11 deep © 04.05.05 13:35:56

> Скажете - нет, потому что значение не атомарно, т.е. дата
> рождения -оставное значение.

атомарно или неатомарно -- зависит от того с какими атомами  мы будем работать в программе. Если я буду работать только с составной датой -- то она будет атомарной. Если  же мне отдельно придется обрабатывать месяц или год - то атомарной буде не составная, а разбитая дата.
 #12 ZeroDivide © 04.05.05 14:34:42

Я выступаю за полную нормализацию и не вижу ни каких минусов в ней.


1. Однако, "слишком нормализованные" таблицы дают проиграш в быстродействии.

Это зависит от СУБД, но в общем, проигрыш не такой уж большой, чтобы о нем можно было говорить как о серьезном минусе.


2. Приходится делать слишком много объединений

Честно говоря меня не ломает написать 3-5 объединений. Но уж если их действительно слишком много (10-15), то можно сделать вьюшку и проблема исчезнет.


3. Проигрыш в удобстве хранения/понимания данных.

Вообще говоря, СОВЕРШЕННО не так, наоборот: чем более разделены сущности, тем легче понять какие данные к каким сущностям относятся.
 #13 deep © 04.05.05 17:28:37

>  #12 ZeroDivide ©
> Я выступаю за полную нормализацию

хорошо, тогда можешь ли подробнее написать в чем будет реальный выиграш между базой в 3НФ и 5НФ ?

хм... да, вьюшки многое решают в сложных объеденениях. Но я их не сильно люблю, за то что их частенько потом приходится перекомпилировать при изменениях в базах. На личной почве как говорится   Кроме того, сами вьюшки имеют некоторые ограничения.

и еще... может стоит сделать html-тест на нормализацию базы,  в итоге которого выдается правильное описание каждой нормализации и укажется чего именно мы достигли в результате каждого шага нормализации. Как смотришь? Если будет желание - делай описание, я реализую на сайте. С твоим копирайтом.
 #14 ZeroDivide © 05.05.05 09:01:24


хорошо, тогда можешь ли подробнее написать в чем будет реальный выиграш между базой в 3НФ и 5НФ ?


Ну да... я не уточнил, я за полную нормализацию, вплодь до 3НФ. Т.е. когда я разрабатываю БД, я ее делаю всегда в строгом соответствии с 3НФ. 4НФ оставляется на рассмотрение в каждом конкретном случае, так как не всегда выделение подмножеств данных (уже нормализованых до 3НФ, разумеется) является нужным в конкретной сущности (для практического применения), а 5 НФ совершенно безполезна (даже в ее теории я не вижу какого-либо разумного смысла) и действительно только начинает прибавлять трудностей.


может стоит сделать html-тест на нормализацию базы,  в итоге которого выдается правильное описание каждой нормализации и укажется чего именно мы достигли в результате каждого шага нормализации. Как смотришь? Если будет желание - делай описание, я реализую на сайте. С твоим копирайтом.


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

 #15 deep © 05.05.05 09:59:21

> я не уточнил, я за полную нормализацию, вплодь до 3НФ.
тогда наши взгляды совпадают  

> Не совсем понял, что ты имеешь в виду. Правильное описание
> нормализаций уже дано их автором (Воусе-Codd),

угу, просто подумалось может стоит сделать тестовое задание для всех желающих, которые хотят попробовать свои силы в нормализации баз.
 #16 VictorT © 05.05.05 11:29:45

> угу, просто подумалось может стоит сделать тестовое задание
> для всех желающих, которые хотят попробовать свои силы в
> нормализации баз.

Могу предложить такое задание ;) Впрочем уже подумывал о том, чтобы это таки сделать, да и Паша тоже об этом говорил. Догадайся, какое ;)
deep: давай в аську, чтоб не оффтопить ;)
 #17 VictorT © 11.06.05 20:04:54

Предварительные эксперементы уже показали ускорение более чем в два раза для нормализованной структуры.
Это при том, что запросы не оптимизировались пока, на скорую руку, лишь бы работало.
З.Ы. А почему оффтоп?
 #18 Скальд 28.05.06 12:25:58

> Существует отношение НИР(Номер_НИР, Сотр, Задание_НИР)(расшифровывается
> - научно-исследовательские работы), которое можно разделить
> на два отношения: НИР-СОТРУДНИКИ(Номер_НИР, Сотр) и НИР-ЗАДАНИЯ(Номер_НИР,
> Задан_НИР). При соединении оба этих отношений получается
> исходное отношение, значит, данное отношение НИР находится
> в 5-ой НФ.

На мой взгляд, пример 5НФ, не совсем правильный... Вроде как, надо еще сделать отношение (Сотр,Задание_НИР)




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов