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.