哪种数据库类型适合数组?

时间:2010-07-18 15:17:35

标签: php database database-design database-connection

我希望我的数据库支持一家拥有众多用户的公司我该怎么做?例子

用户表(UID,用户名,密码)
公司表(CID) ,公司名称,公司用户,公司用户,公司名称,用户公司我该怎么办 ?我应该在PHP中制作一个像1241,423,4123 * uid的数组,它将被插入到公司行的用户那里?还是有更好的主意?

3 个答案:

答案 0 :(得分:10)

如果您希望每个用户都拥有一个(而且从不多)公司,那么您应该拥有:

  • user
    • uid
    • username
    • ...
    • company_id
  • company
    • company_id
    • company_name
    • ...

然后,user.company_id将是foreign key,引用company.company_id

然后,你存储:

  • 每个用户user中的一行
    • 引用该用户的正确公司的ID
    • ,这是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)

任何关系数据库都是一个很好的方法。请查看MS SQLMySQL