Soit le modèle relationnel suivant :
author (aid, aname)
book (bid, title, category)
student (sid, sname, dept)
write (aid, bid)
borrow (sid, bid)
author représente une table d'auteurs. Chaque ligne contient le nom et l'identifiant d'un auteur
book représente une table de livres. Chaque ligne est un livre décrit par son identifiant, son titre et sa catégorie (roman, science-fiction, musique, etc.).
student représente une table d'étudiants. Chaque ligne est un étudiant décrit par son identifiant, son nom et son département (informatique, mécanique...).
write représente l'association entre les auteurs et les livres. Une ligne de cette table signifie que l'auteur aid a écrit le livre bid
borrow représente les informations de prêt de livre. Une ligne de cette table signifie que l'étudiant sid a emprunté le livre bid, à la date checkout-time et l'a retourné à la date return-time.
Tous les attributs sont des chaînes de caractères, sauf checkout-time et return-time qui sont des timestamps (la concaténation d'une date et d'un temps dans la journée en heures, minutes et secondes).
Pour author, book, student, tous les identifiants sont des clés. L'attribut title d'un livre est une clé. Les relations write et borrow expriment chacune une association N:M.
Deux auteurs ou deux étudiants peuvent avoir le même nom.
Un étudiant ne peut pas emprunter deux fois le même livre.
Réécrire le modèle relationnel correctement, en intégrant les clés (primaires, candidates et étrangères), et les types de données.
Rétro-concevoir le modèle MCD en UML
Écrire en algèbre relationnel les requêtes suivantes :
Trouver les titres de tous les livres que l'étudiant sid='S15' a emprunté
Trouver les titres de tous les livres qui n'ont jamais été empruntés par un étudiant
Écrire en SQL les requêtes suivantes :
Trouver tous les étudiants qui ont emprunté le livre bid='B30'
Trouver les titres de tous les livres empruntés par des étudiants en informatique (dept = 'informatique')