|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : novembre 2006 Messages : 62 ![]() |
Bonsoir tout le monde
J'ai une question bete ( ou hors sujet ?! ) concernant l'organisation de mes tables. Tout d'abord je precise que j'utilise wamp Apache/2.0.59 (Win32) PHP/5.2.0 Mysql 5.0.27 Voici ma question : avec une table, disons "vaisseaux_spatiaux" je voudrais pouvoir obtenir ceci ... une table avec caracteristiques_vaisseau qui soit multidimentionnel exemple : ---------------------------------------------------------------- id_vaisseau | nom_vaisseau | caracteristiques_vaisseau | -------------------------------------------------------------- | type_cargaison | volume_cargaison | ---------------------------------------------------------------- 1 | ulyss | eau | 3000 | | | dechets | 5000 | vegetaux | 300 | ---------------------------------------------------------------- 2 | alika | eau | 3000 | vegetaux | 300 | ---------------------------------------------------------------- 3 | ulyss | eau | 3000 | | | dechets | 5000 | vegetaux | 300 | ---------------------------------------------------------------- 4 | ulyss | eau | 3000 | | | dechets | 5000 | vegetaux | 300 | 2 eme question : Est t-il possible de redefinir caracteristiques_vaisseau dans cette meme table vaisseaux_spatiaux ? ---------------------------------------------------------------- id_vaisseau | nom_vaisseau | caracteristiques_vaisseau | -------------------------------------------------------------- | type_cargaison | volume_cargaison | ---------------------------------------------------------------- 1 | ortica | eau | 3000 | | | dechets | 5000 | vegetaux | 300 | | type | volume | prix | origine | ---------------------------------------------------------------- 2 | vampiris | eau | 8000 | 154 | terre | 3 | madila | sable | 34 | 44 | mars | Voili voila en gros sur une structure de table donnée est t-il possible de definir une colonne caracteristiques_vaisseaux qui contient des champs multidimensionnels dont je ne connais ni le nom des colonnes ni le nombre de lignes.. J'ai bien sur une tonne de question autour de ce thème... Si vous voulez bien eclairer ma lanterne je suis preneur les sgbd n'etant pas ma spécialité |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Avec MySQL ce n'est a ma connaissance pas réalisable en l'état.
Une BDD plus évoluée pourrait stocker des listes et/ou des objets (Oracle le fait). Sans cela, une possibilité (à fuir à mom avis) serait de stocker tout ça sous forme de chaine de caractères dans la colonnes 'caracteristiques_vaisseau'. Maléable mais pas pratique. La solution relationnelle est de faire une table 'cargaison' qui contient ('idVaisseau', 'idTypeCargaison', 'quantité'). Il est ensuite facile de retrouver la cargaison d'un vaisseau donné avec une jointure. Par contre il faudra une table par caractéristique. Pour avoir une forme de polymorphisme ça devient plus délicat. Si c'est l'ajout de quelques champs on peut mettre les colonnes et les laisser vide dans certains cas ou leur donner une table dédiée qu'on ne remplit que dans certains cas. C'est somme toute du mapping objet relationnel et l'héritage n'est pas simple a réaliser. |
|
|
00
|
|
|
#3 | |
|
Membre à l'essai
![]() Inscription : novembre 2006 Messages : 62 ![]() |
Citation:
Je sais pas si sur oracle c'est pratique a "manier" SQLment parlant... Merci a toi Sivrit pour tes réponses. Quant a moi je continue de chercher (sqlite etc .. ) ma base de données gratuite miracle |
|
|
|
00
|
|
|
#4 | |||||
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Citation:
Le type liste : 11.4.4. Le type ENUM Le type ensemble : 11.4.5. Le type SET Les types TEXT et BLOB : 11.4.3. Les types BLOB et TEXT Plusieurs solutions :Stocker le type de cargaison dans un ensemble
PHP permet de sérialiser un objet. Donc votre objet aurait la forme suivante : Code :
Code :
Je vous invite à lire les définitions des fonctions PHP serialize unserialize Troisième méthode : Modélisez mieux votre base de données. La table cargaison doit être dépendante de la table vaisseau et de la table matière Vaisseau ( id_vaisseau, nom_vaisseau, etc...) Matière (id_matiere, nom_matiere, etc...) Cargaison (id_vaisseau, id_matiere, stock) Voilà. Arrêtons de dire tel type de base est plus adaptée qu'une autre. Les combats Oracle, MySQL et SqlLite sont stériles à ce niveau. a partir du moment où la modélisation de la base de données est correcte, leurs avantages et inconvénients se limitent essentiellement aux parties hardware, consommations de ressources, coût d'entretien et coût d'acquisition. Si votre base de données est mal modélisée, aucun moteur de base de données ne répondra réellement à vos besoins.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|||||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Je ne connaissais pas les SET, c'est intéressant.
Citation:
Pour en revenir au cas qui nous intéresse... utiliser des SET et BIGINT est conceptuellement intéressant, mais juste pour conserver des cargaisons ça me semble bien compliqué. Je crois que la solution 3 est toute indiquée. Par contre cela ne permet pas de placer des attributs polymorphiques et tout, il faudra à chaque fois ajouter d'autres tables. Pour ce genre de chose je ne vois effectivement que la sérialisation mais c'est lourd: il faut systématiquement tout récupérer, décoder, puis tout resérialiser pour l'update. D'après mois ça ramène à l'option trois qui est le standard avec les BDD. Idée en passant: pour les attributs simples et optionnels (si c'est du fixe autant les mettre directement dans la tables des vaisseaux), utiliser une table attribut du genre (id_vaisseau, enum_type_attribut, valeur). Voire mettre deux valeurs. Par contre ça ne me semble pas très adapté pour la cargaison qui doit être systématique, assez importante pour avoir sa table, et est une liste. Citation:
|
||
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : novembre 2006 Messages : 62 ![]() |
Bien bien
Je m'en va pour quelques essais de serialisation mais je pense quand meme que je vais rester sur la methode 3 ( bien eclater les tables , des identifiants partout et sans serialisation ) Je reviendrai avec d'autres questions plus precises si besoin s'en fait sentir ... Dans un autre thread Sujet résolu Merci a vous pour ce debut de reponse. Merci pour la qualité de ce forum et des intervenants. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com