Que dois-je utiliser comme types de colonnes [optimisation]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Que dois-je utiliser comme types de colonnes [optimisation]

par Augure » 26 août 2005, 17:12

La modélisation de base de données est un metier à part entiére. Pour definir les bons type de champs, il faut en plus savoir quelles "type" de traitement on va faire dessus (type de requête, nombre de requête / seconde , volumétrie des tables, etc etc ...)

Cependant je crois que ton but est de partir sur un modéle pas trop moche pour réaliser tes exercice et qu'il n'y a pas de contraintes de performances. Donc prend des types simple et homogéne. C'est à dire limite le nombre de type différent. Trouve le bon type quand même : evite de mettre INT pour un champs description.

Bon courage

par Cyrano » 24 août 2005, 17:28

Quand on conçoit une base de données, il y a un certain nombre de paramètres à considérer;
- On doit éviter les redondances;
- On évitera les champs comportant des valeurs NULL autant que possible;
- On utilisera des types de champ appropriés;

Sur ce dernier point, il est facile de comprendre qu'il est inutile d'utiliser un champ de type TEXT là où un VARCHAR(32) suffirait, de même qu'on ne fera pas l'inverse non plus sous peine de voir les données tronquées à l'enregistrement. On utilisera de préférence un champ DATE ou DATETIME selon le degré de précision nécessaire pour l'usage qu'on veut pouvoir faire de la donnée qui y sera contenue, de préférence à des champs séparés "jour" en VARCHAR(12), "mois" en VARCHAR(12) et "annee" en MEDIUMINT parce qu'on se priverait des fonction de calcul sur les dates intégrées dans les fonctions SQL. etc, etc...

TOut ça pour dire que ce n'est pas tant la structure de la base qu'il faut voir en soi mais la structure par rapport à ce qu'on veut faire des données. À partir du schéma de ton application, tu vas structurer ta base en modélisant les entités et propriétés pour créer les tables avec leurs champs, clés primaires, étrangères, Index etc...

Ce qui veut dire que voir simplement ta base telle quelle ne nous dira rien de vraiment clair si on a pas le cahier des charges qui va avec. Parce qu'on conçoit en principe toujours une base par rapport à un cahier des charges. Il faudrait donc lire le bouquin en question, en extraire les informations nécessaire pour modéliser la base et ensuite la comparer avec le modèle proposé.

J'ai donc peur que tu n'obtiennes pas ici de réponse vraiment satisfaisante à part de quelqu'un qui aurait déjà lu le bouquin et fait l'ensemble des exercices proposés.

re : peux tu reformuler ...

par william wild » 24 août 2005, 17:17

En fait voilà, c'est une base proposé par l'auteur d'un livre... il indique bien le nom des tables, de ses champs et quelques indications précises en matière de clé primaire, index, unique etc... Cependant il ne dit pas vers quel types de colonnes il faut s'orienter... hors il en existe beaucoup dans mysql et lui ne précise que numérique, chaine et date...

j'aimerai que quelqu'un reprenne la base et me dise (cela me permettra de fonctionner de la meme maniere ensuite) pour chaque champs quel types de colonnes il est préferable d'utiliser et pourquoi...

par exemple: table "shop_produits"; champ "designation" varchar (30)

etc.... etc....



MERCI A TOI

