PROMPT suppression des tables
DROP TABLE marque 		cascade constraint;
DROP TABLE appartient 	cascade constraint;
DROP TABLE moteur 		cascade constraint;
DROP TABLE modele 		cascade constraint;

PROMPT creation de la table marque
CREATE TABLE MARQUE ( 
   id_marque		NUMBER constraint marque_pk PRIMARY KEY,
   designation		VARCHAR2(30)
 );

PROMPT insertion dans la table marque
INSERT INTO marque 
 SELECT rownum, marque 
 FROM (
    SELECT distinct marque 
    FROM &user..source
 );

PROMPT creation de la table moteur
CREATE TABLE MOTEUR ( 
id_moteur 		NUMBER constraint moteur_pk PRIMARY KEY,
designation	VARCHAR2(50), 
puissance 		NUMBER, 
couple	 	NUMBER, 
regime		NUMBER 
);

PROMPT insertion dans la table moteur
INSERT INTO moteur 
 SELECT rownum, moteur, puissance, couple, regime
 FROM (
   SELECT distinct moteur, puissance, couple, regime 
   FROM &user..source)
;


CREATE TABLE MODELE (
   id_modele		NUMBER constraint modele_pk PRIMARY KEY,
   designation		VARCHAR2 (50), 
   taille_pneu		VARCHAR2(50 BYTE), 
   poids			NUMBER, 
   rmotrices		NUMBER, 
   id_marque		NUMBER constraint modele_fk1 REFERENCES marque (id_marque),
   id_moteur		NUMBER constraint modele_fk2 REFERENCES moteur (id_moteur),
   conso			NUMBER, 
   co2			NUMBER
 );

INSERT INTO modele 
SELECT rownum, vehicule, 
       pneu, poids, motrice, 
       (SELECT id_marque 
           FROM marque 
           WHERE designation=s.marque), 
       (SELECT id_moteur 
           FROM moteur 
           WHERE designation=s.moteur
           AND rownum=1), 
	 consommation, co2  
FROM &user..source s;

UPDATE modele SET id_moteur=NULL WHERE id_modele<50;

GRANT UPDATE, INSERT, DELETE, SELECT ON modele TO public;
GRANT UPDATE, INSERT, DELETE, SELECT ON moteur TO public;
GRANT UPDATE, INSERT, DELETE, SELECT ON marque TO public;

INSERT INTO marque VALUES (11,'BMW');
INSERT INTO marque VALUES (12,'MERCEDES');


commit;

