Форум "DataBase и SQL"
Язык запросов баз даных
Пример пятой нормальной формы или лекцииЖизненно необходим пример пятой нормальной формы, но не только с числами, а чтобы там существительные какие-нибудь были тоже, или же лекции по Базам Данных или методики какого-нибудь университета (на русском языке). заранее спасибо.
|
|
Пятая нормальная форма - это миф, теория, ей нет места в жизни. И никто ее не внедрил в свои проекты. По крайней мере я таких не знаю |
|
#2 Andrey © 23.12.03 10:17:44
Кстати хотелось бы ссылку на описание любой нормальной формы БД. Так, для общего развития :) |
|
> ссылку на описание любой нормальной формы ццц.одидаз.ком |
|
#4 Andrey © 23.12.03 10:33:54
>Е-Моё имя И на том спасибо :) |
|
#5 kelep © 01.05.05 17:51:24
Я знаю только первцую и вторую нормальные формы. Даже не знал, что есть ещё... >#4 Andrey © Это из теории реляционных БД. Но прошло полтора года, ты уже Аввторитет, наверное, сам знаешь |
|
> #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-ой НФ. |
|
из всего это сырбора можно сделать вывод: привидение к нормальным формам в таблицах способствует искоренению избыточности(дублирования) данных в них. Однако, "слишком нормализованные" таблицы дают проиграш в быстродействии(приходится делать слишком много объединений) а порою и удобстве хранения/понимания данных. Так что обычно приходится пользоваться "золотой серединой". |
|
#10 Riddle © 04.05.05 12:56:39
Вообще, что считается в одной таблице избыточными данными, в другой уже не считается. Например, относится ли такое отношение к 1 НФ: таблица, состоящая из двух столбцов - имя и дата рождения в виде число, месяц, год. Скажете - нет, потому что значение не атомарно, т.е. дата рождения -оставное значение. Необходимо разделить дату рождения на отдельные столбцы: день, месяц, год. Тогда и будет таблица в 1 НФ. НО если же дата рождения в данном случае будет использоваться только в таком, составном виде, то она уже и так находится в 1 НФ. |
|
> Скажете - нет, потому что значение не атомарно, т.е. дата > рождения -оставное значение. атомарно или неатомарно -- зависит от того с какими атомами мы будем работать в программе. Если я буду работать только с составной датой -- то она будет атомарной. Если же мне отдельно придется обрабатывать месяц или год - то атомарной буде не составная, а разбитая дата. |
|
#12 ZeroDivide © 04.05.05 14:34:42
Я выступаю за полную нормализацию и не вижу ни каких минусов в ней. 1. Однако, "слишком нормализованные" таблицы дают проиграш в быстродействии. Это зависит от СУБД, но в общем, проигрыш не такой уж большой, чтобы о нем можно было говорить как о серьезном минусе. 2. Приходится делать слишком много объединений Честно говоря меня не ломает написать 3-5 объединений. Но уж если их действительно слишком много (10-15), то можно сделать вьюшку и проблема исчезнет. 3. Проигрыш в удобстве хранения/понимания данных. Вообще говоря, СОВЕРШЕННО не так, наоборот: чем более разделены сущности, тем легче понять какие данные к каким сущностям относятся. |
|
> #12 ZeroDivide © > Я выступаю за полную нормализацию хорошо, тогда можешь ли подробнее написать в чем будет реальный выиграш между базой в 3НФ и 5НФ ? хм... да, вьюшки многое решают в сложных объеденениях. Но я их не сильно люблю, за то что их частенько потом приходится перекомпилировать при изменениях в базах. и еще... может стоит сделать html-тест на нормализацию базы, в итоге которого выдается правильное описание каждой нормализации и укажется чего именно мы достигли в результате каждого шага нормализации. Как смотришь? Если будет желание - делай описание, я реализую на сайте. С твоим копирайтом. |
|
#14 ZeroDivide © 05.05.05 09:01:24
хорошо, тогда можешь ли подробнее написать в чем будет реальный выиграш между базой в 3НФ и 5НФ ? Ну да... я не уточнил, я за полную нормализацию, вплодь до 3НФ. Т.е. когда я разрабатываю БД, я ее делаю всегда в строгом соответствии с 3НФ. 4НФ оставляется на рассмотрение в каждом конкретном случае, так как не всегда выделение подмножеств данных (уже нормализованых до 3НФ, разумеется) является нужным в конкретной сущности (для практического применения), а 5 НФ совершенно безполезна (даже в ее теории я не вижу какого-либо разумного смысла) и действительно только начинает прибавлять трудностей. может стоит сделать html-тест на нормализацию базы, в итоге которого выдается правильное описание каждой нормализации и укажется чего именно мы достигли в результате каждого шага нормализации. Как смотришь? Если будет желание - делай описание, я реализую на сайте. С твоим копирайтом. Не совсем понял, что ты имеешь в виду. Правильное описание нормализаций уже дано их автором (Воусе-Codd), а насчет того, что жы мы достигаем, то, на любом шаге нормализации это одно: устранение избыточности данных и разграничение функциональной зависимости. |
|
> я не уточнил, я за полную нормализацию, вплодь до 3НФ. тогда наши взгляды совпадают > Не совсем понял, что ты имеешь в виду. Правильное описание > нормализаций уже дано их автором (Воусе-Codd), угу, просто подумалось может стоит сделать тестовое задание для всех желающих, которые хотят попробовать свои силы в нормализации баз. |
|
> угу, просто подумалось может стоит сделать тестовое задание > для всех желающих, которые хотят попробовать свои силы в > нормализации баз. Могу предложить такое задание ;) Впрочем уже подумывал о том, чтобы это таки сделать, да и Паша тоже об этом говорил. Догадайся, какое ;) deep: давай в аську, чтоб не оффтопить ;) |
|
Предварительные эксперементы уже показали ускорение более чем в два раза для нормализованной структуры. Это при том, что запросы не оптимизировались пока, на скорую руку, лишь бы работало. З.Ы. А почему оффтоп? |
|
#18 Скальд 28.05.06 12:25:58
> Существует отношение НИР(Номер_НИР, Сотр, Задание_НИР)(расшифровывается > - научно-исследовательские работы), которое можно разделить > на два отношения: НИР-СОТРУДНИКИ(Номер_НИР, Сотр) и НИР-ЗАДАНИЯ(Номер_НИР, > Задан_НИР). При соединении оба этих отношений получается > исходное отношение, значит, данное отношение НИР находится > в 5-ой НФ. На мой взгляд, пример 5НФ, не совсем правильный... Вроде как, надо еще сделать отношение (Сотр,Задание_НИР) |
Написать ответ |
|
