我正在考虑将具体表继承用于一个用例,并且需要帮助确定我是否需要使用识别与非识别关系,以及是否需要准确地构造我的表。
我的用例
我有一个 HTML 表单对象,其中的表单在很多方面都是相同的,即它是一个大型表单,对于不同的产品是相同的,除了product_options
,它根据确切的不同而不同product_type
。我想将表单数据保存到表中,以便存储/检索。我想我想使用 Concrete Table 实现,并且需要反馈是否可以这样做。
这是我的想法:
假设我想检索“A”类型产品的信息,我
- 读取 selection_for,检索
product_type
- 基于
product_type
我阅读了相应的选项表
这个好像有点复杂……
我也在使用 Doctrine ORM 在后台驱动数据库,因此这种数据操作可能很难通过 ORM API 实现,但我想先考虑这个选项。
问题:
- 我的设计会按原样工作吗?可以改进吗?我是否正确实施了混凝土表设计?
- 我对产品选项表使用识别关系还是非识别关系?
我也可以像这样做一个替代图表:
如果这些外键之一不为 NULL,那么我读取该键,然后读取相应的表以检索数据。
问题:
与第一种方法相比,第二种方法有什么优点或缺点吗?