Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
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 08/08/2006, 09h29   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
Par défaut suppression dans une table qui contient une clé etrangère

bonjour à tous !

j'ai deux tables suivantes:
appel(idappel,dat_appel,idqui_appelle)

qui_appelle(idqui_appelle,quiappelle)

pour gerer la table qui_appelle j'ai crée un une page qui permet la création,modification et suppression.

de même pour la table appel j'ai crée un interface qui permet la création des appel et modification des appels mais pas la suppression.

maintenant mon souci c'est que j'ai des doutes sur la suppression de
qui_appelle parce que si on supprime un enregistrement dans qui_appelle

il faut supprimer son id dans appel donc on aura une perte d'infos dans appel.

quellqu'un peut m'expliquer ce je dois faire ?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 09h40   #2
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 10
Points : 13
Points : 13
Salut,

En effet si tu supprime un de tes "qui_appelle" tu perd l'information dans ta table des appels.

Je te propose une chose même si je ne sais pas au juste ce que tu veux faire de ces informations; si tu dois supprimer un "qui_appelle", utilise dans la table un champ "supprime" qui va t'indiquer si cet appelant est actif afin de ne pas perdre d'information.

Donne nous plus d'informations sur ce que tu veux faire de ces données.
manu$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h12   #3
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci de ta réponse!

les appels serons stockés dans la base pour pouvoir faire des statistiques periodiques exemple : nombre d'appels reçus par rapport à leurs provenances (qui_appelle).
voila, c'est pour ça que j'avais des doutes.

a+
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h16   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Avec une contrainte d'intégrité référentielle, tu n'auras pas d'inquiétude à avoir.
C'est ton SGBD qui au choix te refusera la suppression d'un appelant qui a encore des appels ou supprimera tous les appels d'un appelant supprimé.

Regarde du côté des clauses ON DELETE CASCADE et FOREIGN KEY...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h18   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 10
Points : 13
Points : 13
Citation:
Envoyé par zana74
merci de ta réponse!

les appels serons stockés dans la base pour pouvoir faire des statistiques periodiques exemple : nombre d'appels reçus par rapport à leurs provenances (qui_appelle).
voila, c'est pour ça que j'avais des doutes.

a+
Bon alors dans ce cas, tu ne peux pas supprimer physiquement les appelants de ta base.

Ajoute un champ "supprime" à ta table qui_appelle qui prend une valeur NULL par défaut. Lorsque tu supprimes cet appelant, stockes la date courante dans ce champ et tu sais lesquels sont valides tout en conservant l'historique pour tes statistiques.

Qu'en pense tu ?
manu$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h25   #6
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci !
j'ai compris, maintenant comment le faire ça car je travaille avec php mysql et je suis débutante.

je réalise cette base dans le cadre de mon stage ou j'ai fait moi même le cahier des charges, dois-je rajouter ce champs supprime dans le MCD?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h26   #7
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
Citation:
Envoyé par al1_24
Avec une contrainte d'intégrité référentielle, tu n'auras pas d'inquiétude à avoir.
C'est ton SGBD qui au choix te refusera la suppression d'un appelant qui a encore des appels ou supprimera tous les appels d'un appelant supprimé.

Regarde du côté des clauses ON DELETE CASCADE et FOREIGN KEY...
merci a toi aussi al1_24 de ta réponse
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h29   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 10
Points : 13
Points : 13
Citation:
merci !
j'ai compris, maintenant comment le faire ça car je travaille avec php mysql et je suis débutante.

je réalise cette base dans le cadre de mon stage ou j'ai fait moi même le cahier des charges, dois-je rajouter ce champs supprime dans le MCD?

oui, et si tu l'ajoute, tu peux le justifier en indiquant que c'est pour gérer un historique des appelants. A toi de voire si cette gestion est nécessaire ou utile.
manu$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h41   #9
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
je ne sais pas trop, car dans la table appel il ya juste idqui_appelle à partir lequel j'accede au appelants donc si je supprime un appelant donc dans la table appel je garderais juste son id qui est pas trop signifiant.

qu'est ce que t'en penses?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h44   #10
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 10
Points : 13
Points : 13
Citation:
Envoyé par zana74
je ne sais pas trop, car dans la table appel il ya juste idqui_appelle à partir lequel j'accede au appelants donc si je supprime un appelant donc dans la table appel je garderais juste son id qui est pas trop signifiant.

qu'est ce que t'en penses?
donc ne supprime pas et gère un historique.

Bonne chance pour ton stage
manu$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h48   #11
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci beaucoup! je pense c'est ce que je vais faire, j'enlève la methode supprimer, parcontre tu me parles de géstion d'historique c'est quoi et comment?
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h51   #12
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 10
Points : 13
Points : 13
Ce que j'appelle historique est le fameux champ "supprime".

Les appelants dont le champ "supprime" est égal à NULL sont actifs.

Les appelants dont le champ "supprime" contient une date sont supprimés, mais on les conserve. L'ensemble de ces appelants forment ce que j'appelle l'historique.

Est ce que c'est plus clair ?
manu$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h54   #13
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci beaucoup pour tes explications.
je te souhaite aussi bonne chance pour tes projets.
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h58   #14
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
une petite précision s'il te plais , ce champ supprime il sera de quel type(text ou varchar) et de quelle taille ?
zana74 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 00h21.


 
 
 
 
Partenaires

Hébergement Web