Tabelle di database per un negozio di alimentari i cinque moduli normali

Tabelle di database per un negozio di alimentari i cinque moduli normali
Questa è la quinta e ultima parte della serie, le cinque forme normali. In questa parte della serie di tutorial, tutte le tabelle sono presentate con una modifica nella tabella dei prodotti. Viene anche calcolato il profitto o la perdita dal database.

Questa serie di tutorial segue una trama che è la seguente: un padre è appena morto e ha lasciato un po 'di soldi per suo figlio. Il figlio ha deciso di investire i soldi in un negozio di alimentari. Il negozio è già rifornito e la vendita ai clienti è già iniziata.

All'inizio del business, sia il figlio che è il proprietario che i suoi dipendenti, chiamato Clerks in questa serie di tutorial, non sapeva nulla delle normali forme.

Tu, il lettore, ha completato questa serie di tutorial da cinque normali e sei anche uno sviluppatore di database. Il proprietario è tuo amico. Hai visitato il negozio quattro volte, una volta al giorno, negli ultimi quattro giorni. Nei primi tre giorni, hai insegnato sia al proprietario che ai suoi dipendenti il ​​1NF, il 2NF e il 3NF.

Ieri, hai visitato solo il proprietario nel suo ufficio e lo hai addestrato sul BCNF, 4NF e 5NF. Oggi hai visitato solo il proprietario per migliorare la tabella dei prodotti, presentare tutte le tabelle e spiegare come calcolare il profitto o la perdita.

Innanzitutto, ricapitoli le regole per tutte le forme normali.

Regole di forma normale

In teoria, una tabella può essere creata e sembra essere nella quinta forma normale, poiché ogni forma normale ha regole che non dovrebbero essere violate rispetto alle regole che dovrebbero essere implementate. Tuttavia, una tabella viene controllata dal primo, secondo, terzo, boyce Codd, quarto e alla quinta forma normale.

Una tabella è nel 1NF se nessuna delle seguenti regole viene violata:

  1. Tutte le colonne di una tabella dovrebbero avere nomi di intestazione univoci.
  2. Ogni cella deve avere un solo valore.
  3. I valori memorizzati in una colonna dovrebbero essere dello stesso tipo.
  4. Le righe dovrebbero essere distinte.
  5. L'ordine delle colonne o dell'ordine delle righe non ha importanza.

Una tabella è nel 2NF se nessuna delle seguenti regole viene violata:

  1. La tabella deve essere già nella prima forma normale.
  2. Non ci deve essere dipendenza parziale.

Una tabella è in 3NF se nessuna delle seguenti regole viene violata:

  1. Dovrebbe essere già nella seconda forma normale.
  2. Non dovrebbe avere dipendenza transitiva.

Una tabella è in BCNF se nessuna delle seguenti regole viene violata:

  1. La tabella dovrebbe essere già nella terza forma normale.
  2. Nessun attributo non prime (colonna) dovrebbe dipendere da parte della chiave primaria composita.

Una tabella è in 4NF se nessuna delle seguenti regole viene violata:

  1. È già in forma normale di Boyce-Codd.
  2. La tabella non ha alcuna dipendenza multi-valore.

Una tabella è in 5NF se nessuna delle seguenti regole viene violata:

  1. È già nella quarta forma normale.
  2. La tabella non ha la dipendenza.

In qualsiasi fase, se la tabella non è conforme alla forma normale, la tabella è divisa per essere conforme.

Le tavole

Tabella dei prodotti

Il tavolo dei prodotti che siamo arrivati ​​finora è:

Prodotti (ProductID, CategoryId, SupplierId, ProductName, UnitPrice, QuantityInstock, ReorderLevel)

CategoryId e SupplierId sono chiavi estere che sono le stesse delle chiavi principali della tabella delle categorie e della tabella dei fornitori, rispettivamente.

Questa tabella è in 5NF se l'unità e la quantità diinstock non cambiano con il tempo. Anche il fornitore di un particolare prodotto può cambiare. Tuttavia, per semplicità, il cambiamento del fornitore non sarà affrontato in questo tutorial. Il prezzo unitario per eventuali cambiamenti nel tempo, sebbene lentamente. In questo momento, il prezzo unitario per molti prodotti in tutto il mondo è aumentato a causa della guerra Russia-Ukraine. Poiché i singoli clienti acquistano da un negozio, la quantità di cambi di stock (si riduce prima di essere riforniti). La quantità di un particolare prodotto in magazzino è la somma di ciò che è sullo scaffale e di ciò che è nel negozio (backup). Per semplicità, questa separazione non è fatta in questa serie di tutorial.

Con queste colonne mutevoli, questa tabella è ora in 1NF. Il tavolo deve essere diviso in due, con il gruppo che cambia in un modo mentre il resto del tavolo rimane.

I tavoli dei bambini diventano:

Prodotti (ProductID, CategoryId, SupplierId, ProductName, ReorderLevel)

E

ProductStates (UnitPrice, QuantityInstock)

La nuova tabella si chiama-State di prodotto. Ha bisogno del proprio ID e dell'ID prodotto. Il tavolo dovrebbe effettivamente essere:

ProductStates (ProductStateId, ProductID, Date, UnitPrice, QuantityInstock)

ProductStateID è automatico automatico, a partire da 1. Viene aggiunta una colonna di data per indicare quando è avvenuta la modifica. La chiave primaria per la tabella ProductStates è una chiave composita costituita da ProductStateId e ProductID. Le due tabelle sono collegate dalla colonna ProductID. La tabella ProductStates è in 2NF poiché non esiste una dipendenza parziale. In ciascuna delle sue righe, i valori di data, unità di unità o quantita. In effetti, entrambe le tabelle sono ora nel 5NF, poiché nessuno viola nessuna delle normali regole della forma.

Se le due precedenti tabelle non vengono mantenute in un computer con un backup, dovrebbero essere mantenute in un libro mastro. La prima metà del libro mastro può avere la tabella dei prodotti e la seconda metà può avere il tavolo ProductSates. La tabella di ProductStates cresce con il tempo.

Una colonna sospesa di tipo booleano può essere aggiunta all'estremità destra della tabella dei prodotti per indicare se il prodotto è stato interrotto; Cioè, il negozio non si occupa più di quel particolare prodotto.

Le tabelle del prodotto e il resto delle tabelle nel database sono ora nella quinta forma normale.

Tabella dei fornitori

La notazione della tabella per la tabella dei fornitori è:

Fornitori (fornitoreid, nome, telefono, indirizzo, città, regione, codice postale, paese)

Se questo tavolo non viene tenuto in un computer con backup, dovrebbe essere mantenuto in un libro mastro. È possibile aggiungere una colonna di data per indicare il primo giorno in cui il fornitore si è impegnato con il negozio di alimentari. È inoltre possibile aggiungere la colonna interrotta.

Tabella dei clienti

La notazione della tabella per la tabella dei clienti è:

Clienti (CustomerID, CustomerName, Telefono, Indirizzo, Città, Regione, Codice postale, Paese)

Se questo tavolo non viene tenuto in un computer con backup, dovrebbe essere mantenuto in un libro mastro. È possibile aggiungere una colonna di data per indicare il primo giorno in cui il cliente si è impegnato con il negozio di alimentari.

Un customerid può essere per i passanti: persone che hanno visitato la città e soggiornano in hotel, vacanzieri, turisti, ecc.

Vendere tavoli

I tre tavoli di vendita sono:

Vendite (Saleid, Datedold, CustomerId, EmployeeID)
SaleEtails (SaleId, ProductID, Unitselling Price, quantità, prestiti, sconto)
CategoryDelivery (CategoryId, CustomerId, Categoria, Transportation)

Una colonna di prestito di tipo booleano viene introdotta nella tabella di Saledetails, nel caso in cui il cliente possa essere attendibile. Solo il proprietario dovrebbe autorizzare i prestiti. Nella tabella di consegna di categorie, viene aggiunta una colonna per il costo del trasporto su e FRO per la consegna.

