【发布时间】:2017-08-14 20:11:06
【问题描述】:
我正在尝试在我的应用程序架构中创建链式继承情况。我想要有各种位置分组,从大到一个国家到小到一个地址,国家>地区>州>城市>地址,以及像“蓝色组”和“贵宾位置”这样的任意分组。
因此,美国东北部纽约市纽约市的 Broadway Ave 一直沿用美国曾祖父母位置的“#8b0000”颜色,但会使用它自己的“macys.png”封面照片。不列颠哥伦比亚省将从其加拿大的父位置获得它的颜色和照片。等等。
一般来说我的目标是:
- 每个位置都可以有自己的数据或空值。
- 继承特征(例如,如果巴黎没有自己的颜色,则可以从法国继承它的颜色)
- 用户可以创建任意分组(“蓝色组”、“表现不佳者”)
这只是我的第一次通过方法。
SQL 是否适合这种继承?例如,以这种链式继承方式,我似乎不太可能很容易地用 sql 从同一张表中的祖先中select 数据。
有什么更好的方法来解决这个问题?
【问题讨论】:
-
我想为此目的推荐 ORM,请参阅一个好的 ORM “doctrine orm”。对于关系和继承,我更喜欢 ORM。因为你已经标记了 PHP 这就是为什么。如果是 SQL 应用程序,那么 stackoverflow.com/questions/3579079/…
-
你可以在 sql 中做你想做的事,但在我看来,好像你希望有人免费为你解决它......我并不惊讶没有人回答。
-
我还想补充一点,解决方案可能最终无法通过隐藏在幕后但尚未在您的问题中指定的标准。比如你要支持多少行,几百万,几亿,几千等等。您可以提出一个通用/动态模型,它可以支持任何属性,但性能可能会受到影响,并且从中查询可能会更加困难(并非不可能)。一般来说,我个人喜欢为不同的实体使用不同的表。这些实体是否具有在设计时已知的属性?
-
对我的第一条评论的一个更正:“没有人回答到目前为止”。
-
不,只是想降低走死胡同的风险。
标签: php sql mysqli database-design architecture