我正在使用FOSUserBundle在Symfony2中开发,我对DDBB Design不太确定。我将尽可能简单地解释我的情况。 我们说我的项目就像facebook。所以你知道实体“用户”在整个应用程序中是最重要和最相关的,并且一切都与它有关。
关键是我不确定如何处理使用FOSUserBundle的DB层(表,学说实体和关系)。默认情况下,实体用户必须拥有所有FOSUserBundle字段(用户名,电子邮件,令牌,email_canonical等等)。 所以我怀疑是否应该创建另一个实体来处理与其他实体的关系,比如“UserReal”。它将OneToOne与第一个实体“User”关联起来,将仅用于登录或访问目的。或者只创建一个对象“User”并使用它处理所有内容。
我的选择:
1。 - 实体“UserSecurity”扩展了FosUserBundle用户实体,并且仅限于在访问(登录,注销,注册)情况下使用。 - 有实体“UserReal”,或者只是“用户”巫婆的每个字段都来自用户(姓名,姓名,位置)。它与其他实体(如页面,组,照片)有关系。它是“主要”实体,具有生成价值的策略。 - UserSecurity通过UserSecurity-> id_user与用户建立关系OneToOne。 - 注册必须插入两个实体。
反过来说
使用一个对象
我认为facebook有很多User实体实例(例如每个朋友一个实例),但只有一个用户登录的实例,所以如果我们将它用于所有内容则会出错。
我想知道其他意见/建议。
我希望它不会混淆(或者我没有混淆)。
非常感谢提前。
答案 0 :(得分:1)
只需扩展FOS用户类,就无需与双胞胎实体建立OneToOne
关系。
在更多实体中分裂会导致水合作用和持久性的开销,但此外还会导致不需要的分离逻辑:您正在定义用户属性[用户名,密码,名字,姓氏等],它们都属于同一实体。
如果您需要不同类型的用户,您应该考虑与其他实体组成子类,但这超出了您的问题的范围。