网站的个人资料页面包含任何用户的这些类型的字段 -
- 一对一字段 - 姓名、年龄、性别
- 一对多领域 - 工作经历、教育
- 多对多领域 - 语言、奖项、委员会
工具 - MYSQL 和 PHP [但可以更改]
我决定创建一个用户表。
tbl_user -> PK - user_id , FK - profile_id
对于用户一次出现的所有字段,我将它们作为属性添加到表 tbl_user_profile 中。
tbl_user_profile -> PK - profile_id
然后,为了满足一对多的关系,我创建了一堆表 - 这很容易随着时间的推移而增长..
tbl_user_jobs , tbl_user_education
FK - user_id [ INNO DB ]
然后我创建了一堆表作为 MANY_TO_MANY 建模的参考表 -
tbl_ref_awards, tbl_ref_languages, tbl_ref_committee
PK = REF_ID
tbl_user_languages, tbl_user_awards, tbl_user_committee
FK - user_id , REF_ID
现在,我必须使用刚才提到的许多细节来呈现个人资料页面。在每次页面加载时,我必须将表tbl_user_*表与 tbl_user 连接起来并填充到页面中。
我首先猜测这个设计是否可以?其次,在 page 上加入了 [7 次] 一样多的表,我在页面加载中看到了拖累,并且很高兴听到在上述用例中数据库设计的可能改进。已经有索引和 FK 存在。尚未在任何地方添加缓存。