Как сохранить множественное значение в поле, которое связано с другой таблицей

0

Я работаю над "контактной базой данных" с использованием базы данных mysql и codeigniter. Некоторые из моих табличных структур приведены ниже

Organization ->  fld_id
                 fld_orgname
                 fld_orgaddress

Department   ->  fld_id
                 fld_org_id (has relationship with organization)
                 fld_deptname
                 fld_details

Designation  ->  fld_id
                 fld_dept_id (has relationship with organization)
                 fld_desgname

usertable    ->  fld_id
                 fld_desg (has relationship with Designation)
                 fld_dept (has relationship with Department)
                 fld_org (has relationship with organization)

Теперь проблема в том, что когда-то человек может работать в нескольких организациях. Тогда как я мог бы вставить это несколько значений последовательно в usertable?

  • 0
    Содержит ли «usertable» другую информацию о «персоне»? Или есть какой-то другой стол?
  • 0
    В usertable есть много других столбцов, таких как имя, возраст, телефон, но они не имеют отношения с другими, поэтому я не упомянул их
Показать ещё 2 комментария
Теги:
database
codeigniter
relationship

2 ответа

1
Лучший ответ

(Извините за мой английский, если я не понял)

Если я правильно понимаю, что пользователь может работать в нескольких организациях, и у организации может быть несколько пользователей, uno-решение может заключаться в создании таблицы соединений

JUNCTION_ORG_USER -> fld_id_user (usertable) REFERENCES usertable(fld_id)
                  -> fld_id_org (organization) REFERENCES organization(fld_id)

Или, если вы не хотите (или не можете) нормализовать, вы можете повторить строку, изменяющую идентификатор организации

Также, как и вы используете codeigniter, и это применяется, если u создает таблицу соединений, вы можете использовать

$this->db->insert_batch('table_name', $array);

Просто создайте массив, как указано в документации

$data = array(
    array(
            'fld_id' => 'TheUserId',
            'fld_org' => 'OrganizationId_1'
    ),
    array(
            'fld_id' => 'TheUserId',
            'fld_org' => 'OrganizationId_2'
    )
 );

 $this->db->insert_batch('mytable', $data);

Надеюсь, мой ответ поможет вам.

  • 0
    Большое спасибо. Это действительно очень мне помогает.
  • 1
    Рад помочь: D
2

Один из ответов - создать другую таблицу перекрестных ссылок для хранения соединения между пользователем и организацией. Таким образом, между человеком и организациями может быть очень много отношений

user_org => fld_id 
            user (usertable.fldid)
            org  (Organization.fld_id)

Затем вы должны удалить fld_org (имеет отношение с организацией) от usertable

Ещё вопросы

Сообщество Overcoder
Наверх
Меню