Tables de base de données pour un magasin de commodité les cinq formulaires normaux

Tables de base de données pour un magasin de commodité les cinq formulaires normaux
C'est la cinquième et dernière partie de la série, les cinq formes normales. Dans cette partie de la série de didacticiels, toutes les tables sont présentées avec une modification sur le tableau des produits. La façon dont le profit ou la perte est calculé à partir de la base de données est également expliqué.

Cette série de tutoriels suit une histoire qui est la suivante: un père vient de mourir et a laissé de l'argent à son fils. Le fils a décidé d'investir l'argent dans un magasin de commodité. La boutique est déjà stockée et la vente aux clients a déjà commencé.

Au début de l'entreprise, le fils qui est le propriétaire et ses employés, appelés Clerks dans cette série de tutoriels, ne savait rien des formes normales.

Vous, le lecteur, avez rempli cette série de didacticiels de formulaire normal et vous êtes également un développeur de base de données. Le propriétaire est votre ami. Vous avez visité la boutique quatre fois, une fois par jour, au cours des quatre derniers jours. Les trois premiers jours, vous avez enseigné au propriétaire et à ses employés sur le 1NF, le 2NF et le 3NF.

Hier, vous n'avez visité que le propriétaire de son bureau et l'avez formé sur le BCNF, le 4NF et le 5NF. Aujourd'hui, vous n'avez visité que le propriétaire pour améliorer la table des produits, présenter toutes les tables et expliquer comment calculer le profit ou la perte.

Tout d'abord, vous récapitulez les règles de toutes les formes normales.

Règles de forme normale

En théorie, un tableau peut être créé et se trouve être sous la cinquième forme normale, car chaque formulaire normal a des règles qui ne devraient pas être violées par opposition aux règles qui doivent être mises en œuvre. Cependant, une table est vérifiée dès la première, la deuxième, la troisième, Boyce Codd, quatrième et aux cinquième formulaires normaux.

Un tableau est en 1NF si aucune des règles suivantes n'est violée:

  1. Toutes les colonnes d'une table doivent avoir des noms d'en-tête uniques.
  2. Chaque cellule ne doit avoir qu'une seule valeur.
  3. Les valeurs stockées dans une colonne doivent être du même type.
  4. Les lignes doivent être distinctes.
  5. L'ordre des colonnes ou l'ordre des lignes n'a pas d'importance.

Un tableau est en 2NF si aucune des règles suivantes n'est violée:

  1. La table doit déjà être sous la première forme normale.
  2. Il ne doit pas y avoir de dépendance partielle.

Un tableau est en 3NF si aucune des règles suivantes n'est violée:

  1. Il devrait déjà être sous la deuxième forme normale.
  2. Il ne devrait pas avoir de dépendance transitive.

Un tableau est en BCNF si aucune des règles suivantes n'est violée:

  1. Le tableau doit déjà être sous la troisième forme normale.
  2. Aucun attribut non prison (colonne) ne devrait dépendre d'une partie de la clé primaire composite.

Un tableau est en 4NF si aucune des règles suivantes n'est violée:

  1. Il est déjà sous forme normale de Boyce-Codd.
  2. Le tableau n'a pas de dépendance multi-valeurs.

Un tableau est en 5NF si aucune des règles suivantes n'est violée:

  1. Il est déjà dans la quatrième forme normale.
  2. Le tableau n'a pas de dépendance.

À tout moment, si le tableau ne se conforme pas à la forme normale, le tableau est divisé pour se conformer.

Les tables

Table de produits

La table des produits que nous sommes arrivés jusqu'à présent est:

Produits (ProductId, catégorieID, fournisserid, productName, Unitprice, QuantityInstock, ReortreLevel)

CatégoryId et Providerid sont des clés étrangères qui sont les mêmes que les clés principales du tableau des catégories et de la table des fournisseurs, respectivement.

Ce tableau est en 5NF si l'unité et la quantité ne changent pas avec le temps. Même le fournisseur d'un produit particulier peut changer. Cependant, pour simplifier, le changement de fournisseur ne sera pas abordé dans ce tutoriel. Le prix unitaire de tout produit change dans le temps, mais lentement. À l'heure actuelle, le prix unitaire de nombreux produits du monde entier a augmenté en raison de la guerre de Russie-Ukraine. Étant donné que les clients individuels achètent dans un magasin, la quantité en stock change (réduit d'abord avant d'être reconstituée). La quantité d'un produit particulier en stock est la somme de ce qui est sur l'étagère et de ce qui se trouve dans le magasin (sauvegarde). Pour plus de simplicité, cette séparation n'est pas faite dans cette série de tutoriels.

Avec ces colonnes changeantes, ce tableau est maintenant en 1NF. La table doit être divisée en deux, le groupe changeant allant dans un sens tandis que le reste de la table reste.

Les tables des enfants deviennent:

Produits (ProductId, catégorieID, fournisIrid, ProductName, REORDERLEVEL)

et

ProductStates (Unitprice, QuantityInstock)

Le nouveau tableau s'appelle les états de produits. Il a besoin de son propre identifiant ainsi que de l'ID du produit. La table doit en fait être:

ProductStates (ProductStateId, ProductId, Date, Unitprice, QuantityInstock)

Le produitStateId est auto-incrémenté, à partir de 1. Une colonne de date est ajoutée pour indiquer quand le changement a eu lieu. La clé principale pour le tableau ProductStates est une clé composite composée de produitstateid et de product. Les deux tables sont liées par la colonne ProductId. Le tableau ProductStates est en 2NF car il n'y a pas de dépendance partielle. Dans chacune de ses lignes, les valeurs de la date, de l'unité ou de la quantité en quantité déterminent les deux clés. En fait, les deux tables sont maintenant en 5NF, car aucune ne viole les règles de forme normale.

Si les deux tables précédentes ne sont pas conservées dans un ordinateur avec une sauvegarde, elles doivent être conservées dans un grand livre. La première moitié du grand livre peut avoir la table des produits et la seconde moitié peut avoir le tableau des producteurs. Le tableau des producteurs pousse avec le temps.

Une colonne abandonnée de type booléen peut être ajoutée à l'extrémité droite du tableau des produits pour indiquer si le produit a été interrompu; c'est-à-dire que la boutique ne traite plus de ce produit particulier.

Les tableaux de produits et les autres tables de la base de données sont maintenant sous la cinquième forme normale.

Table des fournisseurs

La notation du tableau pour le tableau des fournisseurs est:

Fournisseurs (fournisseur, nom, téléphone, adresse, ville, région, code postal, pays)

Si ce tableau n'est pas conservé dans un ordinateur avec sauvegarde, il doit être conservé dans un grand livre. Une colonne de date peut être ajoutée pour indiquer le premier jour où le fournisseur s'est engagé avec le magasin de commodité. La colonne abandonnée peut également être ajoutée.

Table des clients

La notation du tableau pour le tableau des clients est:

Clients (CustomerId, CustomName, téléphone, adresse, ville, région, code postal, pays)

Si ce tableau n'est pas conservé dans un ordinateur avec sauvegarde, il doit être conservé dans un grand livre. Une colonne de date peut être ajoutée pour indiquer le premier jour où le client s'est engagé avec le magasin de commodité.

Un clientId peut être pour les passants: les personnes qui ont visité la ville et séjournent dans des hôtels, des vacances, des touristes, etc.

Tables de vente

Les trois tables de vente sont:

Ventes (SaleID, Datesold, CustomerID, EmployeeID)
Saledetails (SaleID, ProductId, UnitsellingPrice, Quantité, Lending, Remise)
CategoryDelivery (catégorieid, clientId, catégorie, transport)

Une colonne de prêt de type booléen est introduite dans le tableau Saledetails, au cas où le client pourrait faire confiance. Seul le propriétaire devrait autoriser les prêts. Dans le tableau CategoryDelivery, une colonne pour le coût du transport à la livraison est ajouté.

