du MCD au realtion Access

du MCD au realtion Access - SQL/NoSQL - Programmation

Marsh Posté le 02-06-2005 à 17:59:44    

Salut !  
je suis en stage et je dois gérer une petite bibliotheque (VB+Access)
 
j'ai donc élaboré un MCD et MLD
 
CATEGORIE(num_cat, nom_cat)
EDITEUR(num_edi, nom_edi)
AUTEUR(num_aut, nom_aut, pre_aut)
DATES(date_emprunt)
ELEVE(num_ele, nom_ele, pren_ele, classe_ele, rue_ele, cp_ele, ville_ele)
LIVRE(num_liv, titre_liv, num_edi#, num_liv#, num_cat#)
EMPRUNER(date_emprunt#, num_liv#, num_ele#, date_retour)
 
Bon déja...est ce que ça vous semble cohérent ?
 
sinon vous pouvez voir le MCD que j'avez fait (en haut l'entité coupée est Catégorie. J'ai retiré le "nb_d'emprunt" qui pourra être calculé avec une requete non?)http://www.gingermusic2.org/box/Image271.jpg
 
Les régles de gestion sont celles ci :
 
Un livre appartient à 1 et 1 seul éditeur  
Un livre est dans 1et 1 seule catégorie
Un diteur peut éditer 1 ou plusieurs livres
Dans une catégorie il peut y avoir 1 ou plusieurs livres
Un auteur a écrit 1 ou plusieurs livres
Un livre peut être emprunter par 0 ou plusieurs élèves
Une livre peut être emprunter à 0 ou plusieurs dates
.... ect  
 
 
Le truc est que je n'arrive pas à transcire cela sur ACCESS 97 ou 2000  :pt1cable:   :(  (à mettre les bonnes relations)
Je suis donc bloqué sur cela et je n'avance plus (et j'ai plus de 1000 livres à rentrer  :hello: )
 
Si quelqu'un pouvait me faire ça sous access et me l'envoyer ou encore écrire le script en Mysql (sous easyPHP) ça me serait vraiment SUPER de votre part  :wahoo:  ! J'ai essayé plein de fois et idem pour le script (à mon avis c'est à partir de EMPRUNTER avec les References que ça merde...)
 
