Département d`informatique Travail de session
Transcription
Département d`informatique Travail de session
Département d’informatique Faculté des sciences Université de Sherbrooke Travail de session- partie 1 Par Guillaume Couture Jean-Nicolas Létourneau Guillaume Royer-Houle Dominic Thériault Frédéric Diotte Travail présenté à Marc Frappier (Ph.D) Dans le cadre du cours IFT187 Élément de base de données Sherbrooke (Québec) 14 Novembre 2014 Festival de musique Nous désirons organiser un festival de musique où performeront des artistes. Chaque groupe a ses membres et possède des coordonnées (numéro de téléphone, adresse courriel). Un groupe se produit sur une scène durant une performance qui a lieu à une date et une heure. Une scène a une certaine capacité en public. Chaque scène, kiosque et bloc sanitaire sont associés à une zone située sur le site. Chaque zone possède un numéro identificateur. Il y a différents types de billets permettant d’accéder au site. Un billet a un prix associé au nombre de jours auxquels il donne accès au festival. Chaque billet vendu est répertorié avec son numéro de billet, le nom de l’acheteur et la date. Les employés du festival sont attribués à un lot, compris dans une zone, occupé par un kiosque ou une scène. Chaque employé a un rôle comme : technicien, caissier, commis, sécurité et concierge. L’horaire d’un employé définit son rôle, son quart de travail ainsi que la date à laquelle il travaillera. Il est aussi possible de contacter les groupes ou les employés et de localiser les festivals par leur adresse, code postal ainsi que leur ville, leur état et leur pays. Description du modèle UML Entités Billet : Cette entité contient tous les types de billet qui donnent accès aux différents festivals. Par exemple, les billets qui donnent accès au premier, au deuxième ou à toute autre combinaison de jours du festival. BilletVendus : Cette entité contient chaque billet qui a été vendu pour le festival. Employe : Cette entité contient tous les employés qui travaillent pour le festival. EmployeRole : Cette entité contient les différents rôles que peut posséder les employés du festival. Par exemple, les caissier, éclairagistes, techniciens de scène, techniciens de son, agent de sécurité, concierge. Festival : Cette entité contient tous les festivals du système. GroupeMusique : Cette entité contient tous les groupes qui participent au festival. HoraireEmployé : Cette entité faible indique quel employé travaille à quelle heure pour quel rôle. HoraireGroupe : Cette entité contient les heures de début et de fin de chaque performance. Kiosque : Cette entité contient tous les kiosques qui sont situés dans les zones du festival. Lot : Cette entité contient les différents lots disponibles. Membre : Cette entité contient toutes les personnes qui font partie d’un groupe de musique. QuartTravail : Cette entité contient les différents quarts de travail qui peuvent être occupés par les employés et les agents de sécurité. Region : Cette entité contient toutes les régions où se situent les festivals. Scene : Cette entité contient toutes les scènes qui sont situées dans les différentes zones du festival. TypeKiosque : Cette entité indique de quel sont les types de kiosques disponibles. Par, exemple les restaurants, bars, souvenirs. Ville : Cette entité contient toutes les villes ou se situent les festivals. Zone : Cette entité contient toutes les zones qui font partie du terrain des festivals. Associations Appartient : Cette association indique à quel festival appartiennent les différentes zones. Aussi, quel membre appartient à quel groupe de musique. Contient : Cette association indique ce qu’un lot contient. Soit une scène ou un kiosque. Définit : Cette association indique quel type de kiosque défini quel kiosque. Habite : Cette association indique dans quelle ville habite chaque employé. Jour : Cette association indique quel billet donne accès à un festival pour un jour donné. Localisé : Cette association indique quelles villes sont localisées dans quelles régions. Situé : Cette association indique quel lot est situé dans quelle zone. Modèle entité-association Jour Date: Set Billet 1..* idTypeBillets (c1) Prix 1..1 Festival idFestival (c1) Nom Adresse CodePostal DateDébut DateFin 0..* 1..* BilletVendus idBilletVendus (cp1) NomAcheteur DateVente Situé TypeKiosque Appartient idType (c1) Description 1..1 0..1 Region idRegion (c1) Nom Pays Défini 1..* 1..* Kiosque Zone Ville Possède 1..* idVille (c1) 1..1 Nom 0..1 idZone (c1) NomZone NbBecosse 1..1 Habite Situé QuartTravail 1..* idKiosque (c1) Nom 0..1 Contient Lot idQuartTravail C1) HeureDebut HeureFin Scene 1..1 1..1 IdLot (c1) 0..1 idScene (c1) Nom NbPersonnesMax Contient 0..* Employe EmployéRole idEmployeRole (c1) Description HoraireEmploye idEmploye (c1) Nom NoTelephone Adresse Courriel NumeroAssuranceSocial HorraireGroupe DateHeureDebut DateHeureFin Date Membre GroupeMusique Appartient idMembre (c1) Nom 1..1 idGroupeMusique (c1) 1..* NoTelephone Nom Code SQL drop table Etat cascade; create table Etat ( IdEtat int, NomEtat varchar (30), nomPays varchar (30), Primary key (IdEtat) ) ; drop table Ville cascade; create table Ville ( IdVille int, Nom varchar(30), IdEtat int, Primary key (IdVille), Foreign key (IdEtat) references Etat ) ; drop table Festival cascade; create table Festival ( IdFestival int, Nom varchar(30), DateDebut Date, DateFin Date, Adresse varchar (30), IdVille int not null, CodePostal Varchar (6), Primary key (IdFestival), Foreign key (IdVille) references Ville, constraint Date_difference check (DateFin > DateDebut) ) ; drop table CombinaisonJours cascade; create table CombinaisonJours ( IdFestival int not null, IdCombinaisonJours int, Primary key (IdCombinaisonJours, IdFestival), Foreign key (IdFestival) references Festival ) ; drop table JoursDate cascade; create table JoursDate ( Dates Date, IdFestival int not null, IdCombinaisonJours int not null, Primary key (Dates,IdCombinaisonJours, IdFestival), Foreign key (IdFestival,IdCombinaisonJours) references CombinaisonJours ) ; drop table TypeBillets cascade; create table TypeBillets ( IdTypeBillets int, IdFestival int not null, IdCombinaisonJours int not null, prix numeric(5,2), description varchar (20), Primary key ( IdTypeBillets), Foreign key (IdFestival,IdCombinaisonJours) references CombinaisonJours, constraint prix_positif check (prix >= 0) ) ; drop table BilletsVendus cascade; create table BilletsVendus ( IdBilletVendu int, IdTypeBillets int not null, Nom varchar (30), DateAchat Date, Primary key (IdBilletVendu), Foreign key (IdTypeBillets) references TypeBillets ) ; drop table Zone cascade; create table Zone ( IdFestival int not null, IdZone int, NomZone varchar (20), NombreBecosse int, Primary key (IdZone, IdFestival), Foreign key (IdFestival) references Festival ) ; drop table QuartTravail cascade; create table QuartTravail ( IdQuartTravail int, DateHeureDebut time, DateHeureFin time, Primary key (IdQuartTravail) ) ; drop table Lot cascade; create table Lot ( IdLot int, IdZone int not null, IdFestival int not null, Primary key (IdLot), Foreign key (IdZone,IdFestival) references Zone ) ; drop table TypeKiosque cascade; create table TypeKiosque ( IdTypeKiosque int, Description varchar (30), Primary key (IdTypeKiosque) ) ; drop table Kiosque cascade; create table Kiosque ( IdKiosque int, Nom varchar (20), IdTypeKiosque int not null, IdLot int, Primary key (IdKiosque), Foreign key (IdTypeKiosque) references TypeKiosque, Foreign key (IdLot) references Lot ) ; drop table Scene cascade; create table Scene ( IdScene int, IdLot int not null, Nom varchar(30), NbPersonnesMax int, Primary key (IdScene), Foreign key (IdLot) references Lot ) ; drop table Employe cascade; create table Employe ( IdEmploye int, Nom varchar(30), NoDeTelephone varchar(20), Adresse varchar(30), IdVille int not null, Courriel varchar(30), NumeroAssuranceSocial Numeric (9,0), Primary key (IdEmploye), Foreign key (IdVille) references Ville, constraint courriel_valide check (courriel like '%@%.%') ) ; drop table EmployeRole cascade; create table EmployeRole ( IdEmployeRole int, Description varchar(30), Primary key (IdEmployeRole) ) ; drop table HoraireEmploye cascade; create table HoraireEmploye ( IdEmploye int not null, IdLot int not null, IdEmployeRole int not null, IdQuartTravail int not null, Date Date, Primary key (IdEmploye,IdLot,IdEmployeRole,IdQuartTravail), Foreign key (IdEmploye) references Employe, Foreign key (IdLot) references Lot, Foreign key (IdEmployeRole) references EmployeRole, Foreign key (IdQuartTravail) references QuartTravail ) ; Drop table GroupeMusique cascade; create table GroupeMusique ( IdGroupeMusique int, Nom varchar (30), numTelephone varchar (20), Primary key (IdGroupeMusique) ) ; drop table Membre cascade; create table Membre ( idMembre int, nom varchar (30), courriel varchar (20), Primary key (idMembre), constraint courriel_valide check (courriel like '%@%.%') ) ; drop table GroupeMembre cascade; create table GroupeMembre ( IdGroupeMusique int not null, idMembre int not null, Primary key (IdGroupeMusique,idMembre), Foreign key (IdGroupeMusique) references GroupeMusique, Foreign key (idMembre) references Membre ) ; drop table HoraireGroupeMusique cascade; create table HoraireGroupeMusique ( IdGroupeMusique int not null, IdScene int not null, DateHeureDebut timestamp, DateHeureFin timestamp, Primary key (IdGroupeMusique, IdScene), Foreign key (IdGroupeMusique) references GroupeMusique, Foreign key (IdScene) references Scene, constraint Date_difference check (DateHeureDebut < DateHeureFin) ) ; Modèle relationnel ville festival PK idfestival FK1 nom datedebut datefin adresse idville codepostal idville FK1 nom idetat PK idetat PK idemploye nometat nompays zone idfestival idcombinaisonjours employe nom nodetelephone adresse idville courriel numeroassurancesocial FK1 combinaisonjours PK,FK1 PK PK etat PK,FK1 PK typekiosque idfestival idzone PK idtypekiosque PK idkiosque FK1 FK2 nom idtypekiosque idlot description nomzone nombrebecosse typebillets kiosque joursdate PK idtypebillets FK1 FK1 idfestival idcombinaisonjours prix description PK PK,FK1 PK,FK1 billetsvendus lot dates idfestival idcombinaisonjours groupemusique PK idbilletvendu FK1 idtypebillets nom dateachat PK PK idlot FK1 FK1 idzone idfestival scene horaireemploye idgroupemusique PK idscene nom numtelephone courriel FK1 idlot nom nbpersonnesmax PK,FK1 PK,FK2 PK,FK3 PK,FK4 idemploye idlot idemployerole idquarttravail date horairegroupemusique membre PK PK,FK1 PK,FK2 idmembre nom idgroupemusique idscene dateheuredebut dateheurefin groupemembre PK,FK1 PK,FK2 idgroupemusique idmembre quarttravail PK idquarttravail dateheuredebut dateheurefin employerole PK idemployerole description