Bonjour,
Je suis nouveau dans le monde des bases de données et j'aurai besoin de vos lumières pour m'aider à résoudre certaines interrogations concernant le fonctionnement du SQL.
Voici la base de donnée:
RACE (idRace,appellation)
IdRace :Clé primaire
ELEVEUR (idEleveur, nomEleveur, adresseRueEleveur, adresseCPEleveur, adresseVilleEleveur)
idEleveur :Clé primaire
VACHE(idVache,dateArrivee,idRace,idEleveur)
idVache :Clé primaire
idRace :Clé étrangère en référence à idEleveur de ELEVEUR
idEleveur: Clé étrangère en référence à idRace de RACE
INTERVENTION(idInter,libelleInter)
idInter :Clé primaire
PRATIQUER (dateInter,idInter,idVache)
DateInter,idInter,idVache :Clé primaire
idInter :Clé étrangère en référence à idInter de INTERVENTION
idVache :Clé étrangère en référence à idVache de VACHE
A partir de ce schéma relationnel on me demande de mettre à jour la base en intégrant le fait que les vaches arrivées le 20/08/2010 ont été euthanasiées le jour même.
Pour ce faire voici mes requêtes:
Le problème se pose au niveau du champs idInter qui est une clé primaire donc NON NULL. Si je laisse ce champ vide le SGBDR me renverra une erreur de même si je mets NULL. Sachant que je ne peux connaitre la valeur de ce champ comment puis-je faire pour que celui-ci s'incrémente automatiquement? Ne connaissant ni sa valeur, ni le type de donné je suis perdu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 INSERT INTO pratiquer (idInter, dateInter, idVache) SELECT NULL, dateArrivee, idVache FROM vache WHERE dateArrivee = '20/08/2010' INSERT INTO intervention (libelleInter, idInter) SELECT 'euthanasie', idInter FROM pratiquer WHERE dateInter = '20/08/2010'
Seconde interrogation:
On me demande de modifier à partir du schéma relationnel ci-dessous la base de données pour mémoriser la généalogie d'une vache, c'est à dire lors d'une mise bas, enregistrer l'identité de la "vache-mère" d'une vache.
VACHE(idVache, dateArrivee, idRace, idEleveur, idPays)
idVache :Clé primaire
idRace :Clé étrangère en référence à idEleveur de ELEVEUR
idEleveur: Clé étrangère en référence à idRace de RACE
idPays: Clé étrangère en référence à idPays de PAYS
idMere: Clé étrangère en référence à idvache de VACHE
Dictionnaire des données:
idVache character varying précision 0
Voici ma requête:
Le problème est que si je ne me trompe une clé étrangère tout comme une clé primaire doit toujours être au préalable déclarée or dans le schéma relationnel idMere ne l'est pas. Est-ce que ma requête fonctionnera?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE vache ADD CONSTRAINT fk_mere FOREIGN KEY (idMere) REFERENCES vache (idVache)
En vous remerciant par avance pour les éclaircissement que vous pourrez m'apporter.
Cordialement
Partager