|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 82 ![]() |
bonjour ,
je dois creer une base de données avec les caractéristiques suivantes voiture : num d'imatriculation , année de mise en circulation, kilométrage, tarif , marque, catégorie (coupé , cabriolet , berline ...) camion: num d'imatriculation , année de mise en circulation , kilométrage, tarif ,marque , tonnage vide, tonnage max comment pourrais je modeliser cela ? je vois trois possibilités : -avec 2 tables :une table voiture et une table camion ou bien -avec 3 tables une table véhicule( num d'imatriculation , année de mise en circulation, kilométrage,tarif, marque) et une table voiture(num d'imatriculation, catégorie) et une table camion (num d'imatriculation, tonnage vide , tonnage max) ou bien avec une seule grande avec tous les attributs cités en haut + un qui précise si c'est un camion ou une voiture quelle solution est optimale sachant que il faut extraire le maximum d'informations avec toutes les requetes imaginables! merci |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : avril 2003 Messages : 79 ![]() |
ce que tu veux faire c'est de l'heritage en fait.
voiture et camion sont des vehicules, un vehicule possede une immatriculation. Il y a differentes maniere de modeliser cela, j'en connais 3. Sois tu fait 2 tables differentes. Sois tu fais une table avec tout. Ou alors tu fais une table vehicule qui contient les caracteristiques communes de voiture et camion, plus une table pour voiture et une autre pour camion. Ca t'aide pas mais y a le choix, c'est comme çà Sinon tu devrais regrouper les caracteristiques en fonction des modeles de caisses et de camion. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 82 ![]() |
quelle solution parait la moins couteuse en espace et temps de requetes?
|
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() François Développeur informatique Inscription : novembre 2002 Messages : 773 ![]() |
Si tu veux pouvoir imaginer le plus de requêtes possible avec un temps d'exécution qui se respecte, tu as encore plus de table que ce que tu indiques.
1) Numéro d'immatricualtion n'est pas une clé primaire optimale. Choisis plutôt un nombre. (sequence, auto incrément , ...) 2) Table1 TVehicule Vehicule_Id Vehicule_Immat, Vehicule_AnneeCirculation, Vehicule_Km, Vehicule_Tarif, TypeVehicule_Id, Marque_Id Table2 TTypeVehicule camion, coupé, cabriolet,berline,... TypeVehicule_Id, TypeVehicule_Nom Table3 TMarque Marque_Id, Marque_Nom Table4 TTonnage Tonnage_Id, Vehicule_Id, Tonnage_Vide, Tonnage_Max Tous les cvhamps finissant par Id sont des identifiants (nombre) Ce schéma me semble mieux normalisé et optimisé. Cependant, n'étant pas sur du but de la manoeuvre (je pense à une location ou vente de véhicule), le schéma n'est peut-être le mieux. |
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Inscription : avril 2003 Messages : 79 ![]() |
Citation:
Si tu connais pas grand chose aux triggers et ça prendras moins de temps au debut. Apres tu pourras toujours decouper. Sache que normaliser au maximum n'est pas forcement la meilleur solution. Parfois, denormaliser peu faire gagner en perfs, et ce sont souventles perfs qui comptent. Mais tu devrais avant tout, avant de te lancer, lire des trucs sur la normalisation et l'heritage. |
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 5 ![]() |
en tout cas, il est clair que ca ne sert a rien de faire 3 tables séparées si à chaque requete, tu joins les 3 tables pour obtenir tes résultats: dans ce cas, mieux vaut une table consolidée, qui ressemble le plus possible à ce que tu voudras obtenir comme résultat de requête.
Comme le dit mirak63, sauf gros problème de place, çà vaut pas forcément le coup de tout normaliser à donf'... @+. |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() François Développeur informatique Inscription : novembre 2002 Messages : 773 ![]() |
Ca dépend pour quel but.
Si c'est pour faire quelque chose de solide et d'interrogeable de différente manières. Plusieurs tables sont utiles. Si tu comptes juste faire un truc comme ca sans évolution alors tu peux faire table unique. On se rend bien compte que pour limiter les types de saisies différentes voir tester des valeurs particulières il est plus simple d'utiliser des tables satellites. D'ailleurs, permet un contrôle de saisie plus efficace. Car sinon pour limiter les types de valeurs possibles, il faut utiliser un check sur la colonne et alors la c'est vraiment long (surtout en cas de saisie tel que camion, automobile, cabriolet, ...) |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
L'étude sur l'héritage dans la modélisation des données :
http://sqlpro.developpez.com/cours/modelisation/heritage/ A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : décembre 2004 Messages : 82 ![]() |
merci pour vos réponses et vos conseils .
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com