У меня есть 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.
следует ли переписывать информацию 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