-- Lookup tables drop table if exists langues; drop table if exists pays; drop table if exists statuts; drop table if exists auteurs; drop table if exists editeurs; drop table if exists series; drop table if exists relations; drop table if exists oeuvres; drop table if exists participe; drop table if exists editions; drop table if exists exemplaires; drop table if exists genres; drop table if exists collections; drop table if exists adherents; drop table if exists adresses; drop table if exists adherent_adresse; drop table if exists commande_historique; drop table if exists commande_ligne; drop table if exists commande; drop table if exists commande_statut; drop table if exists livraison_methode; -- PRAGMA integrity_check; PRAGMA foreign_key_check; CREATE TABLE langues ( langue_id INTEGER, langue_code VARCHAR(5) PRIMARY KEY, langue TEXT ); CREATE TABLE auteurs ( auteur_id INTEGER PRIMARY KEY, Nom TEXT DEFAULT NULL ); CREATE TABLE editeurs ( editeur_id INTEGER PRIMARY KEY, Nom TEXT ); CREATE TABLE series ( serie_id INTEGER PRIMARY KEY, Nom TEXT ); CREATE TABLE oeuvres ( oeuvre_id INTEGER PRIMARY KEY, titre TEXT, isbn13 TEXT, langue_code VARCHAR(5) REFERENCES langues (langue_code), num_pages INTEGER, publication_date DATE, editeur_id INTEGER, genre_id INTEGER, serie_id INTEGER, CONSTRAINT fk_oeuvre_editeur FOREIGN KEY (editeur_id) REFERENCES editeurs (editeur_id), CONSTRAINT fk_oeuvre_genre FOREIGN KEY (genre_id) REFERENCES genres (genre_id), CONSTRAINT fk_oeuvre_serie FOREIGN KEY (serie_id) REFERENCES series (serie_id) ); CREATE TABLE editions ( edition_id INTEGER PRIMARY KEY, oeuvre_id INTEGER REFERENCES oeuvres (oeuvre_id), editeur_id INTEGER REFERENCES editeurs (editeur_id), isbn13 TEXT, langue_code VARCHAR(5) REFERENCES langues (langue_code), publication_date DATE, num_pages INTEGER, num_catalogue INTEGER informations TEXT ); CREATE TABLE exemplaires ( exemplaire_id INTEGER PRIMARY KEY, edition_id INTEGER REFERENCES editions (edition_id), date_achat DATE, prix_achat NUMERIC, etat TEXT ); CREATE TABLE relations ( reference_id INTEGER REFERENCES oeuvres (oeuvre_id), oeuvre_id INTEGER REFERENCES oeuvres (oeuvre_id), [type] TEXT, CONSTRAINT pk_relation PRIMARY KEY (reference_id, oeuvre_id) ); CREATE TABLE genres ( genre_id INTEGER PRIMARY KEY, genre TEXT ); CREATE TABLE participe ( oeuvre_id INTEGER NOT NULL REFERENCES oeuvres (oeuvre_id), auteur_id INTEGER NOT NULL REFERENCES auteurs (auteur_id), fonction TEXT, alias TEXT CONSTRAINT pk_oeuvreauteur PRIMARY KEY (oeuvre_id, auteur_id) ); CREATE TABLE incorpore ( oeuvre_id INTEGER NOT NULL REFERENCES oeuvres (oeuvre_id), edition_id INTEGER NOT NULL REFERENCES editions (edition_id) ) CREATE TABLE statuts ( statut_id INTEGER PRIMARY KEY, statut TEXT ); CREATE TABLE pays ( pays_id INTEGER PRIMARY KEY, pays_name TEXT ); CREATE TABLE adresses ( adresse_id INTEGER PRIMARY KEY, numero TEXT, voie TEXT, ville TEXT, pays_id INTEGER REFERENCES pays (pays_id) ); CREATE TABLE adherents ( adherent_id INTEGER PRIMARY KEY, prenom TEXT NOT NULL, nom TEXT NOT NULL, email TEXT, naissance CHAR(10), statut_id INTEGER, CONSTRAINT fk_a_statut FOREIGN KEY (statut_id) REFERENCES statuts (statut_id) ); CREATE TABLE adherent_adresse ( adherent_id INTEGER NOT NULL, adresse_id INTEGER NOT NULL, statut_id INTEGER, CONSTRAINT pk_adherent_adresse PRIMARY KEY (adherent_id, adresse_id), CONSTRAINT fk_aa_adherent FOREIGN KEY (adherent_id) REFERENCES adherents (adherent_id), CONSTRAINT fk_aa_adresse FOREIGN KEY (adresse_id) REFERENCES adresses (adresse_id), CONSTRAINT fk_aa_statut FOREIGN KEY (statut_id) REFERENCES statuts (statut_id) ); CREATE TABLE livraison_methode ( methode_id INTEGER PRIMARY KEY, methode_name TEXT, cout NUMERIC ); CREATE TABLE commande ( commande_id INTEGER PRIMARY KEY, commande_date DATETIME, date_echeance DATE, adherent_id INTEGER REFERENCES adherents (adherent_id), livraison_methode_id INTEGER REFERENCES livraison_methode (methode_id), dest_adresse_id INTEGER REFERENCES adresses (adresse_id) ); CREATE TABLE commande_statut ( statut_id INTEGER PRIMARY KEY, statut_value TEXT ); CREATE TABLE commande_ligne ( ligne_id INTEGER PRIMARY KEY, commande_id INTEGER REFERENCES commande (commande_id), exemplaire_id INTEGER REFERENCES exemplaires (exemplaire_id), cout NUMERIC, date_retour DATETIME ); CREATE TABLE commande_historique ( historique_id INTEGER PRIMARY KEY, commande_id INTEGER REFERENCES commande (commande_id), statut_id INTEGER REFERENCES commande_statut (statut_id), statut_date DATETIME ); -- *****