Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формы нормализации 
:(
    Опции темы
Alexey91
  Дата 27.7.2013, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Здравствуйте!

Читаю книжку "Beginning Mysql"  (Sheldon, Moes) (Third Normal Form page 111-116).  В ней приводится примеры по нормализации. 

Если вам трудно ответить, то я буду очень благодарен, если вы дадите источник (русский, английский не важно), в котором про нормализацию подробно описано. В дополнение я посмотрел википедию. Я не понимаю 3-ей нормальной формы, которая заключается в том, что все неключевые атрибуты зависят только от ключевых. И никаких других зависимостей быть не должно.  

Приводится объяснение на примере сотрудников:

Сотрудник    Отдел                Телефон 
Иванов         Бухгалтерия       11-22-33
Петров         Бухгалтерия      11-22-33
Ларин          Снабжение        44-55-33

Фамилия выбрана первичным ключем. Это похоже предусловие для таблицы, что не должно быть одинаковых фамилий.

Здесь мы видим, что существует ФЗ между бухгалтерией и телефоном. Зная, что название отдела – «Бухгалтерия», всегда можно сопоставить номер телефона - 11-22-33. То есть существует зависимость Отдел --> Телефон

Но что значит, что все атрибуты зависят от ключевых?. Они вместе зависят? То есть (Отдел, Телефон) сопоставляется одному значению Сотрудник.
Или каждый по отдельности? Отдел сопоставляется Сотрудник, Телефон сопоставляется Сотрудник ... ?

Также не ясно про транзитивную зависимость. На множествах понятно: X->Z, X->Y, Y->Z
Но где в этой таблице транзитивная зависимость?

И из определения ФЗ (определение) выходит противоречие, поскольку, если считать, что отдел зависит от сотрудника. То тогда два отдела с одним именем «Бухгалтерия» сопоставляются двум разным сотрудникам (Иванов, Петров). А они должны сопоставляться одному, чтобы не нарушать определение.

Похоже я запутался.


PM   Вверх
Gromdron
Дата 27.7.2013, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.9.2006

Репутация: нет
Всего: 1



Книгу не читал, но чисто мое предположение - состоит из 3 таблиц:

FID | Фамилия
OID | Отдел
PID | Телефон



Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Alexey91
Дата 28.7.2013, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Gromdron

Они пишут, что существуют зависимость от ключа.

Существует определение функциональной зависимости: элемент из множества А является функционально зависимым от элемента из множества B, если элементу А сопоставляется только одно значения из множества B.

Тогда колонка Отдел зависит от первичного ключа (Сотрудник). То есть одному значению из Отдел можно сопоставить ровно одно значение из Сотрудник. Но возьмите название отдела "Бухгалтерия". Этот отдел встречается в двух строках, а следовательно сопоставляется двум значениям первичного ключа. Несоответствие. Я не понимаю  smile 
PM   Вверх
Gromdron
Дата 28.7.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.9.2006

Репутация: нет
Всего: 1



Вы неправильно поняли.

Почитайте:
http://alexvolkov.ru/database-normalizatio...ormal-form.html
http://www.libma.ru/kompyutery_i_internet/..._lekcii/p10.php


Если хотите понять: у вас дана исходная таблица, а не приведенная к 3НФ.

Если ее привести к 3НФ получиться 2 таблицы:

Отдел|Наименование отдела|Телефон
1|Бухгалтерия|11-22-33
2|Снабжение|44-55-66

Фамилия|Отдел
Гришин|1
Васильев|1
Петров|2

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Alexey91
Дата 29.7.2013, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Нет, там даже не в этом дело, похоже авторы статьи в русской википедии просто не до конца объяснили.
Я неправильно понял определение функциональной зависимости.

http://en.wikipedia.org/wiki/Database_normalization -- здесь все подробно изложено

Background to normalization: definitions
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.