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

Langage SQL Discussion :

[SQL] Base de données d'images - ajouter des métadonnées


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut [SQL] Base de données d'images - ajouter des métadonnées
    Bonjour,

    j'ai créé récemment une base de données d'images. En fait, j'ai créé entre autre, une table qui contient un champ 'chemin' où se trouve l'image sur le serveur.

    Et en fait, maintenant, je dois ajouter des métadonnées concernant une image dans la base. Ces métadonnées peuvent être par exemple un objet se trouvant dans l'image. Mais il peut y avoir plusieurs métadonnées pour une image.

    Je me demandais comment je pouvais rajouter ses métadonnées dans la BDD. S'il n'y avait qu'une métadonnée par image, le pb serait réglé, je rajouterais un champ dans ma table IMAGE mais comme le nombre peut être variable, je ne vois pas trop comment faire ?

  2. #2
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Quelqu'un a une idée sur mon pb ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Par défaut
    Tout d'abord, sur quel SGBD tu travailles ? Oracle, Mysql, Access ?

    J'ai réalisé une base de données images sous Oracle 9i.
    Le but n'est pas de stocker l'adresse de l'image mais l image elle même.
    Grâce à des méthodes d'Oracle, tu peux comparer des images selon leur coloris, leur texture ... etc via le type Ordimage
    Faire également des compositions d'objets, c'est à dire savoir dans une image quels sont les objets placés par rapport à d'autres (N,S,E,O) :
    - Graphe de position
    - Utilisation des objets spatials MDSYS.SDO_GEOMETRY

    Pour les méta données, tu dois utiliser des mots-clés pour une image ainsi que les objets sélectionnés dans l'image.Tu peux également ajouter un thésaurus c'est à dire que tu utilises un dictionnaire de synonyme selon le domaine de ta bdd afin de faciliter la recherche :

    ex : si tu recherches un félin, il te sort des chats, des lions, des guépards ...

    Voici une bdd qui peut t'inspirer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
     
    -- -----------------------------------------------------------------------------
    --             Génération d'une base de données pour
    --                      Oracle Version 9.xx
    --                        (2/6/2004 10:32:02)
    -- -----------------------------------------------------------------------------
    --      Nom de la base : Image
    --      Projet : 
    --      Auteur : romain
    --      Date de dernière modification : 2/6/2004 10:31:00
    -- -----------------------------------------------------------------------------
     
    DROP TABLE IMAGE CASCADE CONSTRAINTS;
     
    DROP TABLE GROUPE CASCADE CONSTRAINTS;
     
    DROP TABLE SIGNATURE CASCADE CONSTRAINTS;
     
    DROP TABLE OBJET CASCADE CONSTRAINTS;
     
    DROP TABLE MOT_CLE CASCADE CONSTRAINTS;
     
    DROP TABLE DEFINIR_IM CASCADE CONSTRAINTS;
     
    DROP TABLE DEFINIR_OBJ CASCADE CONSTRAINTS;
     
    DROP TABLE APPARTENIR CASCADE CONSTRAINTS;
     
    -- -----------------------------------------------------------------------------
    --       CREATION DE LA BASE 
    -- -----------------------------------------------------------------------------
     
     
    -- -----------------------------------------------------------------------------
    --       TABLE : IMAGE
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE IMAGE
       (
        NUMIMAGE NUMBER(2)  NOT NULL,
        DATECREATION DATE  NULL,
        DATEINSERT DATE  NULL,
        CREATEUR CHAR(32)  NULL,
        COPYRIGHT CHAR(32)  NULL,
        IMAGE ORDSYS.ORDImage  NULL,
        IMAGETTE ORDSYS.ORDImage  NULL,
        COMMENTAIRE CHAR(32)  NULL
    ,   CONSTRAINT PK_IMAGE PRIMARY KEY (NUMIMAGE) ) ;
     
    -- -----------------------------------------------------------------------------
    --       INDEX DE LA TABLE IMAGE
    -- -----------------------------------------------------------------------------
     
    --CREATE  INDEX I_FK_IMAGE_SIGNATURE
    --     ON IMAGE (NUMSIGN ASC)
     --   ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : GROUPE
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE GROUPE
       (
        IDGROUPE CHAR(32)  NOT NULL,
        NOMGROUPE CHAR(32)  NULL
    ,   CONSTRAINT PK_GROUPE PRIMARY KEY (IDGROUPE)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : SIGNATURE
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE SIGNATURE
       (
        NUMSIGN NUMBER(2)  NOT NULL,
        SIGNATURE ORDSYS.ORDImageSignature NULL
    ,   CONSTRAINT PK_SIGNATURE PRIMARY KEY (NUMSIGN)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : OBJET
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE OBJET
       (
        NUMOBJET NUMBER(2)  NOT NULL,
        NUMIMAGE NUMBER(2)  NOT NULL,
        NOMOBJET NUMBER(2)  NULL,
        SPATIAL MDSYS.SDO_GEOMETRY  NULL
    ,   CONSTRAINT PK_OBJET PRIMARY KEY (NUMOBJET)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       INDEX DE LA TABLE OBJET
    -- -----------------------------------------------------------------------------
     
    CREATE  INDEX I_FK_OBJET_IMAGE
         ON OBJET (NUMIMAGE ASC)
        ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : MOT_CLÉ
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE MOT_CLE
       (
        LIBELLE CHAR(32)  NOT NULL
    ,   CONSTRAINT PK_MOT_CLE PRIMARY KEY (LIBELLE)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : DÉFINIR_IM
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE DEFINIR_IM
       (
        NUMIMAGE NUMBER(2)  NOT NULL,
        LIBELLE CHAR(32)  NOT NULL
    ,   CONSTRAINT PK_DEFINIR_IM PRIMARY KEY (NUMIMAGE, LIBELLE)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       INDEX DE LA TABLE DÉFINIR_IM
    -- -----------------------------------------------------------------------------
     
    CREATE  INDEX I_FK_DEFINIR_IM_IMAGE
         ON DEFINIR_IM (NUMIMAGE ASC)
        ;
     
    CREATE  INDEX I_FK_DEFINIR_IM_MOT_CLE
         ON DEFINIR_IM (LIBELLE ASC)
        ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : DÉFINIR_OBJ
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE DEFINIR_OBJ
       (
        LIBELLE CHAR(32)  NOT NULL,
        NUMOBJET NUMBER(2)  NOT NULL
    ,   CONSTRAINT PK_DÉFINIR_OBJ PRIMARY KEY (LIBELLE, NUMOBJET)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       INDEX DE LA TABLE DÉFINIR_OBJ
    -- -----------------------------------------------------------------------------
     
    CREATE  INDEX I_FK_DEFINIR_OBJ_MOT_CLE
         ON DEFINIR_OBJ (LIBELLE ASC)
        ;
     
    CREATE  INDEX I_FK_DEFINIR_OBJ_OBJET
         ON DEFINIR_OBJ (NUMOBJET ASC)
        ;
     
    -- -----------------------------------------------------------------------------
    --       TABLE : APPARTENIR
    -- -----------------------------------------------------------------------------
     
    CREATE TABLE APPARTENIR
       (
        NUMIMAGE NUMBER(2)  NOT NULL,
        IDGROUPE CHAR(32)  NOT NULL
    ,   CONSTRAINT PK_APPARTENIR PRIMARY KEY (NUMIMAGE, IDGROUPE)  
       ) ;
     
    -- -----------------------------------------------------------------------------
    --       INDEX DE LA TABLE APPARTENIR
    -- -----------------------------------------------------------------------------
     
    CREATE  INDEX I_FK_APPARTENIR_IMAGE
         ON APPARTENIR (NUMIMAGE ASC)
        ;
     
    CREATE  INDEX I_FK_APPARTENIR_GROUPE
         ON APPARTENIR (IDGROUPE ASC)
        ;
     
     
    -- -----------------------------------------------------------------------------
    --       CREATION DES REFERENCES DE TABLE
    -- -----------------------------------------------------------------------------
     
     
    --ALTER TABLE IMAGE ADD (
    --     CONSTRAINT FK_IMAGE_SIGNATURE
    --          FOREIGN KEY (NUMSIGN)
    --               REFERENCES SIGNATURE (NUMSIGN))   ;
     
    ALTER TABLE OBJET ADD (
         CONSTRAINT FK_OBJET_IMAGE
              FOREIGN KEY (NUMIMAGE)
                   REFERENCES IMAGE (NUMIMAGE))   ;
     
    ALTER TABLE DEFINIR_IM ADD (
         CONSTRAINT FK_DEFINIR_IM_IMAGE
              FOREIGN KEY (NUMIMAGE)
                   REFERENCES IMAGE (NUMIMAGE))   ;
     
    ALTER TABLE DEFINIR_IM ADD (
         CONSTRAINT FK_DÉFINIR_IM_MOT_CLE
              FOREIGN KEY (LIBELLE)
                   REFERENCES MOT_CLE (LIBELLE))   ;
     
    ALTER TABLE DEFINIR_OBJ ADD (
         CONSTRAINT FK_DEFINIR_OBJ_MOT_CLE
              FOREIGN KEY (LIBELLE)
                   REFERENCES MOT_CLE (LIBELLE))   ;
     
    ALTER TABLE DEFINIR_OBJ ADD (
         CONSTRAINT FK_DEFINIR_OBJ_OBJET
              FOREIGN KEY (NUMOBJET)
                   REFERENCES OBJET (NUMOBJET))   ;
     
    ALTER TABLE APPARTENIR ADD (
         CONSTRAINT FK_APPARTENIR_IMAGE
              FOREIGN KEY (NUMIMAGE)
                   REFERENCES IMAGE (NUMIMAGE))   ;
     
    ALTER TABLE APPARTENIR ADD (
         CONSTRAINT FK_APPARTENIR_GROUPE
              FOREIGN KEY (IDGROUPE)
                   REFERENCES GROUPE (IDGROUPE))   ;
     
     
    -- -----------------------------------------------------------------------------
    --                FIN DE GENERATION
    -- -----------------------------------------------------------------------------

  4. #4
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Il est clair que ta technique est super bien mais le problème est que je ne peux pas utiliser Oracle. Je dois me limiter à MySQL.

    Pour te dire franchement, je pense que mon pb est tout simple à régler mais là, je ne vois pas comment.

    Il est vrai que je pourrais créer une table objet qui contiendra tous les objets qu'il est possible de rencontrer dans une image mais je n'arrive pas à voir comment je peux faire le lien entre une image et plusieurs objets car c'est là la petite astuce, c'est qu'une image peut évidemment contenir plusieurss objets à la fois donc je pense que faire un lien entre la table image et la table objet ne servira à rien.

    Tu vois ce que je veux dire ?

  5. #5
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Aidez moi SVP !!


  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 995
    Billets dans le blog
    6
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Salut,

    je te remercie pour ce lien. J'utilisais déjà un modèle correspondant au premier lien.

    J'ai donc regardé attentivement le modèle présenté dans le second lien et il y a un truc que je ne comprend pas.

    La talbe TR_CARACTERISTIQUE_CAR permet d'associer à une entreprise, une caractèristique dont on a la valeur.
    Mais ensuite, quel est l'intérêt de créer une table TR_VALEUR_VLR qui contiendra toutes les caractéristiques possibles ?
    Et sinon, quel est l'intérêt de faire une table TR_TYPE_DONNEE dans ce modèle ?
    On a pas besoin de savoir quel est la longueur d'un type de données ?

    Qu'en pensez vous ?

    Et sinon, je crois que je n'ai pas compris le principe de ce genre de modèle car je me pose encore la question de savoir comment je vais pouvoir ajouter pour une image de ma base, plusieurs métadonnées.
    Car même si je créé une table avec toutes les métadonnées qu'il est possible de rencontrer sur une image, comment, dans la table IMAGE, est-il possible de faire le lien vers PLUSIEURS métadonnées ??
    Mais je n'ai peut etre pas du tout comrpis le principe !!!!!!

  8. #8
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Personne ne peut m'expliquer ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Par défaut
    Je ne vois pas ou tu peches.

    Tu créés les tables suivantes :
    Image (numimage)
    Objet (numobjet)
    Contenir (numimage,numobjet)
    Mot_Cle (LibelleMotCle)
    Contenir2 (numimage,LibelleMotCle)

    Une image peut ne pas contenir d'objets ou plusieurs (cardinalité 0..n)
    Un objet est forcément dans une image ou dans plusieurs (cardinalité 1..n)
    Soit tu insères tes images dans la base sans saisir tes objets (tu peux le faire avec la cardinalité 0) et ensuite remplir les tables Objet et Contenir via une interface
    Soit tu insères l' image et les objets en même temps.
    Tu fais de même pour les mots-cles via la table Contenir2

    Et en fait, maintenant, je dois ajouter des métadonnées concernant une image dans la base. Ces métadonnées peuvent être par exemple un objet se trouvant dans l'image. Mais il peut y avoir plusieurs métadonnées pour une image.
    Je me demandais comment je pouvais rajouter ses métadonnées dans la BDD. S'il n'y avait qu'une métadonnée par image, le pb serait réglé, je rajouterais un champ dans ma table IMAGE mais comme le nombre peut être variable, je ne vois pas trop comment faire ?
    Est-ce que tu analyses le problème avant de te lancer dans la construction de ta bd?
    Si oui quelle méthode d'analyse utilises-tu? Merise, UML ?

  10. #10
    Membre confirmé Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Non il est vrai que je ne l'analyse pas car je n'ai pas trop le temps.
    Mais j'ai déjà mieux compris ce que tu m'expliques.

    Mais je sais également ce que tu vas me dire : perdre du temps pour faire du Merise ou de l'UML va m'ne faire ganger pour la création de la BDD.

    Mais je crois que ca va aller.

    Merci de tes explications.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Par défaut
    ok
    Bonne chance pour la suite et si tu as un problème de conception n'hésite pas
    Mais tu seras qu'il faut toujours analyser un problème avant de se lancer dans une conception car si tu fais un gros projet tu ne t'en sortiras jamais.
    Voilà ca fait un peu prof mais le temps perdu pour l'analyse est largement récupérer lors de sa mise en place et de sa maintenance.

    Bon courage

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/05/2015, 17h28
  2. [Pervasive.SQL]Base de données
    Par jidea dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 05/03/2007, 10h58
  3. peut on créer une base de données pour image?
    Par adamalbert dans le forum Access
    Réponses: 3
    Dernier message: 26/05/2006, 16h10
  4. Taille d'une base de données de l'ensemble des voitures...
    Par djbenvik dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 03/11/2005, 08h34

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