Chave estrangeira, inserir manualmente help

6 respostas
Deluxe

Galera..
deve ser simples..
mas eu nao tenho um dominio em banco de dados bem...
vamo la
eu tenho uma tabela chamada voo, que eh associada com a tabela intinerario.. como eu fasso pra uma tabela VOO ter Varios(N) Intinerarios?
eu andei lendo tem q usar chave estrangeira... eu queria saber tb como inserir manualmente ai no insert..
Eu to inserindo manualmente para outros tipo de testes, nas tabela abaixo, apenas 1 voo pode ter 1 intinerario.. eu quero que 1 voo possa ter N intinerarios.. Obrigado

Tabelas VOO
create table voo
(
	idVoo int(10) unsigned NOT NULL auto_increment,
	numeroVoo int(10),
	idIntinerario INTEGER,

	
PRIMARY KEY (idVoo)
);
insert into  voo (numeroVoo,idIntinerario) values('11111','1');

Tabela INTINERARIO

create table intinerario
(
	idIntinerario int(10) unsigned NOT NULL auto_increment,
	numeroIntinerario int(10),
	
PRIMARY KEY (idIntinerario)
);
insert into  intinerario (numeroIntinerario) values('333');

6 Respostas

Preco

Tá, pelo q eu entendi, um vôo pode ter um ou mais itinerários, e um itinerário pode estar presente em um ou mais vôos. Isso?

Nesse caso, posso estar enganado, mas creio que a melhor solução nesse caso seria criar uma tabela associativa, para resolver o “muitos para muitos”. Uma tabela mais ou menos assim:

CREATE TABLE voo (

id_voo integer NOT NULL (PK),

numero_voo integer,

PRIMARY KEY (id_voo)

);
CREATE TABLE itinerario (

id_itinerario integer NOT NULL (PK),

numero_itinerario integer,

PRIMARY KEY (id_itinerario)

);
CREATE TABLE voo_itinerario(

id_voo integer (PfK),

id_itinerario integer (PfK),

FOREIGN KEY(id_voo) REFERENCES voo(id_voo),

FOREIGN KEY(id_itinerario) REFERENCES itinerario(id_itinerario)

);

A sintaxe não tá lá essas coisas, mas a idéia é essa

Abração o/

Deluxe

ah desculpe
1 voo pode ter N intinerarios,
e o intinerario pode estar somente em 1 voo…
como fica?
e pra inserir manualmente?
obrigado

Felagund

ehehe, tbm já passei por isso

create table voo
(
	idVoo int(10) unsigned NOT NULL auto_increment,
	numeroVoo int(10),

	
PRIMARY KEY (idVoo)
);
insert into  voo (idVoo, numeroVoo) values(1, '11111');

create table intinerario
(
	idIntinerario int(10) unsigned NOT NULL auto_increment,
	numeroIntinerario int(10),
	idVoo int(10) unsigned NOT NULL, 
PRIMARY KEY (idIntinerario),
FOREIGN KEY (idVoo) REFERENCES Voo(idVoo)  
);
insert into  intinerario (numeroIntinerario, idVoo) values('333', 1);

assim vc tem a relação de 1 Voo para N intinerarios. o voo vc insere direto na tabela intinerario, como vc pode ver no insert do voo coloquei o idVoo fixo como um para vc poder ver o exemplo, mas normalmente vc tem que buscar o Id para inserir no intinerario.

[]'s

Felagund

a

Deluxe

pow cara brigadao
e se eu tiver um outro intinerario…
como eu fasso pra inserir no mesmo voo
no caso 2 intinerario em 1 voo…

create table intinerario  
 (  
     idIntinerario int(10) unsigned NOT NULL auto_increment,  
     numeroIntinerario int(10),  
     idVoo int(10) unsigned NOT NULL,   
 PRIMARY KEY (idIntinerario),  
 FOREIGN KEY (idVoo) REFERENCES Voo(idVoo)    
 );  
 insert into  intinerario (numeroIntinerario, idVoo) values('333', 1);  
 insert into  intinerario (numeroIntinerario, idVoo) values('444', 1);

assim?

Felagund

isso mesmo, agora vc tem 2 intinerarios em 1 voo

Criado 30 de julho de 2008
Ultima resposta 30 de jul. de 2008
Respostas 6
Participantes 3