2015-10-22 14 views
2

我有两个使用关系表(ManyToMany)相关的实体然后我有一个定价表,它具有医院服务的定价信息。如果与该服务链接的医院不同,则该表格对于同一服务可以具有不同的定价。在其他表中使用关系表的ID

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表中的问题)

我想到要干的, 我决定的ID列添加到关系表(hospital_service),我将以此为外国键入service_pricing表。

这是一个很好的解决方案在我的情况?我正在使用Laravel的雄辩ORM,所以我怎么说“得到医院2服务7的定价”?

编辑: 为service_pricing和service_duration表添加了附加信息,定价/持续时间取决于weight_range_id以及LH/SH。

回答

0

我应该重写hospital_id VS的service_id信息在 service_pricing表?

你可以,如果你想。无论哪种方式的作品,这只是最方便的问题。如果密钥是一个字段而不是两个,那么加入service_pricingservice_duration表格会容易一些。

这不是重复的数据吗?我已在 Hospital_service表中获得此信息。

不,它不被认为是多余的,因为它是连接记录的关键值。你也必须在外键上有这个值来建立连接。

我正在使用Laravel的雄辩ORM,所以我怎么说“得到 医院2的服务7定价”?

我对这个框架并不熟悉,而laravel.com似乎现在处于低谷。造成这种情况的SQL会是这样的:

select 
    weight_range_id, LH_price, SH_price 
from 
    service_pricing 
where 
    hospital_id = 2 
    and service_id = 7 

如果您决定添加另一个ID在hospital_service表,就需要在该表中加入该查询:

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 
0

我会用表所示:

hospitals: 
    id 
    name 

services: 
    id 
    name 

hospital_service: 
    hospital_id 
    service_id 
    price 
    duration 

有没有数据的重复。 hospital_service是连接服务和医院的多对多表格。

Hospitals 
ID:NAME 
1:hostiptal a 
2:hospital b 

Services 
ID:NAME 
1:service a 
2:service b 

hospital_service 
HOSPITAL_ID:SERVICE_ID:DURATION(minutes):PRICE(euro) 
1:1:30:100 
1:1:60:180 
1:2:180:500 

服务 “服务A” 为30分钟,180 60分钟成本100。

编辑:

你有更多的选择,他们两个是: 1.You可以将更多的服务如。

service a-lh 
service a-sh 
service b-lh 
service b-sh 

,然后价格为每个服务 或:

2.

HOSPITAL_ID:SERVICE_ID:DURATION(minutes):PRICE(euro):SERVICE TYPE 
1:1:30:100:lh 
1:1:60:120:sh 
1:2:60:180:lh 
2:2:180:500:lh 
+0

定价和期限表比我在我的问题中描述的要复杂一点。每个服务的价格取决于一个附加信息(coat_length)。让我添加这个细节。 – Rao

+0

看看我编辑过的帖子。 – fico7489

+0

你能看看我的编辑吗? – Rao

相关问题