我有 2 个使用关系表(ManyToMany)相关的实体,然后我有一个定价表,其中包含医院服务的定价信息。如果与服务关联的医院不同,则此表对于同一服务可以有不同的定价。
hospitals:
id name
services:
id name
hospital_service:
hospital_id service_id
service_pricing:
id hospital_id service_id weight_range_id LH_price SH_price
service_duration:
id hospital_id service_id weight_range_id LH_duration SH_duration
现在我的问题是我应该重写 service_pricing 表中的 Hospital_id 与 service_id 信息吗?这不是重复数据吗?我已经在 Hospital_service 表中包含此信息。
(同样是我在 service_duration 表中遇到的问题)
我想做的事, 我决定向关系表 (hospital_service) 添加一个 ID 列,并将其用作 service_pricing 表中的外键。
对于我的情况来说,这是一个足够好的解决方案吗?我为此使用 Laravel 的 Eloquent ORM,那么我怎么说“获取医院 2 的服务 7 的定价”?
编辑: 在service_pricing和service_duration表中添加了附加信息,定价/持续时间取决于weight_range_id以及是否是LH/SH。
最佳答案
should I be rewriting the hospital_id vs service_id information in the service_pricing table?
只要你愿意,就可以。无论哪种方式都有效,只是哪个最方便的问题。如果键是一个字段而不是两个字段,则连接 service_pricing
和 service_duration
表会更容易一些。
Isn't this repetition of data? I already have this information in Hospital_service table.
不,它不被认为是多余的,因为它是连接记录的键值。您必须在外键中也包含该值才能建立连接。
I am using Laravel's Eloquent ORM for this, so how do I say "get pricing of service 7 of hospital 2" ?
我对那个框架不熟悉,而且 laravel.com 目前似乎已关闭。其 SQL 类似于:
select
weight_range_id, LH_price, SH_price
from
service_pricing
where
hospital_id = 2
and service_id = 7
如果您决定在 hospital_service
表中添加另一个 ID,则需要加入该表以进行该查询:
select
p.weight_range_id, p.LH_price, p.SH_price
from
service_pricing p
inner join hospital_service hs on hs.is = p.hospical_service_id
where
hs.hospital_id = 2
and hs.service_id = 7
关于php - 在其他表中使用关系表的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277220/