Si ces tables ne sont pas conservées dans un ordinateur avec sauvegarde, elles doivent être conservées dans un grand livre appelé le grand livre des ventes. La moitié gauche du grand livre peut être utilisée pour les tables de vente et de Saledetails (voir ci-dessous). La moitié droite du grand livre peut être utilisée pour la table de livraison de catégorie.

Si les tables sont conservées dans un grand livre, le tableau Saledetails serait:

Saledetails (SaleID, ProductId, UnitsellingPrice, Quantité, Lending, Discount, TotalSold, Totallent)

Avec les colonnes de Totalsold et Totallent ajouté. Ces colonnes doivent être remplies quotidiennement à la fin de la journée ou chaque semaine à la fin de la semaine par vous, le propriétaire.

Si les tables sont conservées dans un ordinateur avec sauvegarde, le logiciel de base de données (programme) calculerait les totaux.

Les lignes de Saledetails correspondant à la ligne de vente sont généralement supérieures à une. Ainsi, pour la moitié gauche du grand livre des ventes, la page gauche du grand livre ouvert a les données de vente tandis que la page de droite a les données de vente de vente, comme suit:

Table des ventes / Saledetails

Si un client est venu et a payé certains produits et emprunté les autres, il devrait s'agir de deux Saledetails. total_sold = u.S.P x Quantité. Un calcul similaire est effectué pour Total_lent. Les grands totaux de Totasold et total, pour le bas du tableau, peuvent être calculés à la fin de la journée ou à la fin de la semaine ou de la fin du mois, selon la fréquence des ventes. Tous les totaux doivent être calculés par vous, le propriétaire, qui se double de son manager.

Commander des tables

Les tables de commande sont:

Commandes (OrderId, Datesold, Providerid, EmployeeID)
OrderDetails (OrderId, ProductId, UnitCostprice, Quantité, Remise)

Si ces tables ne sont pas conservées dans un ordinateur avec sauvegarde, elles doivent être conservées dans un grand livre appelé le grand livre d'achat. Dans ce cas, le tableau OrderDetails doit être:

OrderDetails (OrderId, ProductId, UnitCostprice, Quantité, Emprunt, Remise, Total Bought, TotalBorrowed)
Avec les colonnes d'emprunt, TotalBought et Totalborrowed Ajout.

Si un magasin a payé certaines commandes et en emprunter, il faut être deux commandes.

Il n'y a pas de tableau de livraison correspondant ici. Les enregistrements pour les commandes et les découvertes de commandes doivent être effectués dans le grand livre de l'achat de la même manière que les ventes et les saledetails sont réalisés dans le grand livre des ventes.

Toutes les tables en 5NF

Grand livre des produits

Produits (ProductId, catégorieID, fournisIrid, ProductName, REORDERLEVEL)
ProductStates (ProductStateId, ProductId, Date, Unitprice, QuantityInstock)

Grand livre des fournisseurs

Fournisseurs (fournisseur, nom, téléphone, adresse, ville, région, code postal, pays)

Grand livre des clients

Clients (CustomerId, CustomName, téléphone, adresse, ville, région, code postal, pays)

Grand livre des ventes

Ventes (SaleID, Datesold, CustomerID, EmployeeID)
Saledetails (SaleID, ProductId, UnitsellingPrice, Quantité, Lending, Discount, TotalSold, Totallent)
CategoryDelivery (catégorieid, clientId, catégorie, transport)

Commandes de grand livre

Commandes (OrderId, Datesold, Providerid, EmployeeID)
OrderDetails (OrderId, ProductId, UnitCostprice, Quantité, Emprunt, Remise, Total Bought, TotalBorrowed)

Compte de résultat

Un état des bénéfices et des pertes est un état financier qui montre le revenu et les dépenses de l'entreprise. Il montre également si l'entreprise réalise un profit ou une perte pendant une période donnée. Un relevé de profit et de perte est fait mensuellement ou trimestriel. Trimestriel signifie tous les trois mois: mars, juin, septembre, décembre. Cette déclaration doit être conservée dans son propre grand livre.

Composants majeurs pour le profit et l'énoncé des pertes