Se queste tabelle non sono tenute in un computer con backup, dovrebbero essere tenuti in un libro mastro chiamato registro delle vendite. La metà sinistra del libro mastro può essere utilizzata per le tabelle di vendita e Saledetails (vedi sotto). La metà destra del libro mastro può essere utilizzata per la tabella di consegna della categoria.

Se i tavoli fossero conservati in un libro mastro, il tavolo di Saledetails sarebbe:

SaleEtails (SaleId, ProductID, Unitselling Price, quantità, prestiti, sconti, totali

Con le colonne di totali e totallenti aggiunte. Queste colonne dovrebbero essere riempite quotidianamente alla fine della giornata o settimanalmente da te da te, il proprietario.

Se le tabelle sono conservate in un computer con backup, il software di database (programma) calcolerebbe i totali.

Le righe di Saledetails corrispondenti alla riga di vendita sono generalmente più di una. Quindi, per la metà sinistra del registro delle vendite, la pagina sinistra del libro mastro aperto ha i dati di vendita mentre la pagina destra ha i dati di vendita di vendita di vendita, come segue:

Tabella di vendita/Saledetails

Se un cliente è venuto e pagato per determinati prodotti e preso in prestito gli altri, quelli dovrebbero essere due Saledetails. Total_Sold = u.S.P x quantità. Un calcolo simile viene eseguito per Total_lent. I grandi totali per totaSold e totali, poiché il fondo del tavolo possono essere calcolati alla fine della giornata o alla fine della settimana o alla fine del mese, a seconda della frequenza delle vendite. Tutti i totali dovrebbero essere calcolati da te, il proprietario, che funge anche da manager.

Tabelle ordini

Le tabelle degli ordini sono:

Ordini (OrderId, Datedold, SupplierId, EmployeeID)
OrderDetails (OrderID, ProductID, UnitCostPrice, quantità, sconto)

Se queste tabelle non sono tenute in un computer con backup, dovrebbero essere tenuti in un libro mastro chiamato libro mastro. In questo caso, la tabella di OrderDetails dovrebbe essere:

OrderDetails (OrderId, ProductID, UnitCostPrice, quantità, prestito, sconto, totale, totalmente prestito)
Con le colonne di prestito, totali e colonne totali.

Se un negozio ha pagato alcuni ordini e ne ha preso in prestito alcuni, questi dovrebbero essere due ordini debiti.

Non esiste una tabella di consegna corrispondente qui. I registri per gli ordini e gli ordini devono essere effettuati nel libro mastro dell'acquisto in modo simile a quello che le vendite e le salate sono realizzate nel libro mastro delle vendite.

Tutte le tabelle in 5nf

Product contabilità

Prodotti (ProductID, CategoryId, SupplierId, ProductName, ReorderLevel)
ProductStates (ProductStateId, ProductID, Date, UnitPrice, QuantityInstock)

Fornitore dei fornitori

Fornitori (fornitoreid, nome, telefono, indirizzo, città, regione, codice postale, paese)

Recerto dei clienti

Clienti (CustomerID, CustomerName, Telefono, Indirizzo, Città, Regione, Codice postale, Paese)

Registro delle vendite

Vendite (Saleid, Datedold, CustomerId, EmployeeID)
SaleEtails (SaleId, ProductID, Unitselling Price, quantità, prestiti, sconti, totali
CategoryDelivery (CategoryId, CustomerId, Categoria, Transportation)

Ordini di libro mastro

Ordini (OrderId, Datedold, SupplierId, EmployeeID)
OrderDetails (OrderId, ProductID, UnitCostPrice, quantità, prestito, sconto, totale, totalmente prestito)

Conto profitti e perdite

Un estratto conto del profitto e delle perdite è un rendiconto finanziario che mostra il reddito e le spese dell'impresa. Mostra anche se l'impresa sta ottenendo profitti o perdite per un determinato periodo. Una dichiarazione di profitto e perdita viene resa mensile o trimestrale. Media trimestrale ogni tre mesi: marzo, giugno, settembre, dicembre. Questa affermazione dovrebbe essere mantenuta nel proprio libro mastro.

Componenti principali per la dichiarazione di profitto e perdita

Questi componenti sono descritti qui con riferimento al minimarket.

Reddito

Un altro nome per le entrate sono le vendite. Questa è la prima sezione della dichiarazione di profitto e perdita. È l'ammontare di tutto ciò che è stato venduto per quel periodo (grande totale per la colonna totali).

Costo dei prodotti venduti

Questa dovrebbe essere la seconda sezione della dichiarazione di profitto e perdita. È la quantità di costo di tutti i prodotti venduti per il periodo (grande totale per la colonna totale comprovata).

Utile lordo

Questo è:

Profitto lordo = entrate - cost_of_products

per il periodo.

Guadagni

Se viene venduto un veicolo inutilizzato, questo è un guadagno (vedere l'ammortamento nella seguente illustrazione). Il profitto di un contratto imprevisto fatto ordinando e fornendo bevande e biscotti a una parte è un guadagno. Le attività commerciali di tale contratto non sono registrate nei precedenti registri.

Spese

La commissione che dai a un dipendente per la vendita di più è un esempio di spesa. Il contributo pensionistico per un dipendente è un esempio di spesa. I debiti che i clienti devono puoi andare qui. Anche i debiti che devi ai fornitori possono andare qui.

Spese pubblicitarie

I soldi pagati per pubblicizzare il negozio di alimentari alle stazioni radio e televisive locali, social media, ecc.

Spese amministrative

Gli affitti per l'appartamento del negozio, gli stipendi del personale tra cui il tuo, il proprietario (manager), le forniture per ufficio (computer, telefoni, registri, penne, ecc.), trasporto di consegna e altre spese di viaggio, ecc.

Ammortamento

Un computer può essere acquistato, è stato acquistato uno scaffale, è stato acquistato un tavolo, ecc. Deprezzamento significa che si dividono il costo di ciascuna di tali attrezzature per tutta la vita dell'attrezzatura (fino a quando non è più necessario l'attività).

Perde

La risoluzione di una causa del cliente è un esempio di perdita.

Guadagnare prima delle tasse

Guadagni_before_taxes = all_incomes - all_expenss

Le tasse

Qualsiasi tassa pagata nel periodo.

Reddito netto

Net_income = (entrate + guadagni) - (spese + perdite)

Per far crescere il business, i risparmi dovrebbero venire da qui.

Esempio di dichiarazione di profitto e perdita

Il reddito netto in questa tabella ipotetica è di $ 1000, il che è molto buono!

Conclusione

Il numero minimo di tabelle con numero minimo di colonne in 5NF è riportato nell'esempio per il negozio di alimentari. Come determinare anche il profitto o la perdita.

Tu, lo sviluppatore di database dice: "Siamo arrivati ​​alla fine del programma di formazione. Entrambi abbiamo 30 anni. Abbiamo ancora la nostra vita (adulto) di fronte a noi. Mentre ero in vacanza, ho allenato te e i tuoi ragazzi. Sto risparmiando denaro per avviare la mia società di software tra circa dieci anni al massimo. Posso anche fare l'installazione e il networking dei computer."

Il proprietario, figlio del defunto uomo, reagisce: “Dio disposto, informatirò la mia attività tra sei mesi. Se un profitto di $ 1000 al mese continua dopo aver rimosso il mio stipendio, risparmierò. Tra un massimo di dieci mesi, possiederò un supermercato nel centro commerciale. Spero che tra circa sei mesi ti darò il contratto per acquistare e installare i computer, mettere la rete e fare la programmazione."

Il proprietario continua: “Mi conosci. Ho riservato alcuni dei soldi che mio padre ha lasciato per me per informatizzare il negozio. Ora, gli inglesi dicono, "Il lavoro senza gioco rende Jack un ragazzo noioso". Quindi, ho anche riservato un po 'di denaro per l'intrattenimento. Questo sabato sera ti invito al ristorante più costoso della città per mangiare il cibo più costoso e bere la bevanda più costosa per celebrare la nostra amicizia e il nostro attuale successo (allenamento)."

La sera vanno al ristorante. Al partito, hanno fatto un cinque per comunicare tramite e-mail, almeno.