Relacionamento de tabelas no MYSQL (Chave estrangeira)
23/06/2016
0
Gostaria de saber como adicionar valores em uma tabela que possui uma chave estrangeira:
Ex.: A tabela empresa contem os dados cadastrais da empresa X com uma chave primaria (Id_Empresa) a tabela serviços possui os serviços prestados pela empresa X com a chave primaria (Id_Servico) e uma chave estrangeira (Id_Empresa) relacionando assim as duas tabelas. Porém como montar o Insert ?
Ex.: A tabela empresa contem os dados cadastrais da empresa X com uma chave primaria (Id_Empresa) a tabela serviços possui os serviços prestados pela empresa X com a chave primaria (Id_Servico) e uma chave estrangeira (Id_Empresa) relacionando assim as duas tabelas. Porém como montar o Insert ?
Kamila Costa
Curtir tópico
+ 0
Responder
Post mais votado
23/06/2016
Boa noite Kamila.
A proposito seria uma tabela 1:n ou n:n ?
Exemplo uma empresa possui 1:N serviços e serviços possui 0:N se for mais ou menos assim temos uma cardinalidade n:n eu faria da seguinte forma.
OBS: A TABELA N:N SÓ IRIA ACEITAR OS DADOS ESTRANGEIRO SE OS MESMO EXISTISSEM EM SUA PROPRIA TABELA
Agora se seu grau de relacionamento e de 1:N, exemplo:
1 empresa possui 0:1 serviço e serviço possui 0:n empresa, a chave estrangeira fica na tabela servico ai o insert ficaria assim.
Porem só iria funcionar se na tabela empresa existisse uma empresa com o codigo 1
A proposito seria uma tabela 1:n ou n:n ?
Exemplo uma empresa possui 1:N serviços e serviços possui 0:N se for mais ou menos assim temos uma cardinalidade n:n eu faria da seguinte forma.
// crio a tabela empresa CREATE TABLE EMPRESA( ID_EMPRESA INT(5) UNSIGNED NOT NULL AUTO_INCREMENT, RAZAO_SOCIAL VARCHAR(20) NOT NULL, PRIMARY KEY(ID_EMPRESA) )ENGINE=InooDB; //crio a tabela serviços CREATE TABLE SERVICOS( ID_SERVICO INT(5) UNSIGNED NOT NULL AUTO_INCREMENT, DESCRICAO VARCHAR(2), PRIMARY KEY(ID_SERVICO) )ENGINE=InnoDB; // agora crio a tabela n:n caso seja este o caso CREATE TABLE SERVICO_EMPRESA( ID_SERVICO INT(5)UNSIGNED NOT NULL, ID_EMPRESA INT(5)UNSIGNED NOT NULL )ENGINE=InnoDB; // implento as constraint ALTER TABLE TABELA_SERVICO ADD CONSTRAINT 'NOME DA USA CONSTRAINT' FOREIGN KEY(ID_SERVICO) REFERENCES SERVICOS(ID_SERVICO); ALTER TABLE TABELA_SERVICO ADD CONSTRAINT 'NOME DA USA CONSTRAINT' FOREIGN KEY(ID_EMPRESA) REFERENCES EMPRESA(ID_EMPRESA); AI FICARIA ASSIM TABELA EMPRESA: INSERT INTO EMPRESA(ID_EMPRESA,RAZAO_SOCIAL) VALUES( 1,'MERCADAO'); TABELA SERVICOS: INSERT INTO SERVICOS(ID_SERVICO,DESCRICAO) VALUES (1, 'LIMPEZA'); TABELA N:N SERVICO_EMPRESA: INSERT INTO SERVICO_EMPRESA(ID_SERVICO, ID_EMPRESA) VALUES (1,1);
Agora se seu grau de relacionamento e de 1:N, exemplo:
1 empresa possui 0:1 serviço e serviço possui 0:n empresa, a chave estrangeira fica na tabela servico ai o insert ficaria assim.
INSERT INTO SERVICO(ID_SERVICO, DESCRICAO, ID_EMPRESA) VALUES (1,'LIMPEZA',1);
Porem só iria funcionar se na tabela empresa existisse uma empresa com o codigo 1
Bruno
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)