Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

связь между таблицами и записями


Аврам ©   (2008-09-14 20:50:00) 

база на mysql,есть таблица в которой храняться все сотрудники table1, сейчас добавили еще одну таблицу table2, в которой должна храниться дополнительная инфа о сотруднике(что мешало просто добавить поля в уже имеющуюся таблицу table1 для меня остается загадкой). Вопрос такой: как лучше сделать привязку сотрудника из table1 с его же доп.инфой из table2. Первое что пришло в голову это добавить поле в table1 с id table2, при добавлении новой записи будет сохраняться инфа как раньше + будет сохряняться инфа в table2 сразу же браться id и записываться в table1. Посоветуйте как лучше!
Заранее Благодарен.


Аврам   (2008-09-16 19:29:00) [1]

спасибо за ответы.
решил сделать так: в одной таблице есть поле в которой хранится id записи из другой таблицы


MsGuns   (2008-09-16 15:01:00) [2]

>Vlad Oshin ©   (16.09.08 14:54) [9]
>а что мешает запрос делать не для всех полей сразу,

Да ничего, но таким образом из троих зайцев один останется целым ;)


Vlad Oshin   (2008-09-16 14:54:00) [3]


> 2) дополнительная информация весьма обширна по содержанию

не понял, Сергей..
а что мешает запрос делать не для всех полей сразу,


MsGuns   (2008-09-16 14:44:00) [4]

Отдельную таблицу для "дополнительной" информации об объектах БД вводят в двух случаях (в основном):

1) дополнительные сведения об одном основном объекте носят множественных характер. Например в Вашем случае это может быть информация о приеме, увольнении и внутренних перемещениях сотрудника, Или данные о его отпусках. Или сведения о заработной плате и т.д. Т.е. требуется реализовать связь "один-ко многим"

2) дополнительная информация весьма обширна по содержанию, включает в себя множество больших полей, в т.ч. графики и добавление ее в основную может резко увеличить ее размеры и соотвественно привести к "тормозам" клиентских приложений или/и сервера, а также посадить сеть. В этом случае связь "один-к-одному", но основная информация (список объектов с основными характеристиками - в вашем случае ФИО, подразделение, должность, оклад, дата рождения и т.д.) относительно небольшого размера и не "тормозит". Дополнительная же извлекается одиночными записями по требованию (типа "Детально" в меню), не обременительными ни для сервера, ни для сети, ни для "клиента"


Sergey13   (2008-09-16 13:09:00) [5]

> [5] melehov ©   (16.09.08 12:52)
> если они что-либо купят?

При этом появляется новый ДОКУМЕНТ (сделка) которая помимо собственных атрибутов (дата например) ссылается на Ассортимент (что купили) и Клиенты (кто купил).


Правильный$Вася   (2008-09-16 13:01:00) [6]


> melehov ©   (16.09.08 12:52) [5]

кросс-таблица
читать буквать про нормализацию структур данных


melehov   (2008-09-16 12:52:00) [7]

А как связать табл.Клиенты с табл.Ассортимент (мой, несколько тысяч наимен.) если они что-либо купят?


ЮЮ   (2008-09-15 04:59:00) [8]

> (что мешало просто добавить поля в уже имеющуюся таблицу
> table1 для меня остается загадкой).


При отсутствии какой-либо информации о структуре - это загадка и для остальных.


> Первое что пришло в голову это добавить поле в table1 с
> id table2,


table1 уже лучше не трогать. Или уж наконец переименовать в Persons :)
тем более, что связь может быть не 1:1, а 1:N.


KilkennyCat   (2008-09-15 03:06:00) [9]

перенсти одно из полей табл1 в табл2. освободившееся поле используем для ссылок на табл 2. курим. И тогда прочий гемморой у тех, кто разрабытывал ДО.


Германн   (2008-09-15 01:44:00) [10]

У каждой записи в table1 должно быть уникальное поле. Id_"что-то". Все дополнительные таблицы с дополнительной информацией должны иметь поле содержащее значение поля Id_"что-то" из table1. Всё прочее - геморрой.


stas   (2008-09-14 22:14:00) [11]

Это связь "один к одному", обычно используется для экономии памяти
если добавить в таблицу table1 эти поля, то место под доп. инфу организаций у которых эти поля незполнены все равно выделяется, а при таком варианте нет, хотя добавляется другой геморой.
id table1 хранить в table2.


Наверх

Титульная страница Поиск, карта сайта Написать письмо