Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 27/03/2011, 18h13   #1
Futur Membre du Club
 
Inscription : décembre 2009
Messages : 105
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 105
Points : 17
Points : 17
Par défaut Création d'un attribut varchar[] dont les valeurs sont choisies dans une liste prédéfinie

Bonjour ,

Je souhaite créér une table collection avec pour attribut theme qui est un varchar[]

Code :
1
2
3
4
CREATE TABLE collections(
code_collection smallint CONSTRAINT code_collection_CP PRIMARY KEY,
theme varchar[]
);
Je souhaite à ce que theme soit un élément de la liste {'romans','sciences humaines', 'informatique'} (pour faire simple)

Du coup, j'ai fait:
Code :
1
2
3
ALTER TABLE collections
ADD CONSTRAINT collections_theme_valeurs
CHECK(theme IN ('romans','sciences humaines', 'informatique'));
Mais ceci ne marche pas: pouvez vous m'aider svp?

Merci d'avance
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 08h55   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
oula

il vaut mieux faire une table des themes

Code :
1
2
3
4
CREATE TABLE theme(
id_theme smallint .....
theme varchar(50)
);
et une table des collections qui es associee avec la table theme par une cl etrangeres

voir les tuto de SQLPro

a+
olivier
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 10h36   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 446
Points : 10 446
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par dehorter olivier Voir le message
oula
il vaut mieux faire une table des themes
C'est le serpent qui se mord la queue puisque c'est déjà une table de référence !

@bsangoku > Quel est votre SGBD ? Peut-être ne supporte-t-il pas les contraintes CHECK.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 11h26   #4
Futur Membre du Club
 
Inscription : décembre 2009
Messages : 105
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 105
Points : 17
Points : 17
Bonjour,

Mon SGBD est postgresql et les check sont supportés, car pour les autres tables les check marchaient...

Peut être que mon exemple n'est pas très pertinent: par exemple, dans thème je veux choisir des valeurs dans une liste {science fiction, aventure, policier, fantastique...}

Et j'ai par exemple le livre Harry Potter. Avec un varchar(50)
et
Code :
1
2
3
ALTER TABLE collections
ADD CONSTRAINT collections_theme_valeurs
CHECK(theme IN ('science fiction', 'aventure', 'policier', 'fantastique'));
Je peux alors associer à Harry Potter le thème fantastique ou le thème aventure mais pas le couple thème (fantastique, aventure) : en effet, un même livre peut avoir plusieurs thèmes...
Et c'est ce couple je cherche à créer. avec un varchar[]..

Merci à tous ceux qui cherchent à m'aider
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 12h02   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

La solution d'olivier me parait cohérente.

avec les dernières précisions de bsangoku, je dirais qu'il faudrait une troisième table pour les couples code_collection/id_theme (avec une contrainte d'unicité sur ce couple)


@bsangoku :
Si un roman peut avoir plusieurs thèmes, alors il y aura plusieurs lignes dans cette table.

Citation:
collection
---------------------------------
code_collection ---> Titre
1 ---> harry potter

theme
----------------------------------
id_theme ---> nomTheme
1 ---> science fiction
2 ---> aventure
3 ---> policier
4 ---> fantastique

collection_theme
-----------------------------------
code_collection ---> id_theme
1 ---> 4
1 ---> 2
aieeeuuuuu 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 22h19.


 
 
 
 
Partenaires

Hébergement Web