Tabelas de banco de dados para uma loja de conveniência as cinco formas normais

Tabelas de banco de dados para uma loja de conveniência as cinco formas normais
Esta é a quinta e a última parte da série, as cinco formas normais. Nesta parte da série tutorial, todas as tabelas são apresentadas com uma modificação na tabela de produtos. Como o lucro ou perda é calculado a partir do banco de dados também é explicado.

Esta série tutorial segue uma história que é a seguinte: um pai acabou de morrer e deixou algum dinheiro para seu filho. O filho decidiu investir o dinheiro em uma loja de conveniência. A loja já está abastecida e a venda de clientes já começou.

No início do negócio, tanto o filho que é o proprietário e seus funcionários, chamados funcionários desta série tutorial, não sabiam nada sobre formas normais.

Você, o leitor, concluiu esta série de cinco formulários normais e também é um desenvolvedor de banco de dados. O proprietário é seu amigo. Você visitou a loja quatro vezes, uma vez por dia, nos últimos quatro dias. Nos três primeiros dias, você ensinou o proprietário e seus funcionários sobre o 1NF, 2NF e 3NF.

Ontem, você visitou apenas o proprietário em seu escritório e o treinou no BCNF, 4NF e 5NF. Hoje, você visitou apenas o proprietário para melhorar a tabela de produtos, apresentar todas as tabelas e explicar como calcular o lucro ou a perda.

Primeiro, você recapitula as regras para todas as formas normais.

Regras de formulário normal

Em teoria, uma tabela pode ser criada e por acaso está na quinta forma normal, uma vez que cada forma normal possui regras que não devem ser violadas em oposição às regras que devem ser implementadas. No entanto, uma tabela é verificada desde o primeiro, segundo, terceiro, Boyce Codd, quarto, e para as quintas formas normais.

Uma tabela está em 1nf se nenhuma das seguintes regras for violada:

  1. Todas as colunas em uma tabela devem ter nomes de cabeçalho exclusivos.
  2. Cada célula deve ter apenas um único valor.
  3. Os valores armazenados em uma coluna devem ser do mesmo tipo.
  4. As linhas devem ser distintas.
  5. A ordem das colunas ou ordem das linhas não importa.

Uma tabela está em 2NF se nenhuma das seguintes regras for violada:

  1. A tabela já deve estar na primeira forma normal.
  2. Não deve haver dependência parcial.

Uma tabela está em 3NF se nenhuma das seguintes regras for violada:

  1. Já deveria estar na segunda forma normal.
  2. Não deve ter dependência transitiva.

Uma tabela está no BCNF se nenhuma das seguintes regras for violada:

  1. A tabela já deveria estar na terceira forma normal.
  2. Nenhum atributo não prático (coluna) deve depender de parte da chave primária composta.

Uma tabela está em 4NF se nenhuma das seguintes regras for violada:

  1. Já está na forma normal de Boyce-Codd.
  2. A tabela não tem nenhuma dependência com vários valores.

Uma tabela está em 5nf se nenhuma das seguintes regras for violada:

  1. Já está na quarta forma normal.
  2. A tabela não tem dependência de junção.

Em qualquer estágio, se a tabela não estiver em conformidade com a forma normal, a tabela será dividida para se conformar.

As mesas

Tabela de produtos

A tabela de produtos que chegamos até agora é:

Produtos (ProductId, CategoryId, SupplierId, Nome do ProductNe, UnitPrice, QuantityInstock, Reordenamento)

CategoryId e FornestierId são chaves estrangeiras que são as mesmas que as chaves primárias da tabela de categorias e da tabela de fornecedores, respectivamente.

Esta tabela está em 5nf se o price de unidade e a quantityInstock não estiverem mudando com o tempo. Até o fornecedor de um determinado produto pode mudar. No entanto, por simplicidade, a mudança de fornecedor não será abordada neste tutorial. O preço unitário para qualquer produto muda com o tempo, embora lentamente. No momento, o preço unitário de muitos produtos em todo o mundo aumentou por causa da guerra da Rússia-Ucrânia. Como clientes individuais compram em uma loja, a quantidade nas mudanças de estoque (reduz primeiro antes de serem reabastecidas). A quantidade de um determinado produto em estoque é a soma do que está na prateleira e o que está na loja (backup). Por simplicidade, essa separação não é feita nesta série de tutoriais.

Com essas colunas em mudança, esta tabela está agora em 1nf. A tabela deve ser dividida em dois, com o grupo que muda de uma maneira enquanto o resto da mesa permanece.

As tabelas de crianças se tornam:

Produtos (ProductId, CategoryId, SupplierId, ProductName, ReorderLevel)

e

ProductStates (UnitPrice, QuantityInstock)

A nova tabela é chamada de estados de produto. Precisa de seu próprio ID e o ID do produto. A tabela deve realmente ser:

ProductStates (ProductStateId, ProductId, Data, UnitPrice, QuantityInstock)

O ProductStateId é incrementado automaticamente, começando de 1. Uma coluna de data é adicionada para indicar quando a alteração ocorreu. A chave primária para a tabela ProductSates é uma chave composta que consiste em ProductStateId e ProductId. As duas tabelas estão ligadas pela coluna do ProductID. A tabela ProductStates está em 2NF, pois não há dependência parcial. Em cada uma de suas linhas, os valores de data, unitprice ou QuantityInstock determina as duas chaves. De fato, ambas as tabelas estão agora em 5NF, pois nenhuma viola nenhuma das regras de formulário normal.

Se as duas tabelas anteriores não forem mantidas em um computador com um backup, elas devem ser mantidas em um livro. A primeira metade do livro pode ter a tabela de produtos e a segunda metade pode ter a tabela Productstates. A tabela Productstates cresce com o tempo.

Uma coluna descontinuada do tipo booleano pode ser adicionada à extremidade direita da tabela de produtos para indicar se o produto foi descontinuado; isto é, a loja não lida com esse produto em particular.

As tabelas de produtos e o restante das tabelas no banco de dados estão agora na quinta forma normal.

Tabela de fornecedores

A notação da tabela para a tabela de fornecedores é:

Fornecedores (fornecedor, nome, telefone, endereço, cidade, região, código postal, país)

Se esta tabela não for mantida em um computador com backup, ela deve ser mantida em um razão. Uma coluna de data pode ser adicionada para indicar o primeiro dia em que o fornecedor ficou envolvido com a loja de conveniência. A coluna descontinuada também pode ser adicionada.

Tabela de clientes

A notação da tabela para a tabela de clientes é:

Clientes (CustomerID, Nome Customername, Telefone, Endereço, Cidade, Região, Código Post, País)

Se esta tabela não for mantida em um computador com backup, ela deve ser mantida em um razão. Uma coluna de data pode ser adicionada para indicar o primeiro dia em que o cliente ficou envolvido com a loja de conveniência.

Um clientId pode ser para transeuntes: pessoas que visitaram a cidade e estão em hotéis, turistas, turistas, etc.

Vendendo mesas

As três mesas de venda são:

Vendas (SaleId, Datesold, CustomerID, Funcionário)
Saledetails (SaleId, ProductId, UnitSellingPrice, Quantidade, Empréstimo, Desconto)
CategoryDelivery (categoryId, CustomerID, categoria, transporte)

Uma coluna de empréstimo do tipo booleano é introduzida na tabela de saledetails, caso o cliente possa ser confiável. Somente o proprietário deve autorizar os empréstimos. Na tabela de categories de entrega, uma coluna para o custo de transporte para entrega é adicionada.

Se essas tabelas não forem mantidas em um computador com backup, elas devem ser mantidas em um livro chamado Ledger de vendas. A metade esquerda do livro pode ser usada para as tabelas de vendas e saledetails (veja abaixo). A metade direita do livro pode ser usada para a tabela de distribuição de categorias.

Se as mesas forem mantidas em um livro, a tabela de saledetails seria:

Saledetails (SaleId, ProductId, UnitSellingPrice, Quantidade, Empréstimo, Desconto, Totalsold, Totallent)

Com as colunas de Totalsold e Totallent adicionado. Essas colunas devem ser preenchidas diariamente no final do dia ou semanalmente no final da semana por você, o proprietário.

Se as tabelas forem mantidas em um computador com backup, o software de banco de dados (programa) calcularia os totais.

As linhas de saledetails correspondentes à linha de vendas geralmente são mais de uma. Portanto, para a metade esquerda do livro de vendas, a página esquerda do livro aberto tem os dados de vendas, enquanto a página certa possui os dados da venda, como segue:

Tabela de vendas/saledetails

Se um cliente veio e pagou por determinados produtos e emprestou os outros, esses devem ser dois saledetails. total_sold = u.S.P x quantidade. Um cálculo semelhante é feito para total_LENT. Os grandes totais para Totasold e Totalent, para o fundo da tabela podem ser calculados no final do dia ou no final da semana ou final do mês, dependendo da frequência de vendas. Todos os totais devem ser calculados por você, o proprietário, que funciona como gerente.

Ordena tabelas

As tabelas de pedidos são:

Ordens (OrderId, Datesold, SupplierId, Funcionário)
OrderDetails (OrderId, ProductId, UnitCostprice, Quantidade, Desconto)

Se essas tabelas não forem mantidas em um computador com backup, elas devem ser mantidas em um razão chamada Ledger de compra. Nesse caso, a tabela OrderDetails deve ser:

OrderDetails (OrderId, ProductId, UnitCostPrice, Quantidade, Empréstimo, Desconto, Totalbought, Totalboust)
Com os empréstimos, totalbought e Totalbound Colunas adicionados.

Se uma loja pagou por alguns pedidos e emprestou alguns, esses devem ser dois pedidos de ordem.

Não há tabela de entrega correspondente aqui. Os registros dos pedidos e do OrderDetails devem ser feitos no livro de compra de maneira semelhante a que as vendas e saledetails sejam feitos no livro de vendas.

Todas as mesas em 5nf

Ledger de produtos

Produtos (ProductId, CategoryId, SupplierId, ProductName, ReorderLevel)
ProductStates (ProductStateId, ProductId, Data, UnitPrice, QuantityInstock)

Fornecedores Ledger

Fornecedores (fornecedor, nome, telefone, endereço, cidade, região, código postal, país)

Clientes ledger

Clientes (CustomerID, Nome Customername, Telefone, Endereço, Cidade, Região, Código Post, País)

Registro de vendas

Vendas (SaleId, Datesold, CustomerID, Funcionário)
Saledetails (SaleId, ProductId, UnitSellingPrice, Quantidade, Empréstimo, Desconto, Totalsold, Totallent)
CategoryDelivery (categoryId, CustomerID, categoria, transporte)

Ordens Ledger

Ordens (OrderId, Datesold, SupplierId, Funcionário)
OrderDetails (OrderId, ProductId, UnitCostPrice, Quantidade, Empréstimo, Desconto, Totalbought, Totalboust)

Demonstração de resultados

Uma demonstração de lucro e perda é uma demonstração financeira que mostra a receita e as despesas da empresa. Também mostra se a empresa está obtendo lucro ou perda por um determinado período. Uma declaração de lucro e perda é feita mensalmente ou trimestral. Trimestral significa a cada três meses: março, junho, setembro, dezembro. Esta declaração deve ser mantida em seu próprio livro.

Principais componentes para demonstração de lucro e perda

Esses componentes são descritos aqui com referência à loja de conveniência.

Receita

Outro nome para receita é as vendas. Esta é a primeira seção da demonstração de lucro e perda. É a quantidade de tudo o que foi vendido para esse período (total total da coluna Totalsold).

Custo dos produtos vendidos

Esta deve ser a segunda seção da demonstração de lucro e perda. É a quantidade de custo de todos os produtos vendidos para o período (total total da coluna Totalbought).

Lucro bruto

Isso é:

Lucro bruto = receita - cost_of_products

para o período.

Ganhos

Se um veículo não utilizado for vendido, isso é um ganho (ver depreciação na ilustração a seguir). O lucro de um contrato imprevisto feito pedindo e fornecendo bebidas e biscoitos para uma parte é um ganho. As atividades comerciais desse contrato não são registradas nos livros anteriores.

Despesas

A comissão que você dá a um funcionário por vender mais é um exemplo de despesa. A contribuição de pensão para um funcionário é um exemplo de despesa. As dívidas que os clientes devem que você possa ir aqui. As dívidas que você deve aos fornecedores também podem ir aqui.

Despesas com publicidade

O dinheiro pago para anunciar a loja de conveniência para estações de rádio e TV locais, mídias sociais etc.

Despesas administrativas

Os aluguéis para o apartamento da loja, salários da equipe, incluindo o seu, o proprietário (gerente), material de escritório (computadores, telefones, livros, canetas, etc.), transporte de entrega e outras despesas de viagem, etc.

Depreciação

Um computador pode ser comprado, uma prateleira foi comprada, uma mesa foi comprada, etc. Depreciação significa que você divide o custo de cada um desses equipamentos ao longo da vida útil do equipamento (até quando você não precisar mais do ativo).

Perde

O acordo de um processo de cliente é um exemplo de perda.

Ganhando (s) antes dos impostos

Ganhos_before_taxes = all_incomes - all_expense

Impostos

Qualquer imposto pago no período.

Resultado líquido

Net_income = (Receita + ganhos) - (despesas + perdas)

Para aumentar os negócios, as economias devem vir daqui.

Exemplo de demonstração de lucro e perda

O lucro líquido nesta tabela hipotética é de US $ 1000, o que é muito bom!

Conclusão

O número mínimo de tabelas com número mínimo de colunas no 5NF é apresentado no exemplo da loja de conveniência. Como determinar o lucro ou perda também é dado.

Você, o desenvolvedor do banco de dados diz: “Chegamos ao final do programa de treinamento. Nós dois temos 30 anos. Ainda temos nossas vidas (adultas) na nossa frente. Durante as férias, eu treinei você e vocês. Estou economizando dinheiro para iniciar minha própria empresa de software em cerca de dez anos a partir de agora no máximo. Eu também posso fazer instalação e rede de computadores.”

O proprietário, o filho do falecido homem, reage: “Deus disposto, vou informatizar meu negócio daqui a seis meses. Se um lucro de US $ 1000 por mês continuar após a remoção do meu salário, estarei economizando. Em um máximo de dez meses daqui a. Felizmente, daqui a seis meses, darei o contrato para comprar e instalar os computadores, colocar a rede e fazer a programação.”

O proprietário continua: “Você me conhece. Eu reservei um pouco do dinheiro que meu pai deixou para eu informatizar a loja. Agora, os britânicos dizem: “O trabalho sem jogo faz de Jack um garoto chato”. Então, eu também reservei algum dinheiro para entretenimento. Neste sábado à noite, estou convidando você para o restaurante mais caro da cidade para comer a comida mais cara e beber a bebida mais cara para celebrar nossa amizade e nossa conquista atual (treinamento).”

À noite, eles vão para o restaurante. Ao partir, eles fizeram um alto para se comunicar através de e-mails, pelo menos.