一、背景
- 用户可以发布文章,可以通过企业认证来绑定企业,可以解绑企业。
- 当账号绑定企业后就以企业身份发布 (文章关联
company_id);解绑后就以个人身份发布 (文章关联person_id)。 - 只有个人 (
person) 才有账号,也就是说只能用个人账户登录。
二、问题
请问用户表和文章表怎么设计?
三、我的方案
person 表保存个人信息和用户名、密码信息,company表的数据在企业认证时生成并把 company_id 填入 person表:
CREATE TABLE `person` (
`person_id` int unsigned NOT NULL AUTO_INCREMENT,
`company_id` int unsigned DEFAULT NULL COMMENT '企业认证id',
`username` varchar(255) NOT NULL
`password` varchar(255) NOT NULL
PRIMARY KEY (`person_id`),
)
CREATE TABLE `company` (
`company_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '企业认证id',
PRIMARY KEY (`company_id`),
)
CREATE TABLE `article` (
`article_id` int unsigned NOT NULL AUTO_INCREMENT,
`user_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'person_id 或者 company_id',
`user_type` varchar(20) NOT NULL COMMENT 'person 或者 company'
PRIMARY KEY (`article_id`),
)
但问题是:如果按如上方式设计 person、company 表的话,类似 article 的很多表就需要保存 user_type,比较麻烦,有更好的设计吗?