Ir para conteúdo

Recommended Posts

Olá,

Alguém pode me ajuda a fazer a modelagem corretamento de um banco de dados para um programa que realiza a venda de produtos e registro de serviços. Qual a melhor forma de eu modelar um banco aonde eu tenho uma tabela Pedido e quero adicionar a essa tabela vários Produtos e Serviços, não apenas 1 produto e 1 serviço, mas vários tipo de serviços e produtos diferentes ligados a tabela Pedido. Eu fiz um diagrama mas não tem certeza se essa é a melhor forma de fazer isso.

 

Diagrama

Diagrama_de_Classe.png 

 

Preciso de Ajuda para modelar corretamente, por favor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tem alguns anos que eu não faço isso.  Eu olhei o conteúdo de cada uma das apostilas antes de informar o link delas.

Dentro dessas apostilas, juntando todas, contém tudo de informação necessária a saber para poder se iniciar a documentação de um sistema.  O que já tem pronto é só isso? Nas apostilas informa o que falta para terminar de documentar um sistema.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma boa forma de validsr um modelo é "fazer perguntas" para ele.

 

Pegue os requisitos e veja se o modelo atende e como atende.

 

Por exemplo : 

 

O sistema permite pedir e faturar mais de um produto por pedido ?

 

O sistema permite maiscde um serviço por pedido ?

 

O sistema permite produtos e serviços no mesmo pedido ?

 

O sistema permite saber a situação de um pedido ?

 

Por aí ...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade era isso que eu quero ver, como iria ficar a implementacão do banco de dados, por exemplo:

 

Um Pedido pode ter varios Produtos e Serviços diferentes.

Um funcionário quando vai fazer um pedido pode colocar um serviço e nesse pedido com o servico ele pode adicionar varios produtos, com quantidades difrentes. 

 

Eu estou tendo problema para modelar e como fazer para implementar nas tabelas etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse cadastro  acima de Dados de pessoas,  em área de administração, as pessoas são classificadas em dois tipos:

 

Pessoa Fisica = individuo que possui um cpf e identidade RG e identidade profissional

 

Pessoa Jurídica = empresa que possui um CNPJ,  possui um registro municipal, possui um registro estadual, possui um registro no INSS, possui um registro no CAGED, possui um registro no Corpo de Bombeiros,  possui filiais, possui sócios, possui pessoas com procuração dos sócios para representar o sócio na ausência dele, possui Atas de reunião de Assembléia Geral Ordinária de eleição de sócios,  possui contrato social ou estatuto social, e algumas vezes por procuração diversas pessoas podem representar uma empresa e as filiais da empresa, e outros documentos.  

 

Desde 2013 a FEBRABAN obriga existir CPF ou CNPJ nos boletos bancários, validado junto a Receita Federal.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais dificuldades está tendo por exemplo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Motta disse:

Quais dificuldades está tendo por exemplo ?

A minha dificuldade é saber como montar as tabelas do banco de dados para funcionarem adequadamente, e se a modelagem que eu estou pensando esta correta, ex: 

Eu tenho que realizar um Pedido, (Que pode ser chamado de Venda), que registra Produtos(ex: Computador) e Serviços(ex: Conserto de Aparelhos).

E em um pedido eu posso ter vários Pedidos diferentes, com quantidades diferentes(Computador - 5 itens, mouse - 10 itens, mesa - 1 itens) e vários Serviços diferentes(Conserto de Computador, Conserto de Rádio, Conserto de Carro) em um único Pedido.

Basicamente é isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fases da Modelagem de Dados no Projeto de um Sistema (resumo me baseio em minha apostila da década de 90).

1º) Coleta de dados: ação de retirar do universo da informação os aspectos de interesse e criar um modelo de representação dos mesmos. Fazer um projeto com bases bem definidas a partir de um problema real e chegar a solução.

2º) Modelagem Conceitual = modelagem E. R. (Entidade - Relacionamento)

3º) Modelagem Lógica = matriz de dados, com uso de vetor para representar fisicamente a estrutura dos objetos.

4º) Modelagem Física = depende da máquina, é a representação fisica  (encadeamento) de um arquivo com organização sequencial (lista linear, encadeamento, chave primária, arvore)

