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

Schéma Discussion :

Valeurs de types différents


Sujet :

Schéma

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut Valeurs de types différents
    Bonjour.

    J'ai un problème qui revient plusieurs fois dans les schéma de bdd que je regarde et qui me chiffonne un peu.

    Imaginons un schéma comme celui ci :
    Device
    - device_id
    - device_name

    Device_options
    - device_option_id
    - device_id(FK)
    - date_insertion
    - name
    - created_by
    et maintenant ceci... qui me gène pas mal
    Device_option_value_int
    - device_option_id
    - value : INT

    Device_option_value_varchar
    - device_option_id
    - value : VARCHAR

    Device_option_value_float
    - device_option_id
    - value : FLOAT

    Device_option_value_boolean
    - device_option_id
    - value : BOOLEAN
    Comment pouvons nous prévoir ce choix de variables de manière élégante.

    je vois par exemple comme solution :
    - mettre une colonne par type de valeur (value_int, value_varchar...) et sélectionner la première non null dans la requête : pas très élégant je trouve
    - avoir une seule colonne de type varchar et mettre perdre le type comme information... plus ou moins réalisable en fonction des fois...

    Mais j'avoue que je bloque... et faire 4 jointure pour quelque chose d'aussi stupide... me parait hallucinant.

    Merci,
    Pierre

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Avez-vous lu cet article ? http://sqlpro.developpez.com/cours/m...n/metadonnees/

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Bonjour,

    Merci pour cette réponse.

    Ce qui m'embete dans ce schéma, qui finalement ressemble beaucoup a celui que j'ai(on externalise les nouvelles caractéristiques), est que la valeur (CRE_VALEUR) est définie en caractères... on perd donc le type de la valeur dans la colonne... C'était la première idée qui me venait, mais ca m'embetait de perdre ce type(int, varchar, float...) En particulier, parce que le fait d'avoir un type garantie nativement d'avoir des données compatibles d'insérées, et des erreurs compréhensibles retournées tout de suite en cas d'erreur.

    Vous avez inséré "azerty" dans un integer
    Vous avez inséré "3.568" dans un integer
    ...

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Faut des traitements côté applicatif (où côté base selon vos affinités)
    Un coup d'expression régulière et on en parle plus.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu peux aussi avoir la colonne qui porte la valeur de type VARCHAR et une colonne qui indique le type de la valeur.
    Ensuite, il doit être possible de mettre une contrainte CHECK (ou un trigger) qui vérifie que le type de la valeur insérée correspond bien au type de valeur annoncé.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Merci...

    En fait, ca m'étonne beaucoup qu'il n'y ai pas un truc bateau en conception pour ce problème que l'on retrouve tous les 4 matins...

    L'idée du trigger de contrainte, c'est pas mal, mais ca me parait encore bien lourd...

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par pmithrandir Voir le message
    L'idée du trigger de contrainte, c'est pas mal, mais ca me parait encore bien lourd...
    Pas plus que de vérifier qu'une date de fin est bien postérieure à la date de début !

    Sauf si l'utilisateur est le docteur Emmet Brown mais bon...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. stocker des valeurs de type différent
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2005, 09h36
  2. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10
  3. Tableau d'objets de type différents
    Par Hell dans le forum C++
    Réponses: 9
    Dernier message: 11/01/2005, 22h57
  4. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 22h28
  5. Réponses: 2
    Dernier message: 07/10/2004, 17h00

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