Php 哪种数据库类型适合阵列?
我希望我的数据库能够支持一家拥有多个用户的公司。我如何做到这一点?Php 哪种数据库类型适合阵列?,php,database,database-design,database-connection,Php,Database,Database Design,Database Connection,我希望我的数据库能够支持一家拥有多个用户的公司。我如何做到这一点?示例users table(UID、username、password)公司table(CID、companyname、usersthattheownerofthecompany)?我该怎么办?我是否应该在php中创建一个类似12414234123*uid的数组,该数组将插入到公司行的UserSthatIstheOwner上?或者有更好的主意吗?如果你想让每个用户都有一个(而不是更多)公司,你应该: 用户表格 uid 用户名
示例
users table(UID、username、password)
公司table(CID、companyname、usersthattheownerofthecompany)
?我该怎么办?我是否应该在php中创建一个类似12414234123*uid的数组,该数组将插入到公司行的UserSthatIstheOwner上?或者有更好的主意吗?如果你想让每个用户都有一个(而不是更多)公司,你应该:
表格用户
uid
用户名
公司id
表格公司
公司id
公司名称
user.company\u id
将是一个,它引用了company.company\u id
然后,您存储:
- 每个用户在
中有一行user
- 引用该用户的正确公司的id
- 这是
表中右行的company
company\u id
- 在
公司
像您建议的那样将数据存储为数组肯定不是一个好主意——只是关系数据库的工作方式不同
如果每个用户可以有多个公司,并且每个公司可以有多个用户,则必须添加第三个表(a),该表将为每个用户指明他们所属的公司:
表格用户
uid
用户名
表格公司
公司id
公司名称
表格用户/公司
uid
公司id
company
表中没有与用户相关的内容,而user
表中也没有与公司相关的内容:这些内容之间的链接位于user\u company
表中
当然,
user\u company.uid
将是user.uid
的外键;和user\u company.company\u id
将是company.company\u id
的外键。有一个更好的主意-它被称为跨表联接。您要做的是创建第三个表,其中包含两列。在这两列中,存储要相互连接的表的主键
这样做的目的是在公司和用户之间建立一种关系。在关系数据库中,表之间的关系通过使用外键来表示
当然,这仅适用于将多个用户连接到多个公司(“M-N”关系)的情况。如果要将多个用户连接到一个公司,只需为用户添加一列公司id即可。任何关系数据库都是一种好方法。看看或。pascal你什么时候睡觉?呵呵,回答得很好。多对多怎么样?@亚当:现在这里是下午5:30,所以不是睡觉的时间;-);;;对于多对多部分,您必须使用联接表,如我回答的第二部分所述(我已对其进行了编辑,因此您可能在发表评论之前没有看到该部分),“级联”操作可以由数据库服务器完成(但取决于服务器);但我更喜欢自己在应用程序的代码中这样做,而不是使用DB引擎的那个特性;这样,我就知道更新/删除了什么;;;cascade与多对多没有多大关系:多对多意味着每个用户可以有几个公司,每个公司可以有几个用户。顺便问一下,在user_company中,哪一个是PK?公司id?uid?还是没有PK?PK已经是独一无二的了吗?或者我们最好将UQ放在PK上?PK是一行的标识符;所以,它必须是独一无二的;;在用户单位中,标识为用户/单位对;因此,主键将位于这两个字段上(一个索引中可以有多个字段;PK是一种特定的索引)。在数据库中的一个字段中存储数组是一种糟糕的做法。这使得查询数据变得更加困难。