我正在制作一个小型项目,其中有两种类型的用户。
这两种类型的用户在访问不同的控制器和视图时会有不同的访问级别。
假设user_type 1只是普通客户。 user_type 2将是一个比普通客户多一点的客户端。就像一个普通人和一个商业主在商场购物会在不同的层面。
任何情况下,我都有一个用户表,其中cols为,
USER_ID (PK)
用户名
密码
电子邮件
USER_TYPE
is_logged_in
在我看来,应该有2个与用户相关的其他表,它们应该是,
customer_profile和client_profile。
这些表将包含有关未在users表中显示的用户的基本信息。
我如何建立关系?
我是否将customer_profile和client_profile表上的用户名设为PK并将用户表上的用户名设为FK?
顺便说一句,关于ion auth的任何想法?
在小伙子向我提到laravel有自己的内置身份验证后,我搜索了一个用于ci3,我找到了这个身份验证库。
答案 0 :(得分:0)
当涉及到身份验证系统时,您可以根据您要实现的要求使其变得复杂,例如,支持不同的组,位置,组之间的层次级别,用户审核,忘记登录凭据功能,锁定和过期的帐户等等。
但是对于您指出的简单方案,建议不要将用户名或电子邮件作为外键开头。您可以首先将users_id列作为customers_profile和client_profile表的外键。同样,根据您要为客户或客户端存储的常用属性,您可以将customers_profile和client_profile表规范化为一个表调用者user_profile,并使用该表中的user_type列来指示它是哪种类型的配置文件。 / p>
您还可以添加分组表并将所有用户添加到一个或多个组。假设您创建了一个包含不同组(如客户,客户端,管理员,销售等)的组表。要将用户分配到组,您需要在组和用户之间建立多对多关系表。这可以通过使mmr_user_group表具有三列(mmr_user_group_id,user_id,group_id)来完成,其中user_id是来自users表的外键,group_id是来自groups表的外键。这将允许您将多个用户分配给一个组,将一个用户分配给多个组。然后,您可以将应用程序中的权限分配给组而不是用户级别。
答案 1 :(得分:0)
这个设计怎么样:
users(id PK, username UK, pass, email, user_type, last_logged_in)
user_profiles(id, user_id, ...)