我有一个MySQL数据库,有许多不同的类型需要很多相同的东西。例如,我们有reservations
,customers
和accounts
的表格,每个表格都需要EAV类型的属性和一组权限配置。
我的问题是:我应该让EAV和权限实现多态吗?那么,每个预订,客户和帐户都会获得可以插入entity_id
表的entity_type_id
和| entity_id | entity_type_id | attribute_id | value |
?然后,只要创建了新的预订,客户或帐户,就会需要插入entities
| id | entity_type_id |
表。
或者我应该有reservation_eav
,customer_eav
,accounts_eav
表吗?我们将始终知道我们正在寻找的实体类型,因此不需要在单个查询中返回多种类型的实体。但是,在几种情况下,我们需要抓取多个相同类型的实体。
我对多个表的理由是严格的性能。会有大量的预订,而不是很多账户,客户介于两者之间。我的一部分认为这一大量预订会减慢帐户/客户AV的查询速度。但是,我不知道在正确索引的情况下性能优势是否显着,我觉得单个多态表会使架构更简单。