Enfin voilà, si ça vous dit, voici mon email (pour m'envoyer en access ou Mysql) jiojio@9online.fr
 
Merci d'avance  :sarcastic:  
Quelqu'un de desespéré...

Reply

Marsh Posté le 02-06-2005 à 17:59:44   

Reply

Marsh Posté le 02-06-2005 à 18:11:50    

Code :
  1. Si quelqu'un pouvait me faire ça sous access et me l'envoyer ou encore écrire le script en Mysql


c'est une blague?

Reply

Marsh Posté le 02-06-2005 à 18:17:27    

bah je l'ai fait en Access et Mysql mais...ça ne fonctionne pas. En Mysql il me fait les tables sauf EMPRUNTER où il me dit qu'il y a une erreur :(

Reply

Marsh Posté le 02-06-2005 à 18:18:48    

erf et sous access c'est rapide, c'est pas comme si il y avait 10 000 tables :( ! merci d'avance :(

Reply

Marsh Posté le 02-06-2005 à 21:02:19    

voila mon script SQL  
 
 
 
CREATE TABLE CATEGORIE  
   (
       num_cat int(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
       nom_cat varchar(50) NOT NULL
   );
 
 
CREATE TABLE EDITEUR  
   (
       num_edi int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
       nom_edi varchar(40) NOT NULL
   );
 
 
CREATE TABLE AUTEUR
   (  
       num_aut int(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
       nom_aut varchar(40) NOT NULL,
       pren_aut varchar(40)
    );
 
 
CREATE TABLE DATES
   (
       dates_emprunt date
    );
 
 
CREATE TABLE ELEVE
   (
       num_ele int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
       nom_ele varchar(30) NOT NULL,
       pren_ele varchar(30),
       classe_ele varchar(30),
       rue_ele varchar(100),
       cp_ele varchar(30),
       ville_ele varchar(50)
    );
 
 
CREATE TABLE LIVRE  
    (
       num_liv int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
       titre_liv varchar(100) NOT NULL,
       num_edi int(4) NOT NULL REFERENCES EDITEUR(num_edi),
       num_aut int(5) NOT NULL REFERENCES AUTEUR(num_aut),
       num_cat int(3) NOT NULL REFERENCES CATEGORIE(num_cat)
    );
       
 
CREATE TABLE EMPRUNTER  
   (
 FOREIGN KEY (date_emprunt) REFERENCES DATE(date_emprunt),
 FOREIGN KEY (num_livre) REFERENCES LIVRE(num_livre),
 FOREIGN KEY (num_eleve) REFERENCES ELEVE(num_eleve),
 date_retour date,
        PRIMARY KEY( date_emprunt,num_livre,num_eleve)
    );
 
 
load data local infile "categorie.txt" into table categorie;
 
load data local infile "editeur.txt" into table editeur;
 
load data local infile "auteur.txt" into table auteur;
 
load data local infile "dates.txt" into table dates;
 
load data local infile "eleve.txt" into table eleve;
 
load data local infile "livre.txt" into table livre;
 
load data local infile "emprunter.txt" into table emprunter;
 
 
 
et ERREUR sur emprunter...

Reply

Marsh Posté le 04-06-2005 à 12:00:08    

Bah compte le nombre de champs (dans ton script SQL) de la table Emprunter, comparé à la table que tu as mis sur papier

Reply

Marsh Posté le 07-06-2005 à 14:51:41    

je dirai surtout qu'access ne prend pas des clefs primaires multiples
donc pour emprunter tu rajoutes une clef genre emprunter_numero en numero auto et ça devrai passer
 

Reply

Marsh Posté le 07-06-2005 à 14:54:38    

Il fait en Access et MySQL....


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 07-06-2005 à 15:01:16    

jan san kar a écrit :

je dirai surtout qu'access ne prend pas des clefs primaires multiples
donc pour emprunter tu rajoutes une clef genre emprunter_numero en numero auto et ça devrai passer


:heink: c'est nouveau ça...

Reply

Marsh Posté le 07-06-2005 à 16:42:09    

clef multiple : ok j'ai pas testé récement
 
sinon y a une reference sur num_eleve alors qu'il l'appelle num_ele
ça peut expliquer le message d'erreur
je v tester sur postgresql le script en virant ce qui va bien

Reply

Marsh Posté le 07-06-2005 à 16:42:09   

Reply

Marsh Posté le 07-06-2005 à 16:46:03    

En effet, c'est clair que là...
 
 FOREIGN KEY (num_livre) REFERENCES LIVRE(num_livre),  
 FOREIGN KEY (num_eleve) REFERENCES ELEVE(num_eleve),  
 
Ca risque pas de marcher.

Reply

Marsh Posté le 07-06-2005 à 16:58:06    

ouais j'ai modif le script sur postgresql ça passe mais y avait pas mal de probleme
genre il apprécie pas trop le lien sur la date (d'un autre cote j'ai eu la flemme de trop chercher)  
donc g modif comme suit :

Code :
  1. CREATE TABLE DATES
  2.    (
  3. num_dates int PRIMARY KEY,
  4.        dates_emprunt date
  5.     );
  6. CREATE TABLE EMPRUNTER 
  7.    (
  8. num_date int REFERENCES DATES(num_dates),
  9. num_livre int REFERENCES LIVRE(num_liv),
  10. num_eleve int REFERENCES ELEVE(num_ele),
  11. date_retour date,
  12. PRIMARY KEY( num_date,num_livre,num_eleve)
  13.     );


comme ça les tables sont créées
apres y a sans doute moyen de lié direct sur la date, mais bon

Reply

Marsh Posté le 07-06-2005 à 17:04:04    

ok pour les clefs multiples sous access (comme d'habitude je crée direct par l'interface j'ai pas vu ça - même si par l'interface on peut tout de même le faire en utilisant l'icone de clef apres avoir sélectionner les champs mais c'est pas vraiment pratique)

Reply

Marsh Posté le 07-06-2005 à 17:16:31    

c'est normal que ça coince, parceque la norme SQL prévoit qu'un tuple de champs de référence d'une FK est forcément la PK de la table de référence.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed