Array
(
)

Duvida na criação de foreign key

Tadeu Costa
   - 18 ago 2013

Bom dia galera sou novo no fórum e tambem no sql.
Bem vamos la ..
Galera precisava fazer a conexão de uma tabela com a outra vou colocar como montei aqui.
Estarei colocando o nome da tabela e os campos ok?
Tentei ate criar um campo a + só para a foreign key.
esta assim:
create table cliente
(
cod_cliente int primary key identity (1,1),
nomecliente varchar (30),
RG varchar (15),
CPF varchar (15),
Telefone varchar (20),
Celular varchar (20),
Rua varchar (30),
Bairro varchar (30),
Municipio varchar(30),
Estado varchar (2),
)
---------------------------------------------------------------------
create procedure salvados
@nomecliente varchar (30),
@RG varchar (15),
@CPF varchar (15),
@Telefone varchar (20),
@Celular varchar (20),
@Rua varchar (30),
@Bairro varchar(30),
@Municipio varchar (30),
@Estado varchar (2)
As
insert into cliente (nomecliente,RG,CPF,Telefone,Celular,Rua,Bairro,Municipio,Estado) values (@nomecliente,@RG,@CPF,@Telefone,@Celular,@Rua,@Bairro,@Municipio,@Estado)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create procedure alterados
@cod_cliente int,
@nomecliente varchar (30),
@RG varchar (15),
@CPF varchar (15),
@Telefone varchar (20),
@Rua varchar (30),
@Bairro varchar (30),
@municipio varchar(30),
@Estado varchar (2)
as
update cliente set nomecliente=nomecliente,RG=RG,CPF=CPF,Telefone=Telefone,Rua=Rua,Bairro=Bairro,Municipio=Municipio,Estado=Estado
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
create procedure deletar
@cod_cliente int
as
delete cliente where cod_cliente=@cod_cliente
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Create table ordem_serviço
(
cod_serviço int primary key identity (1,1),
numero_de_serie varchar (20),
nome_componente varchar (25),
nomedofabricante varchar (20),
defeito varchar (20),
datadeentrada date,
datadesaida date,
prazoprevisto date,
valordoserviço money,
andamento varchar (10)
constraint fk_cod_cli foreign key (cod_serviço) references cliente (cod_cliente)
)

create procedure salveordem
@numero_de_serie varchar(20),
@nome_componente varchar (25),
@nomedofabricante varchar(20),
@defeito varchar (20),
@datadeentrada date,
@datadesaida date,
@prazoprevisto date,
@valorserviço money,
@Nome_cliente varchar (30),
@andamento varchar(10)
As
insert into ordem_serviço(numero_de_serie,nome_componente,nomedofabricante,defeito,datadeentrada,datadesaida,prazoprevisto,valordoserviço,andamento) values (@numero_de_serie,@nome_componente,@nomedofabricante,@defeito,@datadeentrada,@datadesaida,@prazoprevisto,@valorserviço,@andamento)
create procedure alteraordem
@cod_serviço int,
@numero_de_serie varchar(20),
@nome_componente varchar (25),
@nomedofabricante varchar(20),
@defeito varchar (20),
@datadeentrada date,
@datadesaida date,
@prazoprevisto date,
@andamento varchar(15)

As
update ordem_serviço set numero_de_serie=numero_de_serie,nome_componente=nome_componente,nomedofabricante=nomedofabricante,defeito=defeito,datadeentrada=datadeentrada,datadesaida=datadesaida,prazoprevisto=prazoprevisto,andamento=andamento where cod_serviço=@cod_serviço
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create procedure deleteordem
@cod_serviço int
As
delete ordem_serviço where cod_serviço =@cod_serviço
---------------------------------------------------------------------------
create table fornecedor
(
cod_fornecedor int primary key identity (1,1),
razaosocial varchar (30),
nomefantasia varchar (30),
datacadastro date,
telefone varchar (20),
fax varchar (15),
cnpj_cpf varchar (15),
endereço varchar (30),
bairro varchar (20),
cidade varchar (30),
estado varchar (2),
cep varchar (15),
banco varchar (20),
agencia int ,
conta varchar (30),
nome_transportadora varchar(30),
fkdeproduto int
)
alter table fornecedor
add constraint fk_codigo_produto foreign key (cod_fornecedor) references produto (codigo_produto)

create table produto
(
codigo_produto int primary key identity(1,1),
cod_fornecedor int,
datadecadastro date,
descrição_produto varchar (40),
fkcod_receb int
)
alter table produto
add constraint fk_cod_produto foreign key (cod_receb) references produto(codigo_produto)

create table contasapagar
(
cod_apagar int primary key identity (1,1),
datavenc date,
numerodocumento int ,
valor money,
tipo varchar (5),
fk_codigo_produto int
)
alter table contasapagar
add constraint fk_cod_pagar foreign key (codigo_produto) references contasapagar(cod_pagar)
create table contasareceber
(
cod_receb int primary key identity (1,1),
datareceb date,
doc_num int,
valor money,
datavencim date,
datarecebi date,
observação varchar (40),
fk_cod_serviço int
)
alter table contasareceber
add constraint fk_cod_serviço foreign key (cod_serviço) references contasareceber(cod_receb)
Então galera ate a ordem parece funcionar mais não sei se esta certo.
Peço sugestões de como poderia fazer.
Agradeço desde já.

Tiago
|
MVP
Pontos: 120
    18 ago 2013

Bom dia,

Minha sugestão é que siga estes passos:

1-- Oque seria uma chave estrangeira? isso é a primeira pergunta que precisa fazer, entenda o seu funcionamento e veja se consiga aplicar no domínio que está trabalhando.

2- Como criar referencias de uma tabela para outra? Eu conheço duas formas, uma você pode fazer via comando mesmo SQL e outra pelo query designer, a vantagem desta ultima é que o código é gerado para você automaticamente.

3- Para garantir realize alguns comandos inserts para testar a integridade das tabelas;

Espero ter ajudado.

Roniere Almeida
   - 06 set 2013

isso é extramente importante, antes de mais nada planejar como o nosso amigo acima citou...dados é algo que requer muitos cuidados.

Tiago
|
MVP
Pontos: 120
    06 set 2013

Os dados são a base, se isso está errado com certeza a programação segurá de forma errada.. Aconselho que desenhe,rabisque o fluxo várias vezes, para ter total entendimento do negócio;

Roniere Almeida
   - 07 set 2013

Entidade Relacionamento?

Tiago
|
MVP
Pontos: 120
    07 set 2013

Isso. Também é interessante conhecer o fluxo básico e alternativos do sistrema, tendo isto é possível avaliar a necessidade de alguns campos e relacionamentos.

Roniere Almeida
   - 07 set 2013

o que seria esse fluxo basico e alternativos?

Tiago
|
MVP
Pontos: 120
    07 set 2013

Bom isso são termos da análise de requisitos. Fluxo básico é o fluxo comum do processo e os fluxos alternativos são as acões em que o ator pode ou não fazer..

O que isso tem a ver com a modelagem de dados? Bom uma vez que o fluxo do sistema está bem entendido, fica mais claro para o analista quais tabelas e campos serão necessários.

Resumindo: É preciso entender do negócio antes de começar a modelagem.

Vinicius Oliveira
   - 08 set 2013

Prezados,

Concordo com todas as informações citadas.

Para criar uma foreign key a tabela Pai deve ter uma chave primária, a qual é usada para se referir à tabela filho.

Vinicius Oliveira
   - 08 set 2013

Prezados,

Concordo com todas as informações citadas.

Para criar uma foreign key a tabela Pai deve ter uma chave primária, a qual é usada para se referir à tabela filho.

Roniere Almeida
   - 09 set 2013


Citação:
Bom isso são termos da análise de requisitos. Fluxo básico é o fluxo comum do processo e os fluxos alternativos são as acões em que o ator pode ou não fazer..

O que isso tem a ver com a modelagem de dados? Bom uma vez que o fluxo do sistema está bem entendido, fica mais claro para o analista quais tabelas e campos serão necessários.

Resumindo: É preciso entender do negócio antes de começar a modelagem.



blz, entendido, na faculdade, essa parte da modelagem é bem extensa. bastante exercicios para fixar.

Tiago
|
MVP
Pontos: 120
    09 set 2013

#Código

blz, entendido, na faculdade, essa parte da modelagem é bem extensa. bastante exercicios para fixar.



Hehe e como... me lembro que não gostava muito, mas hoje vejo o quanto é necessário ter o conhecimento base do projeto.

Alex Lekao
   - 10 set 2013

eu estou vendo especificamente a respeito destas coisas na Faculdade nas aulas de LPBD... e to gostando eh bem interessante.

Normalizacao e tal... muuuuito loko o negocio e gostoso de analisar, trabalhoso... mas gostoso.. rsrsr