Précédent   Forum des professionnels en informatique > Général Développement > Conception > Modélisation > Schéma
Schéma Modélisation Relationnelle (Dépendances Fonctionnelles, Formes Normales, Entité-relation, MCD, MPD ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 15h56   #1
Membre Expert
 
Avatar de pmithrandir
 
Homme Pierre Bonneau
Développeur Web
Inscription : mai 2004
Messages : 873
Détails du profil
Informations personnelles :
Nom : Homme Pierre Bonneau
Âge : 28
Localisation : Roumanie

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2004
Messages : 873
Points : 1 593
Points : 1 593
Envoyer un message via MSN à pmithrandir Envoyer un message via Skype™ à pmithrandir
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 :
Citation:
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
Citation:
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
pmithrandir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 16h15   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 680
Points : 2 680
Bonjour,

Avez-vous lu cet article ? http://sqlpro.developpez.com/cours/m...n/metadonnees/
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 16h25   #3
Membre Expert
 
Avatar de pmithrandir
 
Homme Pierre Bonneau
Développeur Web
Inscription : mai 2004
Messages : 873
Détails du profil
Informations personnelles :
Nom : Homme Pierre Bonneau
Âge : 28
Localisation : Roumanie

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2004
Messages : 873
Points : 1 593
Points : 1 593
Envoyer un message via MSN à pmithrandir Envoyer un message via Skype™ à pmithrandir
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.

Citation:
Vous avez inséré "azerty" dans un integer
Citation:
Vous avez inséré "3.568" dans un integer
...
pmithrandir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 16h42   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 680
Points : 2 680
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.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 17h44   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 07h10   #6
Membre Expert
 
Avatar de pmithrandir
 
Homme Pierre Bonneau
Développeur Web
Inscription : mai 2004
Messages : 873
Détails du profil
Informations personnelles :
Nom : Homme Pierre Bonneau
Âge : 28
Localisation : Roumanie

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2004
Messages : 873
Points : 1 593
Points : 1 593
Envoyer un message via MSN à pmithrandir Envoyer un message via Skype™ à pmithrandir
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...
pmithrandir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 09h04   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h12.


 
 
 
 
Partenaires

Hébergement Web