 
/* Création des tables : point de vue synchronique (sans historique) */

Tables :
adherent (num_a, nom_a, adr_a))
fournisseur (num_f, nom_f, adr_f)
produit (code_p, design, prix_v_u)
commande (num_a, code_p, quantite_c, date_c)
fournit (num_f, code_f, quantite_f, date_f, prix_ach_u))


create table adherent (NUM_A int primary key,
                       nom_a varchar(10),
                       adr_a varchar(10)
                      );

create table fournisseur (NUM_F int primary key,
                          nom_f varchar(10),
                          adr_f varchar(10)
                          );

create table produit (CODE_P int primary key,
                      design varchar(20),
                      prix_v_u decimal
                      );
                      
create table commande (num_a int references adherent(num_a),
                       code_p int references produit (code_p),
                       primary key (NUM_A, CODE_P),
                       quantite_c int,
                       date_c date
                      );

create table fournit (num_f int references fournisseur(num_f),
                      code_p int references produit (code_p),
                      primary key (NUM_F, CODE_P),
                      quantite_f int,
                      date_f date,
                      prix_ach_u decimal
                      );
                     
                     
* Insertions des données */

insert into adherent values (1, 'ad1', 'adra1');
insert into adherent values (2, 'ad2', 'adra2');
insert into adherent values (3, 'ad3', 'adra3');
insert into adherent values (4, 'ad4', 'adra4');

insert into fournisseur values (10, 'f10', 'adr10');
insert into fournisseur values (11, 'f11', 'adr11');
insert into fournisseur values (12, 'f12', 'adr12');
insert into fournisseur values (13, 'f13', 'adr13');

insert into produit values (100, 'type_prod100', 150);     
insert into produit values (101, 'type_prod101', 250);
insert into produit values (102, 'type_prod102', 350);  
insert into produit values (103, 'type_prod103', 450);

insert into commande values (1, 100, 50, to_date('12:12:1999', 'DD:MM:YYYY'));
insert into commande values (1, 101, 23, to_date('11:09:2005', 'DD:MM:YYYY'));
insert into commande values (1, 103, 55, to_date('12:05:1998', 'DD:MM:YYYY'));
insert into commande values (2, 100, 45, to_date('07:07:1999', 'DD:MM:YYYY'));
insert into commande values (3, 102, 76, to_date('03:10:2007', 'DD:MM:YYYY'));
insert into commande values (3, 103, 90, to_date('09:11:2007', 'DD:MM:YYYY'));
insert into commande values (2, 103, 75, to_date('06:12:1999', 'DD:MM:YYYY'));


insert into commande values (1, 100, 50, to_date('12:12:1999', 'DD:MM:YYYY')); ==>   ERREUR !!!

/* l insertion  dans la table Fournit est analogue à Commande */


Erreur, POURQUOI ?






/* Point de vue diachronique (avec historique) */



Tables :
adherent (NUM_A, nom_a, adr_a))
fournisseur (NUM_F, nom_f, adr_f)
produit (CODE_P, design)

commandeh (NUM_A, CODE_P, DATE_C, quantite_f)
fournith (NUM_F, CODE_F, QUANTITE_F, date_f, prix_ach_u)
proposeh (CODE_P, DATE_PROP, prix_v_u)



                  
create table commandeh (num_a int references adherent(num_a),
                       code_p int references produit (code_p),
                       date_c DATE,
                       primary key (num_a, code_p, date_c),
                       quantite_f int
                      );


create table fournith (num_f int references fournisseur(num_f),
                      code_p int references produit (code_p),
                      date_f DATE,
                      primary key (num_f, code_p, date_f),
                      quantite_c int,
                      prix_ach_u
                      );
                      
                   
create table proposeh (code_p int primary key,
                       date_prop date
                      );


                      
/* Insertion des données */




insert into commandeh values (1, 100, to_date('12:12:1999', 'DD:MM:YYYY'), 50);
insert into commandeh values (1, 101, to_date('11:09:2005', 'DD:MM:YYYY'), 23);
insert into commandeh values (1, 103, to_date('12:05:1998', 'DD:MM:YYYY'), 55);
insert into commandeh values (2, 100, to_date('07:07:1999', 'DD:MM:YYYY'), 45);
insert into commandeh values (3, 102, to_date('03:10:2007', 'DD:MM:YYYY'), 76);
insert into commandeh values (3, 103, to_date('09:11:2007', 'DD:MM:YYYY'), 90);
insert into commandeh values (2, 103, to_date('06:12:1999', 'DD:MM:YYYY'), 75);
insert into commandeh values (1, 100, to_date('12:12:1999', 'DD:MM:YYYY'), 50);
insert into commandeh values (1, 101, to_date('11:12:2005', 'DD:MM:YYYY'), 55);

/* On peut insérer pour le m^eme adhérent et le m^eme produit, à des dates différentes, des quantités différentes */
insert into commandeh values (1, 100, to_date('01:01:1999', 'DD:MM:YYYY'), 50);
insert into commandeh values (1, 100, to_date('10:08:2000', 'DD:MM:YYYY'), 43);
insert into commandeh values (1, 100, to_date('03:05:2003', 'DD:MM:YYYY'), 34);
insert into commandeh values (1, 100, to_date('09:09:2004', 'DD:MM:YYYY'), 123);

/* les insertions dans la table Fournith sont analogues à Commandeh */


Question :  

1.Lister les différentes commandes de l''adhérent 1 et du produit 100 
            (cà-d l''historique du m^eme adhérent et du m^eme produit) 


2. Faire avec des relations binaire et interroger l'historique des commandes, des achats de produits et les différents prix d'un même produit.

