Département d informatique Faculté des sciences Projet final Par Équipe 16 : Audrey Oliver Adrien Burel Gabiel Landry Sorel Travail présenté à Marc Frappier Dans le cadre du cours IFT 187 28 Novembre 2014
Notre système est destiné aux fournisseurs de livres. Il permet aux fournisseurs de connaître les commandes, leur inventaire, le statut du livre et à qui livrer les livres. Ce système a pour but d être simple d utilisation pour les fournisseurs comme pour les clients. Jumelé à un site de vente, les entreprises de vente peuvent faire affaire avec eux mais aussi les gens, comme Black Book édition, vendeur de livre de jeu de rôle qui fournit les magasins et où un client peut acheter un livre sur leur site, soit en format pdf ou en format papier. Un client visite le catalogue en ligne du fournisseur puis passe sa commande. Pour passer sa commande il doit être inscrit en tant que client. Pour retracer ses clients les fournisseurs demandent les informations de base et les garde en banque telle que le titre (Monsieur, Madame...), le nom, l adresse, les préférences. Une fois le client enregistré, le fournisseur peut envoyer des publicités sur les prochaine sorti, les soldes et envoyer des rabais par mail, téléphone ou par fax. De plus, le fournisseur peut proposer des livres en vente ou en prévente et estimer une date de livraison. Le client peut chercher un livre selon son titre, son auteur ou son éditeur. Quand un client aime un auteur, il peut commander les livres de cet auteur facilement de même pour une maison d édition précise. Les factures sont faites pour chaque client avec un code unique qui permet de retracer les commandes et les paiements peuvent être faits de différente façon, par chèque, par crédit ou débit.
Entités Livre: les livres sont identifiés par un code unique, un titre et une date de publication, ils ont un éditeur et un auteur. ils sont aussi associés à un prix et un état. Editeur: les éditeurs ont un code unique pour les identifier. ils publient des livres écrits par des auteurs. Auteur: un auteur est identifié par un code unique et est associé à ses livres. Etat: Un livre peut être en vente ou en prévente. il est aussi associé au client qui désir acheter. Tarif: Le tarif est le prix d un livre, il est donc associé à un livre. Rabais: Les rabais peuvent être envoyés à un client ou être associés à un livre. Client: Le client possède un code unique pour l identifier, il est associé à une entreprise et à une ou plusieurs factures. Entreprise: Possède un nom, une adresse, un courriel et un ou plusieurs numéros de téléphone. il est associé au client et à une facture. Facture: La facture possède un code unique pour l identifier, elle est associée à un client et aux livres qui sont commandés. ModePaiement: Possède un code unique pour identifier le type de paiement et il est associé au client et à la facture. Province_Etat_Region: Possède un code unique pour identifier la province, l etat ou la region qui est associé à une entreprise. Pays: Possède un code unique pour identifier le pays qui est associé à une entreprise.
Ville: Possède un numéro unique qui est associé a une ville qui est associé à une entreprise et une Province_Etat_region, ce numéro unique va aussi permettre de distinguer les villes différentes qui possèdent le même nom. Adresse: Possède l adresse, le numéro d appartement ou de bureau, le nom de la rue et le code postal associé a une entreprise. TypeTel: Possède un numéro unique qui identifie le type de téléphone. Titre: Possède un numéro unique qui identifie le titre du client. Associations ResideEditeur et ResideEntreprise: Indique l adresse de l éditeur ou de l entreprise. Travaille: indique pour quelle entreprise travaille le client. Nomme: Donne le titre du client. Ecrit: Indique l auteur du livre. Possede: Indique les prix en rabais. Coute: indique le prix du livre. Type: indique le type de téléphone du client ( mobile, maison, bureau, fax) Édite: indique l éditeur du livre.
drop table Titre cascade; create table Titre ( codetitre VARCHAR(3) NOT NULL, titrelibelle VARCHAR(8) NOT NULL, primary key (codetitre), 'Mme')) CHECK((titreLibelle = 'Monsieur' AND codetitre = 'M') OR (titrelibelle = 'Madame' AND codetitre = drop table Entreprise cascade; create table Entreprise ( noentreprise INTEGER NOT NULL, NomAssocié VARCHAR(26) NOT NULL, primary key (noentreprise) drop table Pays cascade; create table Pays ( nopays INTEGER NOT NULL, NomPays VARCHAR(30) NOT NULL, primary key (nopays) drop table Province_Etat_Region cascade; create table Province_Etat_Region ( nop_e_r INTEGER NOT NULL, NomP_E_R VARCHAR(30) NOT NULL, primary key (nop_e_r)
drop table Ville cascade; create table Ville ( noville INTEGER NOT NULL, NomVille VARCHAR(30) NOT NULL, primary key (noville) drop table Adresse cascade; create table Adresse ( noadresse INTEGER NOT NULL, noporte INTEGER, norue INTEGER NOT NULL, nomrue codepostal VARCHAR(26) NOT NULL, VARCHAR(10) NOT NULL, noentreprise INTEGER NOT NULL, NoPays INTEGER NOT NULL, nop_e_r INTEGER NOT NULL, noville INTEGER NOT NULL, primary key (noadresse), foreign key (nop_e_r) references Province_Etat_Region(noP_E_R), foreign key (nopays) references Pays(noPays), foreign key (noville) references Ville(noVille)
drop table Facture cascade; create table Facture ( nofacture INTEGER NOT NULL, datefacture TIMESTAMP NOT NULL, datepaiementfact TIMESTAMP NOT NULL, Montant INTEGER NOT NULL, Remise INTEGER NOT NULL, primary key (nofacture), CHECK(dateFacture <= datepaiementfact), CHECK(Remise <= Montant) drop table ModePaiement cascade; create table ModePaiement ( codepaiement CHAR(2) NOT NULL, paiementlibelle VARCHAR(8) NOT NULL, primary key (codepaiement), CHECK( (codepaiement = 'Cr' AND paiementlibelle = 'Credit') OR (codepaiement = 'De' AND paiementlibelle = 'Debit') OR (codepaiement = 'Ch' AND paiementlibelle = 'Chèque') OR (codepaiement = 'Co' AND paiementlibelle = 'Comptant'))
drop table Client cascade; create table Client ( noclient INTEGER NOT NULL, Nom Prenom notelephone adressemail VARCHAR(26) NOT NULL, VARCHAR(26) NOT NULL, VARCHAR(12) NOT NULL, VARCHAR(50) NOT NULL, codetitre VARCHAR(3) NOT NULL, noentreprise INTEGER NOT NULL, nofacture INTEGER NOT NULL, codepaiement CHAR(2) NOT NULL, primary key (noclient), foreign key (codetitre) references Titre(codeTitre), foreign key (noentreprise) references Entreprise(noEntreprise), foreign key (nofacture) references Facture(noFacture), foreign key (codepaiement) references ModePaiement (codepaiement) drop table TypeTel cascade; create table TypeTel ( typetel VARCHAR(4) NOT NULL, typelibelle VARCHAR(13), noclient INTEGER NOT NULL, primary key (typetel), foreign key (noclient) references Client(noClient), CHECK((typetel = 'FAX' AND typelibelle = 'télécopieur') OR (typetel = 'Cell' AND typelibelle = 'Mobile') OR (typetel = 'FIXE' AND typelibelle = 'Maison') OR (typetel = 'BUR' AND typelibelle = 'Bureau'))
drop table Etat cascade; create table Etat ( noetat INTEGER NOT NULL, etatlibelle VARCHAR(16) NOT NULL, primary key (noetat), CHECK((noEtat = 1 AND etatlibelle = 'Vente') OR (noetat = 2 AND etatlibelle = 'Prevente') OR (noetat = 3 AND etatlibelle = 'Rabais') OR (noetat = 4 AND etatlibelle = 'Rupture de stock') OR (noetat = 5 AND etatlibelle = 'Commandé')) drop table Livre cascade; create table Livre ( nolivre INTEGER NOT NULL, Titre Genre VARCHAR(30) NOT NULL, VARCHAR(20) NOT NULL, Année date NOT NULL, NbRestant INTEGER NOT NULL CHECK(NbRestant >= 0), noetat INTEGER NOT NULL, noclient INTEGER NOT NULL, primary key (nolivre), foreign key (noetat) references Etat(noEtat), foreign key (noclient) references Client(noClient) drop table Editeur cascade; create table Editeur ( noediteur INTEGER NOT NULL, Nom VARCHAR(30) NOT NULL, primary key (noediteur)
drop table ResideEditeur cascade; create table ResideEditeur ( noediteur INTEGER NOT NULL, noadresse INTEGER NOT NULL, primary key (noediteur), unique (noadresse), foreign key (noediteur) references Editeur(noEditeur), foreign key (noadresse) references Adresse(noAdresse) drop table ResideEntreprise cascade; create table ResideEntreprise ( noentreprise INTEGER NOT NULL, noadresse INTEGER NOT NULL, primary key (noentreprise), unique (noadresse), foreign key (noentreprise) references Entreprise(noEntreprise), foreign key (noadresse) references Adresse(noAdresse) drop table Auteur cascade; create table Auteur ( noauteur INTEGER NOT NULL, Nom Prenom VARCHAR(26) NOT NULL, VARCHAR(26) NOT NULL, primary key (noauteur)
drop table Rabais cascade; create table Rabais ( coderabais INTEGER NOT NULL, rabaislibelle VARCHAR(30) NOT NULL, primary key (coderabais) drop table Tarif cascade; create table Tarif ( notarif INTEGER NOT NULL, Solde INTEGER NOT NULL, coderabais INTEGER, primary key (notarif), foreign key (coderabais) references Rabais(codeRabais)
drop table Livre cascade; create table Livre ( nolivre INTEGER NOT NULL, Titre Genre VARCHAR(30) NOT NULL, VARCHAR(20) NOT NULL, Année date NOT NULL, NbRestant INTEGER NOT NULL, noetat INTEGER NOT NULL, noclient INTEGER NOT NULL, noediteur INTEGER NOT NULL, noauteur INTEGER NOT NULL, notarif INTEGER NOT NULL, primary key (nolivre), foreign key (noediteur) references Editeur(noEditeur), foreign key (noclient) references Client(noClient), foreign key (noauteur) references Auteur(noAuteur), foreign key (notarif) references Tarif(noTarif), foreign key (noetat) references Etat(noEtat)