Конференция "Базы" » связь между таблицами и записями
 
  • Аврам (14.09.08 20:50) [0]
    база на mysql,есть таблица в которой храняться все сотрудники table1, сейчас добавили еще одну таблицу table2, в которой должна храниться дополнительная инфа о сотруднике(что мешало просто добавить поля в уже имеющуюся таблицу table1 для меня остается загадкой). Вопрос такой: как лучше сделать привязку сотрудника из table1 с его же доп.инфой из table2. Первое что пришло в голову это добавить поле в table1 с id table2, при добавлении новой записи будет сохраняться инфа как раньше + будет сохряняться инфа в table2 сразу же браться id и записываться в table1. Посоветуйте как лучше!
    Заранее Благодарен.
  • stas © (14.09.08 22:14) [1]
    Это связь "один к одному", обычно используется для экономии памяти
    если добавить в таблицу table1 эти поля, то место под доп. инфу организаций у которых эти поля незполнены все равно выделяется, а при таком варианте нет, хотя добавляется другой геморой.
    id table1 хранить в table2.
  • Германн © (15.09.08 01:44) [2]
    У каждой записи в table1 должно быть уникальное поле. Id_"что-то". Все дополнительные таблицы с дополнительной информацией должны иметь поле содержащее значение поля Id_"что-то" из table1. Всё прочее - геморрой.
  • KilkennyCat © (15.09.08 03:06) [3]
    перенсти одно из полей табл1 в табл2. освободившееся поле используем для ссылок на табл 2. курим. И тогда прочий гемморой у тех, кто разрабытывал ДО.
  • ЮЮ © (15.09.08 04:59) [4]
    > (что мешало просто добавить поля в уже имеющуюся таблицу
    > table1 для меня остается загадкой).


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


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


    table1 уже лучше не трогать. Или уж наконец переименовать в Persons :)
    тем более, что связь может быть не 1:1, а 1:N.
  • melehov © (16.09.08 12:52) [5]
    А как связать табл.Клиенты с табл.Ассортимент (мой, несколько тысяч наимен.) если они что-либо купят?
  • Правильный$Вася (16.09.08 13:01) [6]

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

    кросс-таблица
    читать буквать про нормализацию структур данных
  • Sergey13 © (16.09.08 13:09) [7]
    > [5] melehov ©   (16.09.08 12:52)
    > если они что-либо купят?

    При этом появляется новый ДОКУМЕНТ (сделка) которая помимо собственных атрибутов (дата например) ссылается на Ассортимент (что купили) и Клиенты (кто купил).
  • MsGuns © (16.09.08 14:44) [8]
    Отдельную таблицу для "дополнительной" информации об объектах БД вводят в двух случаях (в основном):

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

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

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

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

    Да ничего, но таким образом из троих зайцев один останется целым ;)
  • Аврам (16.09.08 19:29) [11]
    спасибо за ответы.
    решил сделать так: в одной таблице есть поле в которой хранится id записи из другой таблицы
 
Конференция "Базы" » связь между таблицами и записями
Есть новые Нет новых   [134435   +35][b:0][p:0]