如何用PHP正确地扩展数据库模型


How to properly extend a database model with PHP

我知道这个题目不太直观,但是让我们进入问题。

我已经为我所有的后端web应用程序(控制面板,系统来管理客户端,余额等)设计了一个"核心系统"。这个"核心"是根据新系统的具体需求开发新模块的起点,但我始终保留"核心模块":

  • 用户(管理用户角色)
  • 用户类型(在不同的系统中有不同类型的用户,所以最好动态地管理它们)
  • 模块(创建新模块并为其添加权限)
  • 仪表盘

我的主要问题是关于User模块的。因为它有默认列

  • 标识;名称;登录;电子邮件;密码;isRoot;isPowerUser;UserTypeId

我想创建新的控制面板和应用程序,但不想改变这个表,以保持"核心"在未来一个简单的过程中可更新。我的设计想法是创建一个名为User_Extra的表,它将包含这个特定用户的所有额外列。

这是一个好方法吗?我还将创建一个名为UserExtra.class.php的新类。

如果你想看看这个项目来获得想法:https://bitbucket.org/alexandrekop/akop-core

想象一下,看看你的数据库模式,看到一个名为"user_extra"的表,上面有一堆字段,这些字段以任何方式都不相关,每个字段都与不同的模块相关,感觉"对"吗?

我的建议是将额外的字段拆分到相关的表中,可能是每个模块或每个逻辑组。

例如,如果一个模块与地址相关,那么您将有一个表"user_addresses",其中只包含特定于用户地址的内容。