我有4类用户:
管理员、普通用户、公司、服务提供者
管理员和普通用户共享一些属性(id .first名称、姓氏、电话、邮件),公司和服务提供商也共享一些属性(id .company名称、电话、传真、邮件)。
它们也与应用程序中的其他实体进行交互,以访问诸如post、作业或事件之类的功能或申请它。
把它们都放在一个用户表(如tbl_users )中更好,还是为每个用户创建单独的表更好呢?或添加到两个表中,一个用于(管理员和普通用户),另一个用于(公司和服务提供商)。
这是关于实体属性的一些细节。
发布于 2014-10-28 15:04:53
您公开的内容在很大程度上取决于您的应用程序需求。
一个典型的做法是将用户与联系信息分离开来,从而实现最大的灵活性。我还建议将联系人信息数据分解到一个表中。
用户(1,1) - (0,1) Contact_Information
公司(1,1) - (0,1) Contact_Information
服务提供商(1,1) - (0,1) Contact_Information
用户表将包括登录数据和添加的is_admin字段。两个实体之间的链接的存在也会让您具有灵活性,这样一个“真实的人”既可以代表正常的用户,也可以代表公司。
我还建议您阅读如何在数据库-> https://stackoverflow.com/questions/190296/how-do-you-effectively-model-inheritance-in-a-database中对继承建模
发布于 2014-10-28 15:04:09
我会将它们都保存在一个表中,并添加一个字段来指示它是哪种类型的用户。您将有一些空白字段(例如admins和普通用户没有传真号码),但这不应该是一个问题,除非您有大量的用户,而且一些字段只用于其中的一小部分。您也可以填空,因为没有理由普通用户不能有传真号码,或者为什么服务提供者不能有名字和姓氏。
如果有必要,您可以拥有一个“用户”表和一个“用户属性”表,但对于少量(即几百)用户来说,这可能不值得。
发布于 2014-10-28 21:57:47
除非不同的用户类型在架构中确实有不同的角色,否则将它们保存在一个表中。我将有以下字段:
甚至可以将电话号码和地址分成其他表格,允许一个用户拥有多个电话号码和地址(也许一家公司有多个办公室,一个用户有家庭、手机、工作电话等等),尽管从技术上讲,这不是问题的一部分。
重要的是要记住的是,用户类型很容易地表示为表上的一个字段,允许其他表指向任何用户:这会强制一个关系类型。此外,用户可以更改类型,而不需要在表之间映射数据、更新外键等。如果普通用户成为管理员怎么办?如果他在家里工作并融入社会,也许还会再雇佣一名工人呢?在现实世界中,用户更改类型是非常可行的,当然,您的业务规则可能是不同的。
https://softwareengineering.stackexchange.com/questions/261137
复制相似问题