我希望我的数据库支持一家拥有众多用户的公司我该怎么做?例子
用户表(UID,用户名,密码)
公司表(CID) ,公司名称,公司用户,公司用户,公司名称,用户公司我该怎么办 ?我应该在PHP中制作一个像1241,423,4123 * uid的数组,它将被插入到公司行的用户那里?还是有更好的主意?
答案 0 :(得分:10)
如果您希望每个用户都拥有一个(而且从不多)公司,那么您应该拥有:
user
表
uid
username
company_id
company
表
company_id
company_name
然后,user.company_id
将是foreign key,引用company.company_id
。
然后,你存储:
user
中的一行
company_id
表中右行的company
。company
公司表中没有存储用户的相关信息 - 并且当每个用户“指向”公司时,公司可以拥有多个用户。
像你建议的那样将数据存储为数组绝对不是一个好主意 - 只是不是关系数据库的工作方式。
如果每个用户可以拥有多个公司,并且每个公司可以拥有多个用户,则必须为每个用户添加第三个表(a join table),表示),他们所隶属的公司:
user
表
uid
username
company
表
company_id
company_name
user_company
表
uid
company_id
在这种情况下,company
表中没有与用户相关的内容,user
表中没有与公司相关的内容:这些内容之间的链接位于{{1}表格。
当然,user_company
将成为user_company.uid
的外键; user.uid
将成为user_company.company_id
的外键。
答案 1 :(得分:1)
有一个更好的主意 - 它被称为跨表连接。你要做的是创建第三个表,其中包含两列。在这两列中,您存储了要连接的表的主键。
这个想法是你在公司和用户之间建立关系。在关系数据库中,通过使用外键在表之间指示关系。
当然,这仅适用于您希望将多个用户连接到多个公司(“M-N”关系)的情况。如果要将多个用户连接到单个公司,只需向用户添加公司ID列。
答案 2 :(得分:0)