Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 21/03/2011, 12h22   #1
Invité régulier
 
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 7
Points : 7
Par défaut Type d'un attribut

Bonjour,

Je suis entrain de mettre en place une base de données sous Sql Server, j'ai un attribut performance qui peut prendre soit A soit B soit C, je ne sais pas quel type je dois donner à cet attribut (je n'ai pas trouvé enum), je peux lui donner char(1) mais je ne pourrai pas controller les valeurs de cet attribut.

Et merci d'avance.
phenomeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h38   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

En effet, vous pouvez créer un table du style :

Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE performance_level
(
	performance_level_id tinyint identity NOT NULL CONSTRAINT PKperformance_level PRIMARY KEY
	, performance_level_label char(1) NOT NULL
	, performance_level_description varchar(128)
)
 
INSERT	INTO dbo.performance_level (performance_level_label, performance_level_description)
VALUES	('A', 'Niveau A')
	, ('B', 'Niveau B')
	, ('C', 'Niveau C')
Puis référencer cette table par intégrité référentielle (clé étrangère) dans d'autres tables de votre base de données

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h44   #3
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Vous auriez aussi pu ajouter une contrainte dans la définition de votre colonne limitant les valeurs à 'A','B' ou 'C'
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h15   #4
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Effectivement cette 2eme solution est également valable.

Si on supose que les valeurs peuvent changer ou évoluer, la solution donnée par Elsuket est alors plus facile à gérer par la suite. (ajout, modification ou suppression de la liste des valeurs à respecter dans une table avec contrainte de type clé étrangère).

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h47   #5
Invité régulier
 
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 7
Points : 7
Merci pour les réponses,

je pense que meme la solution d'ajout d'une contrainte est facile à gérer par la suite; il suffit d'ajouter les valeurs qu'on veut accepter après.
phenomeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 07h47   #6
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Tout dépend encore une fois de votre situation :-)

Imaginez que vous ayez à modifier vos valeurs souvent et que vous vouliez le faire depuis votre application ...

Il est plus simple dans ce cas d'avoir un formulaire de saisie qui vous permettra d'entrer, modifier ou supprimer vos valeurs dans la table de référence. Avec une contrainte de type CHECK, le processus de mise à jour depuis l'application sera plus compliqué.

Cependant vous n'êtes peut être pas dans ce cas et auquel cas la solution proposée par iberserk est tout à fait adaptée à votre besoin.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 08h15   #7
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Oui, je proposais une autre solution d'un point de vue technique mais personnelement j'utiliserais une table de référence de vos code performances (solution Elsuket).

Ainsi vous donnez plus de lisibilité à votre base de données:
Si un concurrent accordant plus de valeur à vos compétences décident de vous débaucher moyennant une substancielle augmentation et des Tickets resto de 8 euros au lieu de 7,5 , votre successeur sera obligé de fouiller dans le code de votre appli client pour trouver la signification métier de ces codes...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk 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 20h26.


 
 
 
 
Partenaires

Hébergement Web