[英]Database table structure for big and scalable applications
我是一名软件工程师(由于准备了几个月的学习准备),因此我为自己的工作开发了一个大型可扩展Web应用程序。 另一家公司负责编程工作,并在其后面建立数据库。 我们定义了数据及其之间的关系,但没有给出应使用的硬数据库结构。
现在第一眼(内部)可见。 我看了看ans后面的数据库结构(我认为)有些奇怪。
他们为用户创建了一个表用户,其中包含ID,电子邮件和密码等内容。 为此,他们创建了一个user_meta表,其中包含一个id,键和值。
当我有一个用户时:
ID,电子邮件和密码存储在用户表中。 对于其他信息,是在user_meta表中创建的行。 这意味着在这种情况下,为1个用户创建了4行(在我们的示例中,每个用户超过20行)。此结构是每个对象的用户,应将其保存在数据库中。
我学会了创建一个表,其中包含用户所需的所有数据。 因此,按照我的逻辑,它应该是一个包含7个字段的表...
额外的信息:
问题:
抱歉,当问题是“新手问题”时,对我来说,这是我人生中的第一个大项目,因此我想念一些经验,但尝试专业地管理该项目。 我们将在星期三的会议上进行讨论。 通过这种方式,我想为此主题做一些自我准备。
我认为这对性能不利。 特别是当用户数量增加时,这是真的吗?
没有。
插入/更新成本上的差异很小,这将不取决于先前累积的数据量。 完整记录的检索成本会更高,但部分记录的检索成本会有所降低。 归根结底,只要记录仍然可以在一次单次往返数据库中解决的情况下,性能差异就可以忽略不计(与许多琐碎的ORM实现不同)。
影响最大的是功能。 例如,它没有努力为EAV表添加标题属性,但是在对表进行技术改造以适应更宽的记录(或迁移行)时,可以将规范化表脱机。 OTOH,您不能像每个客户都必须有一个电子邮件地址那样在数据库层实施约束。
这是最佳还是不良做法
就其本身而言。 尽管没有记录设计决策是一个坏习惯。
几年内远远超过1.000.000用户
一百万条记录并不多(除非数据库设计确实很糟糕)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.