PDA

Просмотр полной версии : БД access нужна помощь в понимании.


n4e/\@
17.03.2009, 00:54
Не знал куда запостить, решил в болталку.
Не могу разобраться с нормальными формами, вот в википедии есть пример (http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%82%D1%8C%D1%8F_%D0%BD%D0%BE% D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D 1%84%D0%BE%D1%80%D0%BC%D0%B0) Где там первичный ключ в последних двух таблицах?
Вот у меня есть таблица: Название фирмы | адрес | ф.и.о контактного лица | телефон | факс
Ключевое поле сейчас название фирмы т.к. оно не будет одинаковым.
Я так понимаю что бы привисти эту таблицу к 3НФ мне надо ее разбить на 4-ри таблице?
1. Название фирмы | адрес
2. Адрес | ф.и.о
3. ф.и.о | телефон
4. Телефон | факс
а что из этого должно быть ключевым полем? или я вобще не в ту сторону пошел?
Заранее благодарен.

cergew
17.03.2009, 01:28
Вместо того, чтобы использовать уже имеющиеся поля в качестве ключевых, крайне желательно для каждого объекта БД создавать ключевое отдельное поле - код (обычно числовой и принимает значения порядкового номера записи)

n4e/\@
17.03.2009, 01:37
Вместо того, чтобы использовать уже имеющиеся поля в качестве ключевых, крайне желательно для каждого объекта БД создавать ключевое отдельное поле - код (обычно числовой и принимает значения порядкового номера записи)
А тогда таблице будут выглядить?
1. код (ключ) | Название фирмы
2. код (ключ) | адрес
3. код (ключ) | ф.и.о
4. код (ключ) | телефон
5. код (ключ) | факс
Но вроде тогда это уже не будет 3нф
Так то же вроде смысла не имеет:
1. код (ключ1) | Название фирмы
2. код (ключ2) | адрес
3. код (ключ3) | ф.и.о
4. код (ключ4) | телефон
5. код (ключ5) | факс

Connor
17.03.2009, 02:14
На пример, таблица называется "клиент", значит первичный ключ будет "код клиента".

n4e/\@
17.03.2009, 02:25
Это понятно, а что с чем связывать? Вот скриншот http://s60.radikal.ru/i168/0903/3e/7cff50e83ac4.jpg
Та таблица снизу это то что было(в краснйо рамке ФИО в новой таблице я обьеденил в один столбец) как в таблице сверху надо связь проложить? Везде от кода к коду? Просто в примере с википедии там идет связь
фамили-> отдел
отдел->телефон
Но не одно из этих полей не может быть ключевым, потому что име не уникально. А что делать в моем случаи?

Connor
17.03.2009, 02:52
Ого, ну ты и намутил там.
Что это вообще такое: "фирма:адрес", "фирма:ФИО", "фирма:название фирмы"?
У тебя все три таблицы содержат информацию о фирмах, так? Тогда сделай одну таблицу "фирмы" и создай поля "почтовый адрес", "ФИО", "название фирмы", и "код фирмы" как первичный ключ.
Таблицы связываются следующим образом, на пример таблица "клиент" там поля "код клиента" (который будет первичным ключем) и "название фирмы" (к которой он пренадлежит) и таблица "фирмы" там поля "имя фирмы" (которое будет п.к.) и "адрес фирмы", Тогда связать надо "название фирмы" из таблицы "клиент" с "имя фирмы" из таблицы "фирмы", потому как эти два поля имеют отношение друг к другу.