Chapitre 3: Modèle relationnel et conception Exercices:

Transcription

Chapitre 3: Modèle relationnel et conception Exercices:
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.
Participation
1
*
Contribution
temps : Time
période : Integer
{incomplète, disjointe}
Joueur
nom : String
position: String
*
*
Partie
jour : Date
But
*
1
1
Équipe
nom : String
ville : String 1
Passe
Pénailté
type : String
durée : Integer
visite
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
e1 : String
e2 : Integer
1
{incomplète}
A
a1 : Integer
*
B
b1 : Integer
b2 : String
*
C
c1: String[1..*]
D
d1: Date
*
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.