Nor*_*ld2 1 mysql orm database-design entity-relationship relational-database
我目前正在设计一个MySQL数据库,我遇到了以下问题,我不确定如何正确解决/设计.
我有实体:(简化)
Providers, Addresses, Letters, Faxes
Run Code Online (Sandbox Code Playgroud)
现在:
Adresses belong to providers, Providers have many Addresses
Letters belong to Addresses, Addresses have many Letters
Faxes belong to Letters, Letter have many Faxes
Run Code Online (Sandbox Code Playgroud)
所以现在我正在使用带有此数据库模型的ORM在PHP中工作,并发现自己处于一种情况,即我有一个传真对象的实例以及加载相应提供者的内容.
现在,这将要么花费我一个大的连接或几个查询.
我需要走的路是:
Fax -> Letter -> Address -> Provider
Run Code Online (Sandbox Code Playgroud)
现在我在想是否应该建立传真和提供商之间的直接关系,这将解决这个问题.但这不是多余的,而是以双重努力为代价的吗?如果传真和提供商之间的关系发生变化怎么办?然后我会调整两个关系路径.
这样做的首选方式是什么?我的例子有点简化.实际上,我必须走的路要长一点.
那么,识别关系和"更自然"的键可以降低对JOIN的需求.
例如:

既然有Faxes.ProviderId,你可以直接加入Faxes和Providers.
而且由于InnoDB表是集群的,如果您朝相反的方向前进(例如"获取给定提供商的所有传真"),您可以获得良好的性能.
缺点是"更胖"的键和对ORM的相对不友好.所以,我想这是妥协的问题,而你是决定哪个选项更好的人.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           165 次  |  
        
|   最近记录:  |