Использование идентификатора таблицы отношений в других таблицах

У меня есть 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 

Теперь мой вопрос в том, следует ли переписывать информацию hospital_id vs service_id в таблице service_pricing? Разве это повторение данных? У меня уже есть эта информация в таблице Hospital_service.

(То же самое, что я имею с таблицей service_duration)

Что я думал делать, я решил добавить столбец идентификатора в таблицу отношений (hospital_service), и я буду использовать это как внешний ключ в таблице service_pricing.

Является ли это хорошим решением в моем случае? Я использую Larvel's Eloquent ORM для этого, так как я могу сказать «получить оценку обслуживания 7 больницы 2»?

EDIT: добавлена ​​дополнительная информация в таблицу service_pricing и service_duration, цена / продолжительность зависит от weight_range_id и от ее LH / SH.

Related of "Использование идентификатора таблицы отношений в других таблицах"

следует ли переписывать информацию hospital_id vs service_id в таблице service_pricing?

Вы можете, если хотите. В любом случае, это просто вопрос того, что наиболее удобно. Просто немного проще service_duration таблицам service_pricing и service_duration если ключ является одним полем вместо двух.

Разве это повторение данных? У меня уже есть эта информация в таблице Hospital_service.

Нет, это не считается избыточным, так как это ключевые значения, которые соединяют записи. Вы должны иметь значение также в внешнем ключе, чтобы установить соединение вообще.

Я использую Larvel's 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 , вам нужно будет присоединиться к этой таблице для этого запроса:

 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 

Я бы использовал такие таблицы, как:

 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