在其他表中使用关系表的ID

时间:2015-10-22 09:04:30

标签: php mysql database laravel-4 eloquent

我有两个使用关系表相关的实体(ManyToMany)然后我有一个定价表,其中包含医院服务的定价信息。如果与服务相关联的医院不同,则此表可以对同一服务具有不同的定价。

[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];

现在我的问题是我应该重写service_pricing表中的hospital_id vs 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。

2 个答案:

答案 0 :(得分: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

服务"服务"费用为100分钟,30分钟,180分钟,60分钟。

编辑:

您有更多选择,其中两个是: 1.您可以插入更多服务,例如

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

答案 1 :(得分:0)

  

我是否应该重写医院中的hospital_id与service_id信息   service_pricing表?

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

  

这不是重复数据吗?我已经掌握了这些信息   Hospital_service表。

不,它不被认为是多余的,因为它是连接记录的关键值。您还必须在外键中使用该值才能建立连接。

  

我正在使用Laravel的Eloquent ORM,所以我怎么说“得到   医院服务7的定价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