用户数据库模式 - 是否过度规范化?

User database schema - over normalization or not?

我正在尝试创建用户的数据库架构。我可以将 "user" 实体视为具有其属性的对象,如下所示:

否则我可以将描述分开,分为users_description table(1-1关系),类别在user_category(1-1),users_status(1- 1), users_datetime(1-1)(用于创建、编辑...)并通过连接加入它们。

哪种形式更好?我认为第二个假设是"over normalized",理论上更好但实际上没有。我使用 Mysql 和 php.

您的架构很好地列出了有时 "overnormalized"。

不要规范化 "continuous" 事物,例如 DATETIME、数字、浮点数等。某天您可能需要获取某些日期时间范围内的行;规范化会使笨拙和低效。

诸如 "status" 和 "flags" 和 "yes/no" 之类的事情通常用简单的 ENUM.

可以更好地处理

假设 "category"(也许 "sub-category")有一些其他相关信息,将其规范化可能没问题。如果是users和category之间的"many-to-many"关系,那么你需要多2张表,而且不是真的"normalization"而是"relationship"。 (你提到了 1-1;我怀疑那是一个错误。)

description TEXT -- 这听起来像是一个永远不会重复的字段,因此规范化既不会保存 space 也不会简化更改它。不归一化。