【发布时间】:2012-07-29 04:01:31
【问题描述】:
我正在寻找有关数据库设计的一些建议。
我正在 symfony2 平台上构建一个幻灯片应用程序,我有四种不同类型的幻灯片容器(公司、地理区域、财产和个人监视器)。这是为了组织内容和继承内容(监视器位于属性中,属性是地理区域的一部分等)。
现在,在平面 PHP 上,我将只使用两个表,“容器”和“内容”,并在容器表中放置一个类型字段,定义相关容器是否为地理区域、属性等。使用 FK 将每个内容片段(即幻灯片)链接到适当的容器。
现在,学习 symfony2 的实体系统,我似乎可以通过将不同的容器类型定义为单独的实体来获得很多继承,从而能够获取例如地理区域,并自动返回所有其子对象(所有属性,以及属于该属性的所有监视器)的动态。然而,我确实希望能够在不同容器和不同容器类型之间切换内容片段的“归属”。我觉得所描述的方法会有些麻烦,如果内容必须具有“属于”四种不同实体类型中的任何一种的能力,那么内容的关系(FK)很可能会出现问题?
在 symfony2 世界中经验丰富的人也许可以启发我了解在这里进行的最明智的路径?
【问题讨论】:
-
让我看看...首先,您必须以面向对象的方式而不是关系数据库来考虑您的业务模型。如果您希望实体具有名为
container的属性,该属性可以是不同类型(并且具有不同的行为),则存在类继承问题。例如,您需要具有子GeoArea的类Container,依此类推。然后,您需要将层次结构映射到数据库:docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/…
标签: php database-design symfony doctrine