A partir de l'interview d'Alfred le gérant d'un magasin de location de films proposer le schéma ERA : c'est-à-dire la définition des tables, des colonnes, des types de données pour ces colonnes et des différentes contraintes d'intégrités
Nos clients sont de plus en plus exigeant, cependant ils oublient également fréquemment de nous rendre les DVD qu'ils ont loués, à la date indiquée lors de leur location. Bien qu'il s'agisse d'un club dans lequel nos clients sont de confiance, nous souhaitons mieux suivre nos locations et l'ensemble des éléments mis à disposition de nos membres.
Lorsque les clients empruntent un ou plusieurs films, ils s'engagent sur une durée de location. Même si certains dépassent cette date limite, la très grande majorité d'entre eux la respecte. Ainsi lorsqu'un film n'est pas disponible à la location, il nous est possible d'indiquer la date de retour prévue, ceci afin d'éviter que les gens reviennent inutilement au magasin.
Pour chaque client, il nous est nécessaire de connaître son nom, prénom, son adresse et un numéro de téléphone. Nous utilisons ces informations en cas de non retour d'un ou plusieurs DVD 2 jours après la date prévue pour contacter le client et l'inviter à rende son exemplaire au plus vite. Ce délai est réduit à 24 h dans le cas d'une nouveauté.
Un client ne peut pas emprunter plus de 5 films à la fois avec au maximum 2 nouveautés. Toutefois, moyennant une majoration, le client peut exceptionnellement emprunter 3 nouveautés. Cette autorisation n'est accordée qu'une fois par mois au maximum.
Pour nous, une nouveauté est un film qui est disponible à la location depuis moins de 3 mois. Passé ce délai, le film perd son statut de nouveauté. Un même film peut être disponible en plusieurs exemplaires. C'est généralement le cas pour les nouveautés, puis au fur et à mesure que le nombre d'emprunts pour ce titre diminue, nous réduisons le nombre d'exemplaire disponibles à la location.
Chaque exemplaire, est parfaitement identifié par son numéro d'inventaire. Il dispose également d'une place spécifique en magasin. Cette place est repérée par son numéro de travée, et son numéro d'étagère. Il est possible de disposer plusieurs films différents sur une même étagère. En général nous essayons de regrouper ensemble tous les exemplaires d'un même film. Cet emplacement physique peut varier au cours du temps car les nouveautés sont mises en avant et ne sont pas classé selon la catégorie du film.
Les catégories permettent de classer de façon grossière les films, c'est par exemple: horreur, aventure, comédie, western, enfant, documentaire, ….
Lorsqu'un client vient pour louer des films, nous commençons toujours par nous assurer qu'il a bien rendu tous les films emprunté et qu'il est à jour dans ses règlements. Nous créons alors une fiche sur laquelle nous notons les références du client, la référence de chaque exemplaire emprunté, son titre et la date de retour prévue. Comme le montant de la location est lié à la durée d'emprunt, le client paiera lorsqu'il aura rendu tous les exemplaires empruntés. Le paiement s'effectue toujours en une seule fois.
Pour calculer le prix de location nous tenons compte des éléments suivant:
Nos clients et nous même souhaitons pour chaque film connaître le réalisateur et les principaux acteurs afin de pouvoir réaliser des recherches par rapport à ces critères.
Pour chaque film présent dans la boutique sous la forme de un ou plusieurs exemplaires nous dressons la fiche du film sur laquelle sont présent le détail du film, comme son nom, sa nationalité, son réalisateur, la liste des principaux acteurs, mais également un résumé.

Une fois par mois, nous envoyons par mail, à nos clients qui possède une adresse électronique, la liste de nos nouveautés
Le schéma suivant donne un aperçu graphique du schéma ERA (Entités - Relations - Attributs)

| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | Clé primaire | identity |
| nom | nvarchar(50) | Obligatoire | |
| prenom | nvarchar(50) | Obligatoire | |
| adresse | nvarchar(100) | Obligatoire | |
| codePostal | char(5) | Obligatoire | |
| ville | nvarchar(50) | Obligatoire | |
| telephone | char(14) | ||
| mobile | char(14) | ||
| nvarchar(100) |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | Clé pimaire | identity |
| client | int | Obligatoire Clé étrangère(Clients) | |
| creeLe | datetime | date du jour par défaut | |
| montantPaye | money |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | Clé pirmaire | |
| fiche | int | Clé pirmaire Clé étrangère(Fiches) | |
| dureeLocation | int | Obligatoire | |
| exemplaire | int | Obligatoire Clé étrangère(Exemplaires) |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | Clé pirmaire | |
| travee | int | Obligatoire | |
| etagere | int | Obligatoire | |
| film | int | Obligatoire Clé étrangère(Films) |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | clé primaire | identity |
| titre | nvarchar(80) | obligatoire | |
| disponibleLocation | tinyint | obligatoire | |
| prixLocationJour | money | obligatoire | |
| categorie | char(5) | obligatoire | |
| realisateur | int | obligatoire clé étrangère (Artistes) | |
| producteur | int | obligatoire clé étrangère (Producteurs) | |
| anneeProduction | smallint | obligatoire | |
| nationalite | char(5) | obligatoire | valeur par défaut: Fra |
| duree | int | obligatoire | |
| spectateurs | int | obligatoire clé étrangère (Spectateurs) | |
| resume | nvarchar(max) | obligatoire |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| artiste | int | clé primaire clé étrangère(Artistes) | |
| film | int | clé primaire clé étrangère(Films) |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | clé primaire | identity |
| nom | nvarchar(50) | obligatoire | |
| prenom | nvarchar(50) | obligatoire |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| code | char(5) | clé primaire | |
| libelle | nvarchar(50) | obligatoire |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | clé primaire | identity |
| nom | nvarchar(50) | obligatoire |
| Attribut | Type de données | Contraintes | Commentaire |
|---|---|---|---|
| numero | int | clé primaire | identity |
| libelle | nvarchar(50) | obligatoire |