我想创建一个类似于Stackoverflow的身份验证系统。
用户可以使用我网站上的帐户创建/登录,也可以使用各种提供商的openid创建/登录。
典型的架构可能类似于:
Table: users
====================
id
email
password
date_created
Table: users_openids
====================
id
user_id
openid_url
此架构的问题是电子邮件/密码仅适用于我的网站帐户。
我建议的架构是否采用最佳方式进行此操作?
Table: users
====================
id
account_type_id
date_created
Table: account_types
====================
id
account (enum('mine','openid'))
Table: users_openids
====================
id
account_type_id
user_id
openid_url
Table: user_mine
====================
id
account_type_id
user_id
username
password
Table: user_attributes
====================
id
user_id
email
nickname
full_name
dob
gender
对我来说似乎有点奇怪,任何想法/批评/优化/建议都会受到高度赞赏。
答案 0 :(得分:1)
可选数据可以作为父表中的可空字段存在,或者如果多个列一起是可选的,那么您应该创建第二个表,其中主键也是引用父表的外键。