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 28/03/2011, 20h44   #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 Problème dans mon check

Bonjour

Soit artiste et acteur deux tables

Code :
1
2
3
ALTER TABLE Acteur
ADD cONSTRAINT couple_compatible
CHECK ((ArtistID==artiste.ArtistID )AND(Nom=artiste.Nom)AND(Nationalite=artiste.Nationalite));
Pouvez vous m'expliquer pourquoi mon check n'est pas bon?

Merci d'avance
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 11h19   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Ce qui n'est pas bon, c'est surtout que tu as de la redondance de données entre les tables artiste et acteur !

Dans ta précédente discussion, je t'ai expliqué qu'il vaudrait mieux mettre en oeuvre un héritage correct ou carrément de supprimer cette table fille Acteur et de typer les artistes.

Qu'est-ce qui te fait dire que le CHECK n'est pas bon ?
Message d'erreur ?
Il laisse passer de mauvaises données ?
L'ordinateur explose ?
__________________
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 29/03/2011, 14h58   #3
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
C'est un message d'erreur comme quoi je ne peux dire artiste.artisteID...

Revenons sur l'héritage: je préfère plus réussir avec l'héritage... Je vous envoie par message privée le code (parce que c'est un projet à faire et que je ne veux pas que mes camarades de classe retrouvent le code pour recopier ce que j'ai fait ). Pourriez vous me dire où se situe le problème dans mon code svp? Merci d'avance
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 16h17   #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
Mais comment gérer l'héritage soi même? Parce qu'en cours on a vu que la méthode inherits...

Pouvez vous m'éclaircir sur ce point?
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 16h38   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
La réponse est dans ce message de l'autre discussion.
Tu crées les tables sans INHERITS mais seulement avec les clés étrangères.

Ceci dit :
Citation:
(parce que c'est un projet à faire et que je ne veux pas que mes camarades de classe retrouvent le code pour recopier ce que j'ai fait )
Si on t'impose dans cet exercice d'utiliser INHERITS, je ne voudrais pas être la cause d'un beau zéro !

Si tu es libre de ne pas utiliser l'héritage, relis mon message, tu n'as à mon avis pas besoin d'héritage !
J'ai vu dans la structure que tu m'as envoyée que tu ajoute une colonne à la table réalisateur pour stocker le nombre de films réalisés. C'est en principe une propriété calculable qui n'a pas à être stockée en BDD. Donc jusqu'à preuve du contraire, l'héritage dans ce cas précis n'a aucun intérêt puisque les acteurs et les réalisateurs n'ont pas d'attributs spécifiques par rapport à un réalisateur.
__________________
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 29/03/2011, 16h52   #6
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
Tu m'avais dis dans l'ancien message que

Citation:
Le processus normal est de créer d'abord l'artiste puis de récupérer son id afin de l'utiliser pour alimenter la table fille.
Mais problème : comment récuperer son id? Et personnellement faudrait pas récuperer le triplet (artisteid,nom ,nationalité)? (ce n'est qu'une suggestion)

Ps: je t'ai envoyé le sujet par message privée pour que tu puisse voir que l'hértage est obligatoire d'après le sujet... (page 1)
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h02   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par bsangoku Voir le message
Mais problème : comment récuperer son id?
Avec MySQL, on utilise LAST_INSERT_ID mais avec Postgresql je ne sais pas.
Voir la doc.

Citation:
Et personnellement faudrait pas récuperer le triplet (artisteid,nom ,nationalité)? (ce n'est qu'une suggestion)
Tu récupères l'ID pour alimenter la table fille. Mais ceci est dans le cadre d'un héritage à la main.

Je crois qu'avec Postgresql, tu alimentes directement la table fille car l'identifiant ne fait pas réellement partie de la table fille mais de la table mère.

Ce qui est bizarre, c'est que tu puisses insérer deux artistes avec le même identifiant. Le mieux dans ce cas est peut-être d'utiliser une séquence pour auto-incrémenter l'identifiant.


Citation:
Ps: je t'ai envoyé le sujet par message privée pour que tu puisse voir que l'hértage est obligatoire d'après le sujet... (page 1)
J'ai reçu un message vide que j'ai supprimé. Il y avait une pièce jointe ?

Comme quoi il vaut mieux communiquer sur le forum ! Surtout que l'énoncé du problème peut être mis en pièce jointe dans le forum. On saura plus concrètement à quoi tu es confronté.
__________________
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 29/03/2011, 21h42   #8
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
C'est un sujet que j'ai scanné sosu forme pdf, je ne sais pas comment vous l'envoyer...

Par contre, j'ai essayé avec les serial et ça ne marche toujours pas...
bsangoku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 08h35   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par bsangoku Voir le message
C'est un sujet que j'ai scanné sosu forme pdf, je ne sais pas comment vous l'envoyer...
Poste le ici en pièce jointe !

Sous la zone de saisie du message, dans les "Options supplémentaires", tu as un bouton "Gérer les pièces jointes".
__________________
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 00h00.


 
 
 
 
Partenaires

Hébergement Web