Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Болталка (https://forum.antichat.xyz/forumdisplay.php?f=46)
-   -   БД access нужна помощь в понимании. (https://forum.antichat.xyz/showthread.php?t=111526)

n4e/\@ 17.03.2009 00:54

БД access нужна помощь в понимание.
 
Не знал куда запостить, решил в болталку.
Не могу разобраться с нормальными формами, вот в википедии есть пример Где там первичный ключ в последних двух таблицах?
Вот у меня есть таблица: Название фирмы | адрес | ф.и.о контактного лица | телефон | факс
Ключевое поле сейчас название фирмы т.к. оно не будет одинаковым.
Я так понимаю что бы привисти эту таблицу к 3НФ мне надо ее разбить на 4-ри таблице?
1. Название фирмы | адрес
2. Адрес | ф.и.о
3. ф.и.о | телефон
4. Телефон | факс
а что из этого должно быть ключевым полем? или я вобще не в ту сторону пошел?
Заранее благодарен.

cergew 17.03.2009 01:28

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

n4e/\@ 17.03.2009 01:37

Цитата:

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

А тогда таблице будут выглядить?
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

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


Время: 03:28