【问题标题】:User table database best practices用户表数据库最佳实践
【发布时间】:2012-06-05 04:07:25
【问题描述】:
我想知道组织用户数据的最佳做法是什么。
我应该将每行的所有用户数据存储在一个表中,还是应该将其分割成更小的块并使用多个通过主键关联的表?
例如。
首先,我想记录个人信息,例如姓名、职业、位置等。
最终,可以选择添加使用历史记录。比如他们填写了多少、哪些调查以及他们评论了哪些文章。
在键入此内容时,我觉得有一个用于 cmets 的表、一个用于用户名+密码的表、一个用于个人信息的表,并随着我的需求增长不断添加表...
希望得到一些确认。
【问题讨论】:
标签:
database
database-design
【解决方案1】:
如果要建立一对多关系,那么您应该将其拆分,但对于一对一的事情,您不应该这样做。因此,如果用户将拥有多个地址、电话号码、历史记录、朋友等,那么您将拥有一个与客户 ID 相关联的地址表(或电话号码、历史记录或朋友表)。
对于用户名和密码,您不需要单独的表格。
【解决方案2】:
最佳实践是优化您的数据库,或者您真的想首先组织用户数据,您必须使用一对多关系,因为您可以通过加入不同的表来轻松跟踪整个用户数据
SELECT * FROM user_A a INNER JOIN userdata_B b ON a.id=b.a_id
如果用户包含多个记录,例如名称 name2、occupation1、occupation2、location1、location2 等,那么您必须创建多个表并将此记录填充到这些表中,因为如果您将整个用户数据填充到单个表中,结果会花费很多执行时间
在此之后应用索引......