Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
Аврам   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
15-1238141425
Rikk
2009-03-27 11:10
2009.05.31
Java&Html


2-1239879647
NieL
2009-04-16 15:00
2009.05.31
TStrings -> метод GetDelimitedText свойства DelimitedText


2-1240130471
Inko
2009-04-19 12:41
2009.05.31
Вопрос по StringGrid


2-1239991640
Индеец
2009-04-17 22:07
2009.05.31
Родитель и потомок сообща


10-1158130464
GrBob
2006-09-13 10:54
2009.05.31
ITypeInfo и имя интерфейса-предка.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский