Jump to content
Fórum Script Brasil
  • 0

Relacionamento entre Tabelas


Sahh
 Share

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Sahh
Link to comment
Share on other 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 to comment
Share on other 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

Edited by Sahh
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...