-- Base de donnée Repertoire

-- Pour exécuter ce script plusieurs fois sans soucis
DROP TABLE IF EXISTS personnes CASCADE;
DROP TABLE IF EXISTS adresses CASCADE;
DROP TABLE IF EXISTS personnes_adresses CASCADE;
DROP VIEW IF EXISTS repertoire;

CREATE TABLE personnes (
  id_personne integer PRIMARY KEY,
  prenom varchar(40) NOT NULL,
  nom varchar(40) NOT NULL
);

CREATE TABLE adresses (
  id_adresse integer PRIMARY KEY,
  numero smallint,
  rue varchar(40),
  code_postal integer NOT NULL,
  ville varchar(40)
);

-- Il faut ajouter une table adresse_personne pour joindre les tables
-- adresse et personne car on a des cardinalités * de chaque coté.
CREATE TABLE personnes_adresses (
  id_personne integer REFERENCES personnes,
  id_adresse integer REFERENCES adresses
);

INSERT INTO personnes VALUES
  (1,'Jean-Claude','Dusse'),
  (2,'Marie-Gertrude','Dusse');

INSERT INTO adresses VALUES
  (1,42,'rue Victor Hugo',94000,'Créteil'),
  (2,1,'rue de la Paix',01000,'Bourg-en-Bresse');
  
INSERT INTO personnes_adresses VALUES (1,1),(1,2),(2,1);

CREATE VIEW repertoire AS
  SELECT nom,prenom,numero,rue,code_postal,ville FROM
    personnes NATURAL JOIN personnes_adresses NATURAL JOIN adresses;