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

Relacionamento entre Tabelas


Sahh

Pergunta

Pessoal estou estudando modelagem de banco de dados e mysql e delphi, e estou quebrando a cabeça a respeito da relação entre as tabelas: Estou fazendo um programinha só para cadastro de clientes, fornecedor e parceiros ( parceiros da empresa), fiz em mysql  essas 3 tabelas:

create table clientes(
empresa varchar (100) not null,
rua varchar (50) not null,
numero mediumint (5) unsigned not null,
bairro varchar (20) not null,
cidade varchar (20) not null,
pesscontato varchar (50) null,
telefone varchar (50) not null,
email varchar (50)  null,
cnpj int (15) unsigned not null,
primary key(cnpj)

); 
create table parceiros(
empresa varchar (100) not null,
rua varchar (50) not null,
numero mediumint (5) unsigned not null,
bairro varchar (20) not null,
cidade varchar (20) not null,
pesscontato varchar (50) null,
telefone varchar (50) not null,
email varchar (50)  null,
cnpj int (15) unsigned not null,
primary key(cnpj)
);

create table fornecedores(
empresa varchar (100) not null,
rua varchar (50) not null,
numero mediumint (5) unsigned not null,
bairro varchar (20) not null,
cidade varchar (20) not null,
pesscontato varchar (50) null ,
telefone varchar (50) not null,
email varchar (50)  null,
cnpj int (15) unsigned not null
);

 

Agora a minha dúvida é como relacionar elas. Como posso fazer isso? Não consigo achar nenhum atributo que eu possa fazer a relação entre elas.

Podem me ajudar?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Você poderia explicar melhor, por favor?

O que você pretende entre estas três tabelas?

Cliente é uma empresa? E fornecedor e parceiro são outras empresas distintas?

Melhor dizendo, quem são cliente, fornecedor e parceiro?

Responda e prosseguiremos daqui.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite, então..

O programa que estou tentando fazer é para uma empresa de engenharia. Os clientes são aqueles para quais executamos os serviços(projetos), e os parceiros são empresas que são contratadas também por clientes(as vezes os mesmos que nos contratam direto), e que precisam do nosso serviço(projetos, para que eles possam atender seus clientes.

Enquanto escrevia percebi que na verdade o cliente e os parceiros podem ser na mesma planilha..  E os fornecedores são aqueles que nos fornecem as peças, ou mão de obra que especificamos no projeto, o fornecedor  e o cliente são empresas distintas.

Minha dúvida é, se toda tabela tem que ter uma relacionamento, como relacionar essas duas tabelas?

Tem como eu criar um database sem que as tabelas estejam relacionadas?

A interface que eu to criando é assim, bem básica por enquanto, pois ainda estou aprendendo mesmo...

Sem título.jpg

Editado por Sahh
Link para o comentário
Compartilhar em outros sites

  • 0

Saah, vou tentar te dar uma luz.
Tenho como prática, nem sempre adotada por todos o desenvolvedores colocar o campo chave com o mesmo nome da tabela com o prefixo ide, sendo o mesmo autoincremento.
Vou colocar pouco campos no exemplo abaixo para que o post não fique por demais longo.

a) Tabela 01: (da empresa de engenharia)
Nome:
empresa

Campos:
ideEmpresa (PK)
nomEmpresa (nome da empresa)
nroCNPJ (CNPJ da empresa)

b) Tabela 02: (clientes da empresa de engenharia)
Nome:
cliente

Campos:
ideCliente (PK)
ideEmpresa (FK da tabela empresa)
nomCliente (nome do cliente)
nroCNPJ (CNPJ do cliente)

c) Tabela 03: (fornecedores da empresa de engenharia)
Nome:
fornecedor

Campos:
ideFornecedor (PK)
ideEmpresa (FK da tabela empresa)
nomFornecedor (nome do Fornecedor)
nroCNPJ (CNPJ do Fornecedor)

O campo ideEmpresa é chave estrangeira nas tabelas cliente e fornecedor e através dele você relaciona as tabelas.

Espero ter ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

Eu achei que seu eu colocasse assim, o número ideEmpresa (PK)  ia ser o mesmo da  ideEmpresa (FK da tabela empresa) ..

Como ele é autoincremento ele vai gerar um número para cada?  e ainda assim vão estar relacionados?

Eu pensei que a relação tinha quer algo como cliente - produto sabe...e que se eu colocasse id relacionado com id eles iam ser iguais...

Vida de iniciante não é fácil não....

Mais uma ajuda para resolver algo: se tiver solução: No delphi 7 os espaços aonde não estão sendo mostrados o quadro aonde estou trabalhando fica de fundo a minha área de trabalho, e toda as vezes que passo o mouse em algo da área de trabalho ele minimiza o delphi...já estou ficando louca com isso....

Tem como mudar isso?

 

Sem título.jpg

Editado por Sahh
Link para o comentário
Compartilhar em outros sites

  • 0

Oi Sahh,

Vamos ao básico.

Um banco de dados é uma coleção de tabelas(que são conjuntos, ou entidades, como queira tratar).

Cada tabela possui atributos(campos)  que qualificará cada registro da tabela(linha).

O atributo que relaciona uma tabela com outra é chamado de identificador.

Este atributo deverá ser único e sua chave deverá ser a primária.

As tabelas se relacionam com outras tabelas através de ações.

Uma ação é, normalmente, uma regra de negócio que é aplicada para que seu sistema funcione.

Existem três tipos de relacionamentos que podem ocorrer em um BD.

Relacionamento “um para um”: Quando um registro(linha) de uma tabela se relaciona com apenas um registro de outra tabela.

Relacionamento “um para muitos”: Quando um registro de uma tabela se relaciona com um ou muitos registros de outra tabela.

Relacionamento “muitos para muitos”: Quando um registro de uma tabela A se relaciona com muitos registros de uma tabela B e quando um registro da tabela B se relaciona com muitos registros da tabela A.

 

Exemplos:

Relacionamento “um para muitos”.

Imagine as tabelas Funcionários(chave primária idFuncionario) e Departamentos(chave primária idDepartamento).

A ação ou regra de negócio deste caso, diz que “um funcionário pertence a um departamento e que em um departamento pode ter vários funcionários”.  

A representação (relacionamento) será colocar um campo de idDepartamento na tabela Funcionários, que informará que aquele funcionário pertence a um Departamento.

idDepartamento é a chave primária na tabela Departamentos e chave estrangeira (FK) na tabela Funcionários. É o elemento responsável por ligar um funcionário a um departamento.

 

Relacionamento “muitos para muitos”. Para exemplificá-lo vamos usar as tabelas Produtos( chave primária idProduto) e Fornecedores(chave primária idFornecedor).

Nossa regra de negócio diz que “um produto pode ser fornecido por mais de um fornecedor e um fornecedor pode fornecer mais de um produto”.

A representação deste caso usa uma tabela auxiliar, que chamaremos ProdutosxFornecedores.  Esta tabela conterá os campos idProduto e idFornecedor.

O par ordenado (idProduto, idFornecedor) será a chave primária desta nova tabela.

 idProduto e idFornecedor serão chaves estrangeiras de produtos e fornecedores, respectivamente.

 

Em seu caso, Clientes, Parceiros e Fornecedores são entidades independentes. No decorrer do desenvolvimento de seu sistema, as ações deverá ser criadas conforme o destino que você deseja dar ao sistema.

Abaixo listei algumas ações possíveis.

Pedidos de Material;

Abertura de ordem de serviço, etc.

 

relacionamentos.png

Link para o comentário
Compartilhar em outros sites

  • 0

 No delphi 7 os espaços aonde não estão sendo mostrados o quadro aonde estou trabalhando fica de fundo a minha área de trabalho, e toda as vezes que passo o mouse em algo da área de trabalho ele minimiza o delphi.. Tem como mudar isso?

basta deixar o form do Menu maximizado ( preenchendo toda a área da tela )

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...