我需要在数据库中拥有大量用户数据。现在,我一直在考虑有两个表,用户只有 id ,用户名和密码和另一个表 userData ,其他所有内容如名称,姓氏等。
这是首选方法吗?
答案 0 :(得分:1)
最简单的设计会将所有字段放在一个表中。但是,从那时起,您可能需要考虑将这些信息拆分为多个表的一系列原因。根据您的描述,我无法确定是否有任何正当理由这样做。
如果您从一个表开始,您可能会发现分割数据是有利的,原因如下:
简而言之,我会尝试从简单开始,如果你走那条路,就有理由选择更复杂的设计。
答案 1 :(得分:0)
该设计恕我直言,没有任何问题。您可以拥有一个users
表,并将其链接到包含其他信息的users_custom
表。只需与您的设计保持一致。请记住,为了获得任何其他用户信息,您始终需要JOIN
来获取该数据。
对我来说,这是一个偏好的问题,如果您觉得这个表会随着时间的推移而增长,请考虑您的设计,如果不是将其全部保存在一个表中并正确索引您认为必要的列。
您可以通过使用UserLog
表来进一步构建价值观变化的历史视图。
答案 2 :(得分:0)
是的它是:)理论上有这种所谓的“正常形式”(3NF BCnF等......)。使用它们意味着将表分成较小的表:)
答案 3 :(得分:0)
我认为将它们保存在一个表中可能会更好。假设您将强制使用唯一的用户名,则所有字段(password,first_name和last_name)都具有对用户名的功能依赖性。因此,您可以将它们全部放在同一个表中,并且仍然具有规范化的数据库。
虽然您当然可以将first_name和last_name分隔到他们自己的表中,但如果将所有这些字段保存在一个表中,查询将变得更容易(更少的JOIN)。