IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Quelle organisation de tables pour maintenir des contraintes d'intégrités ?


Sujet :

MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 105
    Points : 57
    Points
    57
    Par défaut Quelle organisation de tables pour maintenir des contraintes d'intégrités ?
    Bonjour

    Je m'interroge sur la bonne structures de tables à mettre en place dans ma base de données.

    Actuellement ma base de donnée contient entre autres une table pour gérer des fichiers.
    Cette table contient des infos classiques :
    - ID
    - nom du fichier
    - extention
    - type de fichier
    - référence au propriétaire du fichier

    La référence au propriétaire du fichier est une référence externe vers la table des personnes.


    J'ai besoin de complexifier mon application et désormais un fichier n'est plus forcement attaché à une personne mais peut être attaché à un autre objet de ma base de donnée comme par exemple
    - une inscription
    - une animation
    - une salle
    - une exposition

    Comment puis-je gérer cela ? Je souhaite bien évidement conserver au maximums les contraintes d'intégrités et j'aimerais coté applicatif garder un code le plus générique possible.

    Un fichier ne peut être lié qu'a un seul autre objet (une personne, une inscription,...)
    Par contre un objet (une personne, une inscription,...) peut avoir plusieurs fichiers.

    Mon idée est d'utiliser une table de jointure pour chaque objet
    Ex
    table fichier_personnes ( reffichier, refpersonne) avec unicité sur le fichier
    table fichier_inscription (reffichier, refinscription) ...

    mais ceci ne me garanti pas l'unicité du reffichier entre toutes les tables de jointure et ne me permet pas de cascader les suppressions

    Je vous remercie d'avance de vos éclairages sur la question.

    Nathalie

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Votre idée est bonne.
    Il faudra passer par des déclencheurs (insert et update) sur chaque table associative pour assurer l'intégrité (unicité du fichier) ainsi que pour gérer vos suppressions en cascade.

    Une alternative est de mettre en place un héritage. En gros, ajouter une table mère "objet". Chaque table fille (personne, inscription, animation,...) héritera de cette nouvelle table : la clef primaire des tables filles sera également clef étrangère vers la table "objet".
    La table fichier référencera la table objet.
    Vous pourrez alors mettre en place la suppression en cascade, par contre il faudra ajouter des déclencheurs sur les tables filles pour assurer l'intégrité des objets : un personne ne peut également être une inscription,...

    plsu de détail sur l'héritage ici : http://sqlpro.developpez.com/cours/m...n/heritage/#L5


    Attention toutefois à la suppression en cascade. Elle simplifie certes les choses, mais il faut avoir conscience de sa présence. Lorsqu'on supprime une personne, on ne s'attend pas forcément à supprimer des fichiers de façon implicite...
    A utiliser donc a bon escient (suppression en cascade des détails d'une commande lors de la suppression d'une commande, suppression des adresses ou téléphones rattachés à une personne lors de la suppression de la personne,...)

Discussions similaires

  1. Quelle Base de Données pour gérer des documents multimédia ?
    Par Doudy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 21/01/2007, 20h52
  2. probleme de requete multi table pour exclure des resultats
    Par voilabad dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/05/2006, 08h49
  3. Meilleur type table pour stocker des valeurs numérique
    Par vodevil dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/04/2006, 20h42
  4. tables sys + stockage des contraintes
    Par XtofRoland dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/01/2006, 09h39
  5. Boucler sur une table pour renommer des valeurs
    Par webwhisky dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/01/2006, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo