【发布时间】:2016-08-28 21:04:14
【问题描述】:
我正在构建一个包含数百种不同产品类型的产品目录。这些产品类型有很多不同的属性。有些是共享的,但大多数是特定于产品类型的。
我最初的想法是使用 EAV 类型的结构,但我理解为什么这可能是一个糟糕的选择。特别是因为我希望我的数据库强制执行正确性和一致性,这将与 EAV 混淆。
在我的例子中,替代方案是类表继承。不过,我有点担心可维护性……我将如何维护数百个迁移和模型?这真的是一个理想的情况吗?我了解好处,但可维护性不是一个巨大的缺点吗?
【问题讨论】:
-
抱歉,这对于 Stack Overflow 来说太基于意见了。我认为在我们的案例中,EAV 可能是合适的。为什么会变得一团糟? EAV 具有参照完整性。它只是实体和属性之间的多对多关联,其中联结记录是一个值。它使一些事情更难,尤其是。用搜索条件查询,但那不一样混乱。
-
也许混乱不是正确的术语。使用 EAV 很难满足某些要求,例如强制执行正确的属性值、数据类型和非空值。这些都很好地描述了 EAV 的缺点。如果我使用 EAV,我会接受这些后果。不过,我的问题特别是关于类表继承的可维护性。
标签: mysql database-design laravel-5 relational-database entity-attribute-value