5º) Abstração de Dados: é o conjunto de objetos  sobre os quais  queremos e podemos  fazer operações,  "não" nos interessando  saber como esses objetos são representados.  Em uma abstração de dados:   conheço os objetos,  conheço as operações e seus objetos, não sei como foram implementados.

6º) Implementação = Linguagem de Programação

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Ana Gauna disse:

Nesse cadastro  acima de Dados de pessoas,  em área de administração, as pessoas são classificadas em dois tipos:

 

Pessoa Fisica = individuo que possui um cpf e identidade RG e identidade profissional

 

Pessoa Jurídica = empresa que possui um CNPJ,  possui um registro municipal, possui um registro estadual, possui um registro no INSS, possui um registro no CAGED, possui um registro no Corpo de Bombeiros,  possui filiais, possui sócios, possui pessoas com procuração dos sócios para representar o sócio na ausência dele, possui Atas de reunião de Assembléia Geral Ordinária de eleição de sócios,  possui contrato social ou estatuto social, e algumas vezes por procuração diversas pessoas podem representar uma empresa e as filiais da empresa, e outros documentos.  

 

Desde 2013 a FEBRABAN obriga existir CPF ou CNPJ nos boletos bancários, validado junto a Receita Federal.

 

Sim, esta parte eu entendi, no diagrama de classes que eu coloquei no começo, na Tabela Cadastro_Pessoa > atributo cad_pessoa_tipo é aonde fica armazenado se é Pessoa física ou jurídica, essas informações são ligados a tabela Cadastro_Dados.

 

Assim também esta certo néh? Ou eu devo criar uma tabela separada com dados de pessoa física, jurídica, funcionario, admin, fornecedor? Faz sentido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta :

 

O Modelo permite acompanhar a variação de preços de um serviço/produto ? 

   Verá que o seu não.

 

O Modelo permite se aplicar descontos ?

.....

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, Fmix disse:

Sim, esta parte eu entendi, no diagrama de classes que eu coloquei no começo, na Tabela Cadastro_Pessoa > atributo cad_pessoa_tipo é aonde fica armazenado se é Pessoa física ou jurídica, essas informações são ligados a tabela Cadastro_Dados.

 

Assim também esta certo néh? Ou eu devo criar uma tabela separada com dados de pessoa física, jurídica, funcionario, admin, fornecedor? Faz sentido?

 
 
 

 

Eu acho que teria que ter uma tabela para a pessoa fisica, uma tabela para a pessoa juridica,  depois da tabela criada, identificava quem é essa pessoa fisica (cliente, médico, advogado, sócio de empresa, procurador de empresa, contador, auditor, etc), e na tabela de pessoa juridica identificava depois quem é essa pessoa juridica (se é um cliente, fornecedor de que material, se é fornecedor de que tipo de serviços, se é fabricante de qual equipamento,  se é fabricante de qual software, identifica pelo cnpj quais empresas são as filiais dessa empresa, quem são os sócios da empresa, quem são os procuradores da empresa, etc), porque quando aparece algum problema a ser resolvido a pessoa que controla a emissão de notas fiscais, faturas, boletos, tem que saber quem é a pessoa correta que ele tem que falar para poder resolver o problema com algum pagamento ou recebimento ou orçamento.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Ana Gauna disse:

 

Eu acho que teria que ter uma tabela para a pessoa fisica, uma tabela para a pessoa juridica,  depois da tabela criada, identificava quem é essa pessoa fisica (cliente, médico, advogado, sócio de empresa, procurador de empresa, contador, auditor, etc), e na tabela de pessoa juridica identificava depois quem é essa pessoa juridica (se é um cliente, fornecedor de que material, se é fornecedor de que tipo de serviços, se é fabricante de qual equipamento,  se é fabricante de qual software, identifica pelo cnpj quais empresas são as filiais dessa empresa, quem são os sócios da empresa, quem são os procuradores da empresa, etc), porque quando aparece algum problema a ser resolvido a pessoa que controla a emissão de notas fiscais, faturas, boletos, tem que saber quem é a pessoa correta que ele tem que falar para poder resolver o problema com algum pagamento ou recebimento ou orçamento.

 

 

Ana Gauna, você quis dizer assim:

 

