Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) phpmyadmin Relacionamento entre tabelas


maujaffar

Pergunta

Olá pessoal, estou com um problema para relacionar as tabelas no MySQL. Eu fiz como sabia no SQL Server, só que na hora de relacionar chave estrangeira com chave primária, a "sintaxe"

(chave estrangeira da tabela 2) int foreign key references (tabela 1) (chave primária)
só funciona mesmo no SQL Server, mas no MySQL parece que é diferente. Pesquisei em vários sites, mas as explicações não estão de forma clara. Como seria o relacionamento para que eu possa passar o seguinte BD para MySQL?
create database aeroporto;
use aeroporto;

create table avioes (
cod_aviao int primary key,
nome varchar (10)
);

create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int foreign key references avioes (cod_aviao)
);

create table assentos (
cod_ass int primary key,
numero_ass int not null,
cod_aviao int foreign key references avioes (cod_aviao)
);

create table estados (
cod_state int primary key,
sigla char (4) not null
);

create table cidades (
cod_city int primary key,
nome varchar (50) not null,
cod_state int foreign key references estado (cod_state)
);

create table passageiros (
cod_pass int primary key,
cpf varchar (15),
nascimento datetime,
nome varchar (50),
telefone varchar (16),
endereco varchar (50),
cod_city int foreign key references cidades (cod_city)
);

create table aeroportos (
cod_aero int primary key,
nome varchar (20) not null,
cod_city int foreign key references cidades (cod_city)
);

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'maujaffar'!

A sintaxe é diferente.

Declare o campo normalmente e, depois, quando você for descrever os incices, declare a constraint.

Exemplo:

create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int 
constraint <nome_da_constrint> foreign key (cod_aviao) references avioes (cod_aviao)
);

Link para o comentário
Compartilhar em outros sites

  • 0

Eu declarei a constraint, daí ficou assim:

create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int,
constraint vooaviao foreign key cod_aviao references avioes cod_aviao
);
Só que o MySQL retornou essa mensagem: "ERROR 1064: You have an error in your SQL syntax near 'references avioes cod_aviao )' at line 8" Então eu tirei aquela vírgula do "cod_aviao int":
create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int
constraint vooaviao foreign key cod_aviao references avioes cod_aviao
);

E o MySQL retornou esse pau: "ERROR 1064: You have an error in your SQL syntax near 'constraint vooaviao foreign key cod_aviao references avioes cod_aviao

)' at line 8"

Então, estou começando em SQL server, e iniciante em MySQL, devo ter errado na declaração da constraint? Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi,'maujaffar'

Você já criou a tabela avioes?

Ela deve ser criada antes desta senão dá erro.

Declare assim:

create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int,
constraint vooaviao foreign key (cod_aviao) references avioes (cod_aviao)
);

Link para o comentário
Compartilhar em outros sites

  • 0

Agora deu certo!!!, né?, obrigado: "Query OK, 0 rows affected (0.01 sec)", ficou assim:

create table avioes (
cod_aviao int primary key,
nome varchar (10)
);

create table voos (
cod_fly int primary key,
data_entrada datetime,
data_saida datetime,
hora_entrada time,
hora_saida time,
cod_aviao int,
constraint vooaviao foreign key (cod_aviao) references avioes (cod_aviao)
);

muito obrigado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...