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

Requêtes PostgreSQL Discussion :

Base de données object et Membres composites


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut Base de données object et Membres composites
    Bonjour,

    Pour un projet en base de données orientée objet, nous devons mettre en place des types personnalisés (comme des classes).
    A la base, nous étudions cela sous Oracle qui nous permet de faire pratiquement tout ce qu'on veut en objet mais pour des raisons pratiques, nous ne pouvons utiliser que postgreSQL (c'est déjà très bien mais on sait rien sur le sujet).

    Voici notre modèle de base:
    Concept : Contient un membre vedette
    Terme: Type abstrait
    Vedette: Hérite de Terme
    Synonyme: Hérite de Terme et contient un membre vedette.

    Pour représenter cela en postgreSQL, nous avons créé les tables car il ne semble pas permettre qu'on puisse créer des types abstrait et héritable.
    Cependant, pour chaque table créée, il créé le type composite associé.
    Cela semblait être un bon compromis mais il semblerait que les membres composites (par exemple vedette dans Concept) ne soient pas concrètement liés à la table vedette.
    n'y a t il pas un moyen de l'obliger ? N'y a t il pas un autre modèle possible que vous pourriez me proposer ?
    J'ai vu qu'il existait des OID qui fonctionnerait comme des pointeurs (mais en fait ce sont des sortes de clés primaires), suis je obligé de les utiliser pour composer mes type entre eux ?! Car là, on commence à vachement dériver du sujet initial alors ça nous embête un peu.

    EDIT: A la base, j'ai posté dans cette partie car je voulais savoir comment faire un INSERT et un UPDATE sur des types composites liés à d'autres tables.

    Merci de m'avoir lu.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    PostgreSql gère une sorte d'héritage, via l'inheritence.
    http://www.postgresql.org/docs/9.1/s...l-inherit.html

    Mais perso je trouve que gérer ceci via trigger / vue est beaucoup plus simple (en particulier à cause du fait que les données ne sont pas propagée entre les tables..)


    que veux dire ceci ?
    Cela semblait être un bon compromis mais il semblerait que les membres composites (par exemple vedette dans Concept) ne soient pas concrètement liés à la table vedette.
    Pouvez-vous expliquer un peu mieux votre problème actuel avec un exemple concret ? (la définition des tables serai un bon début)


    edit : question subsidiaire : pourquoi vouloir faire de l'object-relationnal avec pgsql ? Surtout si vous comptez créer des tables qui contiennent des array .. c'est se tirer un peu une balle dans le pied pour pas grand chose non ?

    http://asktom.oracle.com/pls/asktom/...:1545206281987 (article un peu vieux mais discussion intéressante sur l'approche objet-relationnel)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    D'abord, merci de ta réponse.

    Citation Envoyé par punkoff Voir le message
    PostgreSql gère une sorte d'héritage, via l'inheritence.
    http://www.postgresql.org/docs/9.1/s...l-inherit.html
    Ca c'est bon, on l'utilise, c'est pas super terrible m'enfin, c'est surtout au niveau de la composition qu'on a un soucis.

    Citation Envoyé par punkoff Voir le message
    Mais perso je trouve que gérer ceci via trigger / vue est beaucoup plus simple (en particulier à cause du fait que les données ne sont pas propagée entre les tables..)
    Ca fait partie des contraintes.

    Citation Envoyé par punkoff Voir le message
    que veux dire ceci ?
    Si j'ai ved (de type vedette) membre composite de concept et que vedette est un type créé par la table du même nom, ceci n'est pas un pointeur vers une entrée de la table vedette mais bel et bien un objet à part.
    Il faudrait que ce soit un pointeur vers un objet vedette, un vrai ! (appartenant à la table vedette)

    Citation Envoyé par punkoff Voir le message
    Pouvez-vous expliquer un peu mieux votre problème actuel avec un exemple concret ? (la définition des tables serai un bon début)
    Mes tables (et types):
    Concept:
    - vedette : vedette

    Terme:
    - libelle : varchar(30)

    Vedette (Hérite de Terme):
    - dataAjout : Date

    Synonyme (Hérite de Terme):
    - vedette : vedette

    J'ai enlevé les champs annexes donc du coup, ça change pas beaucoup de ce que j'avais déjà donné

    Citation Envoyé par punkoff Voir le message
    edit : question subsidiaire : pourquoi vouloir faire de l'object-relationnal avec pgsql ? Surtout si vous comptez créer des tables qui contiennent des array .. c'est se tirer un peu une balle dans le pied pour pas grand chose non ?
    Parce que c'est un projet d'objet-relationnel et de ce qu'on en sait, il n'y a normalement qu'Oracle et pgsql qui le permettent, or Oracle est payant donc il reste que pgsql (de plus c'est intéressant d'apprendre le pgsql en sachant que c'est l'un des plus performants).
    enfin, il n'est nullement question d'utiliser des tableaux, varray, nested table ou autres, juste des pointeurs vers des entrées d'une autre table.
    Mais apparemment, je vais devoir jouer avec les OID et faire passer ça pour des pointeurs.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Parce que c'est un projet d'objet-relationnel et de ce qu'on en sait, il n'y a normalement qu'Oracle et pgsql qui le permettent, or Oracle est payant donc il reste que pgsql
    C'est discutable.
    Si c'est un projet à but éducatif, il n'est pas nécessaire d'acheter des licences, vous pouvez utiliser Oracle XE (Express Edition).
    Côté postgresql, à part l'héritage de table, il n'y a pas d'autre fonctionnalité objet, si bien que le qualifier de SGBD objet est abusif.
    A mon avis c'est un malentendu d'origine historique. Au départ il y avait une potentialité objet, d'où l'existence des OIDs et le qualificatif d' "objet-relationnel". Mais ce potentiel n'a finalement pas été développé.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    C'est assez dommage, je vais voir ce que veulent les profs et on s'orientera soit vers les OIDs, soit vers Oracle (d'une manière ou d'une autre).

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/07/2015, 11h55
  2. base de données et zone membre
    Par Souri84 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/09/2010, 14h59
  3. Réponses: 1
    Dernier message: 12/12/2007, 10h02
  4. [MySQL] Comment modifier l'ancien mot de passe du membres dans la base de donnée ?
    Par oceanne dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/03/2007, 12h11
  5. [MySQL] Information membre non inscrite dans la base de donnée
    Par Margouillat974 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 28/09/2006, 19h21

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