ER.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faço pra relaciona a tabela pedido_item só com 1 produto OU 1 serviço?

E também como eu relaciono a tabela pessoa com apenas 1 pessoa_fisica OU 1 pessoa_juridica?

ER.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º passo:  alguém faz um pedido

2º  passo: tem que identificar quem fêz o pedido, um indivíduo (pessoa fisica) ou uma empresa (pessoa juridica)

3º passo:  tem que ligar a pessoa ao pedido de serviço ou pedido de produtos (ou ambos).

4º passo: tem que identificar que tipo de pedido foi feito, se foi  de pedido de produtos ou se foi de serviços.

 

Se conferir todos os graficos que fêz, notei que tem informações que não estão em  comum em todos.

Cada tipo de gráfico de modelagem de dados as os campos de dados tem que ter algo em comum.

Nesse ultimo que fêz faltou o item de tabela pessoa-dados para ligar a pessoa juridica e pessoa fisica.

Nesse último grafico olha como fêz no anterior, o item serviço, produto e pedido-item, compara eles.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei online uma explicação melhor para entender o Modelo Entidade-Relacionamento = http://www.inf.ufsc.br/~r.fileto/Disciplinas/INE5423-2010-1/Aulas/02-MER.pdf

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

Depois, com essa ajuda, estou conseguindo implementar o banco de dados de uma melhor forma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada.

A FEBRABAN este ano de 2017 está fazendo alteração nas regras de boleto bancário vencido, de inadimplentes, em rotina de sistema bancário junto com o Banco Central do Brasil. Até o final deste ano de 2017 várias regras terão alteração.

https://portal.febraban.org.br/pagina/3150/1094/pt-br/servicos-novo-plataforma-boletos

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Vagner Nunes
      Prezados,
       
      Tenho um ambiente, que tem cerca de uns 80 sites publicados, o problema que está ocorrendo, que além da lentidão, hora aparece a mensagem A connection attempt failed because the connected party did nor properly respond a period of time, or established connection failed because connected host has failed to respond. 
       
      Neste ambiente, as minhas páginas são em ASP.NET com C#, com conexão ao banco de dados MySql.
       
      Não sei como proceder nesta situação, poderiam me ajudar?
       

       
    • Por Fábio.info7
      Olá pessoal, estou precisando de uma grande ajuda, tenho duas tabelas no postgres, são elas: PESSOA e a outra é  ENDERECOS, elas estão relacionadas, oq acontece é que no php eu preciso recuperar o valor do id através da função nextval('nome_da_sequnce'), e não estou sabendo fazer, preciso recuperar o ultimo id e depois realizar o insert nas tabelas relacionadas, poderiam me dar um exemplo de como implementar isso? abaixo deixo o meu codigo php, acredito que esteja errado pois não esta gravando no banco.
       
      Minhas tabelas do banco: CREATE TABLE public.pessoa ( codigo_aluno integer NOT NULL DEFAULT nextval('pessoa_codigo_aluno_seq'::regclass), cpf character varying(11) COLLATE pg_catalog."default" NOT NULL, nome character varying(30) COLLATE pg_catalog."default" NOT NULL, sexo character varying(30) COLLATE pg_catalog."default" NOT NULL, nascimentodata date NOT NULL, email character varying(50) COLLATE pg_catalog."default" NOT NULL, endereco integer, CONSTRAINT pessoa_pkey PRIMARY KEY (codigo_aluno), CONSTRAINT pessoa_endereco_fkey FOREIGN KEY (endereco) REFERENCES public.enderecos (codigo_endereco) ) CREATE TABLE public.enderecos ( codigo_endereco integer NOT NULL DEFAULT nextval('enderecos_codigo_endereco_seq'::regclass), logradouro character varying(200) COLLATE pg_catalog."default" NOT NULL, bairro character varying(80) COLLATE pg_catalog."default" NOT NULL, cidade character varying(100) COLLATE pg_catalog."default" NOT NULL, uf character varying(2) COLLATE pg_catalog."default" NOT NULL, cep character varying(20) COLLATE pg_catalog."default" NOT NULL, CONSTRAINT enderecos_pkey PRIMARY KEY (codigo_endereco) ) ****** ABAIXO O PHP *************************************** <?php try { require_once "conexao.php"; $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); $sql = "select nextval('pessoa_codigo_aluno_seq')"; $seq = $conn->prepare($sql); $id = $seq->execute(); $id = $seq->fetchAll(PDO::FETCH_ASSOC); $sql = "insert into pessoa (cpf, nome, sexo, nascimentodata, email, endereco ) values (:cpf, :nome, :sexo, :nascimentodata, :email, :fk_endereco )"; $inserir = $conn->prepare($sql); $inserir->bindParam(":cpf", $dados["cpf"]); $inserir->bindParam(":nome", $dados["nome"]); $inserir->bindParam(":sexo", $dados["sexo"]); $inserir->bindParam(":nascimentodata", $dados["nascimentodata"]); $inserir->bindParam(":email", $dados["email"]); $inserir->bindParam(":fk_endereco", $id['codigo_endereco']); $inserir->execute(); // Gravando dados de endereço $sql_end = "insert into enderecos (codigo_endereco, logradouro, bairro, cidade, uf, cep, pessoa )values(:codigo_endereco, :logradouro,:bairro,:cidade,:uf,:cep, :pessoa)"; $end = $conn->prepare($sql_end); $end->bindParam(":codigo_endereco", $id['codigo_endereco']); $end->bindParam(":logradouro", $dados["logradouro"]); $end->bindParam(":bairro", $dados["bairro"]); $end->bindParam(":cidade", $dados["cidade"]); $end->bindParam(":uf", $dados["uf"]); $end->bindParam(":cep", $dados["cep"]); $end->execute(); echo "Dados gravados com sucesso!"; } catch (Exception $e) { echo "Mensagem: " . $e->getMessage() . "<br/>"; echo "Linha do Erro: " . $e->getLine() . "<br/>"; } PRECISO CONSEGUIR INSERIR OS DADOS NAS DUAS TABELAS INSERINDO OS IDS RECUPERADOS PELO NEXTVAL()
    • Por luisfeliperm2
      Quero selecionar 10 noticias do banco de dados, irei utilizar paginação, então na próxima pagina será selecionada da 11-20, 21-30. Só que em todos esses select eu quero que venha a noticia principal que é definida pela coluna "destaque".  O motivo é que eu não quero usar 2 select pra buscar noticias.
      Pra ser bem resumido, eu quero selecionar a noticia principal e depois selecionar mais 10 que podem ser qualquer uma
       
      Tentei da seguinte forma:
      select * from news where destaque = true UNION select * from news ORDER BY id DESC LIMIT 10 OFFSET 1;
    • Por cleitonkloc
      Olá, estou desenvolvendo um banco de dados para coletar informações e relatar para a Diretoria as despesas e custos dos veículos.
      Estou um pouco enferrujado, devido minha área atualmente ser a contabilidade.
       
      Preciso que quando informado a Placa do veículo ao descer para o próximo input seja informado o tipo de combustível que aquele veículo utiliza (variando entre Gasolina e Diesel) puxando do cadastro do veículo.
      Por exemplo: Selecionei a placa MMA5554 e ao descer para o próximo input ou na hora que selecionar a placa ele busca no bando de dados e informa o tipo de combustível (para evitar erro no lançamento e facilitar o registro).
      <label>VEÍCULO:</label><br/> <select class="campo_digitar" name="veiculo"> <option>-- Selecione --</option> <?php $consultasql = "SELECT * FROM kloc_panelcontrol.veiculo order by id "; $lista_empresa = $con->query($consultasql); while ($dados = $lista_empresa->fetch()) { ?> <option value="<?php echo $dados['id'];?>"><?php echo $dados['placa'];?></option> <?php } ?> </select><br/> <label>TIPO DE COMBUSTÍVEL:</label><br/>  
    • Por rafaelwww
      Sou novo no fórum e essa é a minha primeira postagem.
      não sei se essa é área apropriada para esse tipo de postagem, mas vamos lá eu tenho um site e queria criar uma opção no qual o usuário poderia gravar um áudio que seria salvo em um banco de
      dados, mas não tenho ideia de como fazer isso se existe uma API que faça isso . 
      Peço por gentileza se alguém pudesse me dar uma dica.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.