Vous êtes sur la page 1sur 3

LOG660 - Base de données de haute performance

Chapitre 3: Modèle relationnel et conception


Exercices:
QUESTION 1

Traduisez le diagramme de classes suivant en schéma relation LDD (CREATE TABLE).


Votre schéma doit contenir les éléments suivants : nom et type Oracle des colonnes,
clés primaires, clés étrangères et contraintes NOT NULL et UNIQUE.

Contribution
Participation temps : Time
1 * période : Integer

{incomplète, disjointe}

Joueur
Partie
nom : String
position: String * * jour : Date
But Passe Pénailté
* type : String
durée : Integer
1 1 visite
Équipe
nom : String
ville : String 1

Notes: Une contribution correpsond à un(e) seul(e) but, passe ou pénalité relié(e) à un
seul joueur, durant une seule partie.

QUESTION 2

Dites si chacune des affirmations suivantes s'applique : toujours, jamais ou des fois.
Dans le cas où vos répondez des fois, donnez un cas positif ainsi qu’un cas négatif.

a) L'union des colonnes de deux clés candidates différentes est une clé candidate.
b) L'intersection des colonnes de deux clés candidates différentes est une clé
candidate.
c) L'union des colonnes de deux clés uniques différentes est une clé unique.
d) L'intersection des colonnes de deux clés uniques différentes est une clé unique.
QUESTION 3

a) Donnez deux avantages pour une table d'avoir une clé primaire artificielle plutôt que
naturelle et décrivez un exemple (table et clé primaire) où il serait acceptable
d'utiliser une clé naturelle.

b) Comment fait-on en SQL le produit cartésien entre deux tables T1 et T2? Pourquoi
cette opération est-elle potentiellement dangereuse?

c) À quoi sert l’opération renommer et comment fait-on cette opération en SQL?

d) À quoi sert l’opération de semi-jointure entre deux tables T1 et T2 et comment fait-on


cette opération en SQL?

e) Quelle(s) condition(s) faut-il respecter pour pouvoir utiliser les opérations d’ensemble
(i.e., UNION, INTERSECT, MINUS) dans une requête SQL?

f) Quelle est la différence entre les types CHAR et VARCHAR en SQL?

g) Est-il souhaitable de mettre un attribut texte pouvant dépasser 4000 caractères


directement dans une table (ex : biographie d’un artiste)? Justifiez.

h) Proposez une stratégie pour traduire en relationnel un type énuméré ayant un petit
domaine invariant (ex : sexe ∈ {homme,femme}). Quels sont les avantages et
inconvénients de cette stratégie?

i) Donnez un avantage et un inconvénient d’insérer les colonnes d’un attribut de type


Adresse (ex : no civique, rue, ville, etc.) directement dans une table Utilisateur?

j) Comment peut-on traduire en relationnel les attributs de classe (statiques)?

k) Proposez une stratégie permettant de traduire une relation 1-à-1 en relationnel.


Assurez-vous de respecter les contraintes de multiplicité.

l) Proposez-une stratégie pour traduire une d’association plusieurs-à-plusieurs ayant


des attributs (classe associative).

m) Dans le cas d’une relation de composition, comment peut-on s’assurer qu’un objet
contenu soit supprimé lorsque son objet contenant est effacé?

n) Décrivez brièvement la stratégie de traduction de spécialisation par fusion. Spécifiez


dans quel(s) contexte(s) cette stratégie est acceptable, et précisez ses
avantages/inconvénients.
QUESTION 4

Considérez le diagramme de classe suivant :

E
1
e1 : String
e2 : Integer

{incomplète}

B
*
A D
b1 : Integer
a1 : Integer * * b2 : String
d1: Date
1

C
c1: String[1..*] 1

Donnez, sous la forme de diagramme UML, un schéma relationnel permettant de


modéliser ces classes et leurs relations. Pour chaque table de votre schéma, donnez les
éléments suivants :

• Le nom et le type Oracle de chaque colonne;


• Les clés étrangères sous la forme de flèches. Si nécessaire, mettez sur la flèche
le nom des colonnes de la clé;
• Les contraintes sur les colonnes : clé primaire (PK), clé étrangère (FK), clé
unique (U), colonne non-nulle (NN). Par exemple:

TableExemple
idC : INTEGER (PK)
c1 : INTEGER (FK,NN)
c2 : VARCHAR (U,NN)
c3 : INTEGER (FK)
...

Notes :
• Assurez-vous de bien respecter la multiplicité des relations et des attributs (ex: 1
à 1, plusieurs à plusieurs, etc.);
• Supposez des clés primaires artificielles (voir TableExemple ci-haut);
• Attention : l’attribut a1 est une liste de chaînes de caractères.

Vous aimerez peut-être aussi