Mysql 一个巨型多态表的数据库设计

Mysql 一个巨型多态表的数据库设计,mysql,schema,rdbms,Mysql,Schema,Rdbms,我有一个MySQL数据库,它有许多不同的类型,需要很多相同的东西。例如,我们有用于预订、客户和帐户的表,每个表都需要EAV类型属性和一组权限配置 我的问题是:我应该使EAV和权限实现多态吗?因此,每个预订、客户和帐户都会获得一个实体id和实体类型id,可以插入到|实体id |实体类型id |属性| id |值|表中?然后将有一个实体表,该表具有| id |实体|类型| id |,在创建新预订、客户或帐户时需要插入该表 或者我应该有reservation\u eav,customer\u eav,

我有一个MySQL数据库,它有许多不同的类型,需要很多相同的东西。例如,我们有用于
预订
客户
帐户
的表,每个表都需要EAV类型属性和一组权限配置

我的问题是:我应该使EAV和权限实现多态吗?因此,每个预订、客户和帐户都会获得一个
实体id
实体类型id
,可以插入到
|实体id |实体类型id |属性| id |值|
表中?然后将有一个
实体
表,该表具有
| id |实体|类型| id |
,在创建新预订、客户或帐户时需要插入该表

或者我应该有
reservation\u eav
customer\u eav
accounts\u eav
表格吗?我们将始终知道要查找的实体类型,因此不需要在一个查询中返回多种类型的实体。但是,我们需要在几种情况下获取相同类型的多个实体


我之所以选择多个表,严格来说是因为性能。将会有大量的预订,而不是那么多的客户,而且客户介于两者之间。我的一部分人认为,这一庞大的预订将减缓对账户/客户AV的查找。但是,我不知道适当的索引是否会带来显著的性能优势,我确实觉得单一的多态表会使模式更简单。

他们为什么需要EAV?我们在决策中花了很多心思,尽可能避免EAV,但是使用这个系统的公司对于他们想要收集的数据有太多不同的需求,所以我们需要一些类型的动态模式。我们已经为属性信息/验证等开发了元表。
保留
客户
账户
,这些表都是属于
公司
的实体,每个公司都希望能够为这些东西创建任意属性。我们开发了一个
规则表
,每个规则都有一个regexp(日期、电子邮件、cc#等),我们允许公司创建属于这些
规则的属性
…但是保留、客户和帐户中的核心数据对您的所有客户都可用(或可能可用)。很抱歉,我不确定我是否理解。当然,我们有总是应用于这些类型的属性,这些属性是对应表中的列。问题在于,
公司
还想定义其他属性,用于描述每种类型。它们只需要是可编辑的和可搜索的,所以我们没有基于它们的任何程序逻辑。例如,一家公司可能想知道客户的头发颜色,而另一家公司可能并不关心。