Ces composants sont décrits ici en référence à la boutique de commodité.

Revenu

Un autre nom pour les revenus est les ventes. Ceci est la première section de la déclaration de profit et de perte. C'est le montant de tous ce qui a été vendu pour cette période (grand total pour la colonne Totalsold).

Coût des produits vendus

Ce devrait être la deuxième section de la déclaration de profit et de perte. C'est le montant du coût de tous les produits vendus pour la période (grand total pour la colonne Total Bought).

Bénéfice brut

C'est:

Profit brut = revenus - Cost_of_Products

pour la période.

Gains

Si un véhicule inutilisé est vendu, c'est un gain (voir l'amortissement dans l'illustration suivante). Le bénéfice d'un contrat imprévu obtenu en commandant et en fournissant des boissons et des biscuits à une partie est un gain. Les activités commerciales d'un tel contrat ne sont pas enregistrées dans les registres précédents.

Dépenses

La commission que vous donnez à un employé pour en vendre plus est un exemple de dépense. La contribution des pensions pour un employé est un exemple de dépense. Les dettes que les clients doivent aller ici. Les dettes que vous devez aux fournisseurs peuvent également aller ici.

Dépenses de publicité

L'argent payé pour annoncer le magasin de commodité aux stations de radio et de télévision locales, des médias sociaux, etc.

Dépenses administratives

Les loyers pour l'appartement de la boutique, les salaires du personnel, y compris le vôtre, le propriétaire (directeur), les fournitures de bureau (ordinateurs, téléphones, livres, stylos, etc.), le transport de livraison et autres frais de voyage, etc.

Dépréciation

Un ordinateur peut être acheté, une étagère a été achetée, une table a été achetée, etc. L'amortissement signifie que vous divisez le coût de chacun de ces équipements au cours de la durée de vie de l'équipement (jusqu'à ce que vous n'ayez plus besoin de l'actif).

Perdus

Le règlement d'un procès client est un exemple de perte.

Gagner (s) avant les taxes

Gain_before_taxes = all_incomes - all_expenses

Taxes

Toute taxe payée dans la période.

Revenu net

Net_income = (revenus + gains) - (dépenses + pertes)

Pour développer l'entreprise, les économies devraient venir d'ici.

Exemple de relevé de profit et de perte

Le revenu net dans ce tableau hypothétique est de 1000 $, ce qui est très bon!

Conclusion

Le nombre minimum de tables avec un nombre minimum de colonnes en 5NF est donné dans l'exemple de la boutique de commodité. Comment déterminer le profit ou la perte est également donné.

Vous, le développeur de la base de données, dit: «Nous sommes arrivés à la fin du programme de formation. Nous avons tous les deux 30 ans. Nous avons toujours nos vies (adultes) devant nous. Pendant mes vacances, je vous ai formé, vous et vos gars,. J'économise de l'argent pour démarrer ma propre société de logiciels dans environ dix ans dans le maximum. Je peux également faire l'installation et la mise en réseau des ordinateurs."

Le propriétaire, le fils de l'homme tardif, réagit: «Dieu veut, je vais informatiser mon entreprise dans six mois. Si un bénéfice de 1000 $ par mois se poursuit après avoir retiré mon salaire, j'économiserai. Dans un maximum de dix mois, je posséderai un supermarché dans le centre commercial. J'espère que dans environ six mois, je vous donnerai le contrat d'achat et d'installation des ordinateurs, de mettre le réseau et de faire la programmation."

Le propriétaire continue: «Tu me connais. J'ai réservé une partie de l'argent que mon père m'a laissé pour informatiser la boutique. Maintenant, les Britanniques disent: «Le travail sans jeu fait de Jack un garçon terne». Donc, j'ai également réservé de l'argent pour le divertissement. Ce samedi soir, je vous invite au restaurant le plus cher de la ville pour manger la nourriture la plus chère et boire la boisson la plus chère pour célébrer notre amitié et notre réussite actuelle (formation)."

Le soir, ils vont au restaurant. En partant, ils ont fait un high-five pour communiquer par e-mail, au moins.