Forum Pplware
Sql (ajuda) - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Sql (ajuda) (/showthread.php?tid=10185)



Sql (ajuda) - Article0 - 21-11-2011 12:05

Bom dia,

Ando a testar umas coisas em sql, no sql server 2008 r2 e tenho um problema.

Ao fazer as relações com as tabelas da-me um erro. Fui pesquisar e penso que é assim, mas se nao for ajudem-me por favor.


create table restaurantes(
cod_restaurante int constraint pkCODrestaurante primary key,
nome varchar(20),
cidade varchar(20),
cod_cidade int constraint relac_01 references cidades(cod_cidade),
cod_empregado int constraint relac_02 references empregados(cod_empregado)
)

create table cidades(
cod_cidade int constraint pkCODcidade primary key,
nome varchar(20),
cod_empregado int constraint relac_03 references empregados(cod_empregado),
cod_restaurante int constraint relac_04 references restaurantes(cod_restaurante)
)

create table empregados(
cod_empregado int constraint pkCODempregado primary key,
nome varchar(20),
data_nascimento date,
cidade varchar(20),
cod_restaurante int constraint relac_05 references restaurantes(cod_restaurante),
sexo varchar(20)
)

cumprimentos,

Article0


RE: Sql (ajuda) - Caça - 21-11-2011 14:24

E qual é o erro?


RE: Sql (ajuda) - Article0 - 21-11-2011 14:49

Diz que a tabelas no que faço as relações nao existem. Posso fazer as relações depois de criar as tabelas? Com o Alter?


RE: Sql (ajuda) - Caça - 21-11-2011 19:54

As relações devem ser feitas através do Alter Table, depois de as tabelas estarem criadas.


RE: Sql (ajuda) - Article0 - 22-11-2011 12:47

Ja consegui resolver. Primeiro criei as tabelas

create table restaurantes(
cod_restaurante int identity primary key,
nome varchar(20),
cidade varchar(20),
cod_cidade int,
cod_empregado int
)



create table cidades(
cod_cidade int identity primary key,
nome varchar(20),
cod_empregado int,
cod_restaurante int,
)



create table empregados(
cod_empregado int identity primary key,
nome varchar(20),
data_nascimento date,
cidade varchar(20),
cod_restaurante int,
sexo varchar(20)
)


E depois crei as relaçóes a parte com um diagrama. Aproveitei essa ferramenta do sql server 2008 r2.

Obrigado pelas ajudas

cumprimentos,

Article0


RE: Sql (ajuda) - Korobase - 24-02-2012 00:39

Apesar da já teres encontrado uma solução deixo-te outra sugestão.

As relações entre as tabelas pode e deve ser definida a quando da criação das tabelas.

Por exemplo a relação entres esta duas tabelas que forneces-te,

create table restaurantes(
cod_restaurante int constraint pkCODrestaurante primary key,
nome varchar(20),
cidade varchar(20),
cod_cidade int constraint relac_01 references cidades(cod_cidade),
cod_empregado int constraint relac_02 references
empregados(cod_empregado)
)

create table cidades(
cod_cidade int constraint pkCODcidade primary key,
nome varchar(20),
cod_empregado int constraint relac_03 references
empregados(cod_empregado),
cod_restaurante int constraint relac_04 references
restaurantes(cod_restaurante)
)

pode ser feita com a criação de outra tabela que é na verdade uma relação.
Neste caso poderia ser uma tabela com o nome "contem" em que referências as chaves primarias das tabelas "cidades" e "restaurantes" com chaves estrangeiras da tabela "contem".

exemplo:

create table contem(
cod_Cid int not null primary key,
cod_res int not null,
foreign key(cod_Cid) references cidade(cod_cidade),
foreign key(cod_res) references restaurante(cod_restaurante)

)

Fica este exemplo então de com definir as relações, que na minha opinião é a correta.

Espero que te seja útil.