Re: Que dois-je utiliser comme types de colonnes [optimisati

par Cyrano » 24 août 2005, 17:08

... pouvez me dire quel types de colonnes je dois utiliser pour que cette base tourne au mieux !?
Question curieuse : si la base a été modélisée de cette manière, ce n'est pas pour n'en utiliser qu'une partie mais tout à divers degrés. Peux-tu reformuler ta question différemment, je soupçonne que tu veux dire autre chose ?

Que dois-je utiliser comme types de colonnes [optimisation]

par williamwild » 24 août 2005, 14:05

Voici donc la base de donnée conçu par l'auteur du livre (François Houste)
que j'étudie en ce moment... pouvez me dire quel types de colonnes je dois utiliser pour que cette base tourne au mieux !?

(8 tables au total)

_____Table produits (nom:shop_produits)_____
-ID (Numérique, clé primaire)
-reference (Chaine, Unique)
-rubannu1 (Numérique, Index)
-rubannu2 (Numérique, Index)
-designation (Chaine)
-prix_ht (Numérique)
-prix_ttc (Numérique)
-date (date du produit=entrée en magasin)
-descriptif (Chaine)
-fabricant (Numérique, Index, ID du fabricant)
________________________________________

> la table produits contient l'ensemble des informations relatives à un produit en particulier


_____Table fabricants (nom:shop_fabricants)_____
-ID (Numérique, clé primaire)
-marque (Chaine, nom du fabricant)
-siteweb (Chaine, url du site web du fabricant)
__________________________________________

>la table fabricant contient les infos relative aux fabricants (elle permettra de gérer plus facilement l'affichage des produits disponiblent pour un même fabricant)


_____Table Categories (nom:shop_categories)_____
-ID (Numérique, clé primaire)
-intitule (Chaine, intitule de la catégorie d'annuaire)
____________________________________________


_____Table Sous Categories (nom:shop_sous_categories)_____
-ID (Numérique, clé primaire)
-intitule (Chaine, intitule de la sous categorie d'annuaire)
-parent (Numérique, Index, ID de la catégorie d'annuaire parente)
____________________________________________________

>Ces deux tables serviront pour un annuaire thématique à 2 niveaux


________Table Clients(nom:shop_clients)__________________
-ID (Numérique, clé primaire)
-mail (Chaine, Index, Unique, adresse email utilisé comme identifiant sur le site = login)
-nom (Chaine)
-prenom (Chaine)
-telephone (Chaine)
-MdP (Chaine, Mot de passe cryptée avant son stockage en base de données)
-ad_ligne1 (Chaine, 1ere ligne d'adresse)
-ad_ligne2 (Chaine, 2eme ligne d'adresse)
-ad_cp (Chaine, code postal)
-ad_ville (Chaine, nom de la ville)
______________________________________________________

>la table client permet de stocker les données relative au clients de la boutique en ligne



__________Table panier (nom:shop_panier)________________
-ID (Numérique, clé primaire)
-client (Chaine, Index, adresse email du client entré en table shop_client)
-article (Numérique, cle primaire, ID de l'article ajouté)
-quantite (Numérique)
______________________________________________________

>la table shop_panier sert à stocker de maniere temporaire, l'ensemble des articles en cours de commande par un client précis. Elle est liée à la table shop_clients par l'identifiant de celui-ci (email) et à la table shop_produits par le numéro de réference produit


__________Table commande (nom:shop_commande)____________
-ID (Numérique, clé primaire)
-client (Chaine, Index, email du client)
-date (date de la commande)
-total_ht (Numérique, total hors taxe de la commande)
-total_ttc (numérique, total TTC de la commande)
-expedition (Chaine a 2 choix : 'expedie' ou 'traitement en cours')
_________________________________________________________


_____Table ligne de commande (nom:shop_ligne_commande)______
-ID (Numérique, clé primaire)
-commande (Numérique, index, identifiant de la commande contenant la ligne de commande)
-article (Numérique, index, Numéro de reference produit)
-prix_ht (Numérique, Prix HT de l'article au moment de la commande)
-prix_ttc (numérique, prix TTC de l'article au moment de la commande)
-quantite (Numérique, Nombre d'ex commandés)
-total_ht (Numérique, total HT à payer pour l'article commandé)
-total_ttc (Numérique, total TTC pour l'article commandé)
__________________________________________________________


>Une fois une commande effectivement validée, l'ensemble des articles de la table shop_panier est transféré dans la table shop_ligne_commande qui contient qui contient tous les articles commandé par un clien en particulier. Un nouvel enregistrement est également crée dans la table shop_commande qui conient tout les données générique relatives à une commande (client, date, état de l'expédition...)
Les enregistrements correspondants sont alors supprimés de la table shop_panier afin d'éviter un doublon de commande.


Voilà, je n'ai rien oublié et ai essayé à chaque fois de précisé les associations et entités...

Bien évidemment cette base a été concu pour l'exemple de site e-commerce du livre... les entités sont utilisées ensuite et interprété coté serveur avec dreamweaver il y a très peu de code en fait...


Merci de m'aider car j'ai vraiment envie de finir ce bouquin !!!