Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.31;
Скачать: CL | DM;

Вниз

связь между таблицами и записями   Найти похожие ветки 

 
Аврам   (2008-09-14 20:50) [0]

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


 
stas ©   (2008-09-14 22:14) [1]

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


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

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


 
KilkennyCat ©   (2008-09-15 03:06) [3]

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


 
ЮЮ ©   (2008-09-15 04:59) [4]

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


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


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


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


 
melehov ©   (2008-09-16 12:52) [5]

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


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


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

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


 
Sergey13 ©   (2008-09-16 13:09) [7]

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

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


 
MsGuns ©   (2008-09-16 14:44) [8]

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

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

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


 
Vlad Oshin ©   (2008-09-16 14:54) [9]


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

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


 
MsGuns ©   (2008-09-16 15:01) [10]

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2009.05.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1240229032
Zalum
2009-04-20 16:03
2009.05.31
Процедура из другого приложения


2-1239648222
CodeMaster
2009-04-13 22:43
2009.05.31
System Class STATIC


2-1239705942
andrew727
2009-04-14 14:45
2009.05.31
Экспорт данных из таблицы БД Access в массив


2-1237214993
Alex354
2009-03-16 17:49
2009.05.31
Печатать изображение без учёта границ непечатаемых полей


2-1240150745
programmer90
2009-04-19 18:19
2009.05.31
Delphi и командная строка