MySQL tabels entre mais de um relacionamento
-
21-12-2019 - |
Pergunta
Aqui estão as estruturas das minhas duas mesas (chaves primárias em chaves arrojadas e estrangeiras em texto itálico)
service_agreements ( id , client_id, quantidade, data_begin, duração, * services_id_1 *, * services_id_2 *, * services_id_3 *, * services_id_4 *) Serviços ( id , data_provided, descrição, Staff_Person)
A ideia por trás das tabelas é que, com base em um acordo, a empresa fornece serviço até quatro vezes. Assim, como visto, os quatro campos da tabela Service_agreements (Services_id_1, ...) possuem quatro relacionamentos separados de um para um com tabelas de serviços (campo de ID). Parece-me um pouco incomum, porque geralmente vejo apenas um relacionamento entre duas mesas. So.Eu sei se isso é incomum ou é ok, se é incomum, qual é a melhor solução (sem fundir os campos de serviços para o service_agreements. Porque as tabelas de serviços também têm alguns registros no serviço fornecido sem um acordo.) .
Solução
A estrutura pode ser ainda melhor:
.service_agreements ( id , client_id, quantidade, data_begin, duração);
Serviços ( id , data_provided, descrição, staff_person);
service_agreements_services ( id , digite enum (service1, service2 etc), service_agreement_id , service_id );
nova tabela, service_agreements_services Adicione muitos a um relacionamento entre service_agreement e serviços;
vantagens :
1) Para cada novo serviço que você fornecerá, haverá novas inserções (geralmente menos sobrecarga do que a atualização)
2) Você pode até fornecer maiores nenhum serviço :)
3) Relacionamentos de tabela ficam mais fáceis.
obrigado