php—如何在与其他表有关系的字段中存储多个值

x9ybnkn6  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(351)

我正在使用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中呢?

tzcvj98z

tzcvj98z1#

(如果我不太清楚,我的英语很抱歉)
如果我理解正确,一个用户可以在多个组织中工作,一个组织可以有多个用户,uno的解决方案可能是创建一个连接表

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

或者如果您不想(或者不能)正常化,您可以重复更改组织id的行
同样,当你使用codeigniter时,如果你创建了一个连接表,你可以使用

$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);

希望我的回答对你有帮助。

wdebmtf2

wdebmtf22#

一个答案是创建另一个交叉引用表来存储用户和组织之间的连接。这样一来,一个人和一个组织之间就很容易形成一对多的关系

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

然后您应该从usertable中删除fld\u org(与组织有关系)

相关问题