TD 10 : Algèbre relationnelle (suite) et projet

Enchainements d'opérations

Relation Clients :

ID Nom Age
1 Alice 20
2 Bob 19
3 Camille 19

Relation Produits :

ID Nom Couleur
1 lampe rouge
2 lampe bleu
3 stylo rouge

Relation Achats :

ID IDClient IDProduit
1 2 3
2 2 1
3 3 1

Pour chacune des opérations suivantes, calculer la relation et donner la requête SQL correspondante.

  1. Calculer σAge=19(Clients)\sigma_{ Age = 19}(Clients).

  2. Calculer πNom(σAge=19(Clients))\pi_{Nom} ( \sigma_{ Age = 19}(Clients) ).

  3. Calculer σID2(πID(σAge=19(Clients)))\sigma_{ ID \leq 2} (\pi_{ID} ( \sigma_{ Age = 19}(Clients) )).

  4. Calculer πID,Couleur(Produits)\pi_{ID,Couleur} (Produits).

  5. Calculer σCouleur=rouge(πID,Couleur(Produits))\sigma_{Couleur = rouge} (\pi_{ID,Couleur}(Produits)).

  6. Calculer πID,Couleur(σCouleur=rouge(Produits))\pi_{ID,Couleur}( \sigma_{Couleur = rouge} (Produits)).

Jointure

Comme en SQL on peut faire la jointure de deux relations. Soient RR et SS deux relations. La jointure est notée Ra=bSR \bowtie_{a=b} Saa désigne un attribut de RR et bb un attribut de SS.

Pour chacune des opérations suivantes, calculer la relation et donner la requête SQL correspondante.

  1. Calculer ClientsClients.ID=Achats.IDClientAchatsClients \bowtie_{Clients.ID = Achats.IDClient} Achats.

  2. Calculer ProduitsProduits.ID=Achats.IDProduitAchatsProduits \bowtie_{Produits.ID = Achats.IDProduit} Achats.

  3. Calculer (ProduitsProduits.ID=Achats.IDProduitAchats)Achats.IDClient=Clients.IDClients(Produits \bowtie_{Produits.ID = Achats.IDProduit} Achats) \bowtie_{Achats.IDClient = Clients.ID} Clients.

  4. Calculer σProduits.Couleur=rouge(ProduitsProduits.ID=Achats.IDProduitAchats)\sigma_{Produits.Couleur = rouge} (Produits \bowtie_{Produits.ID = Achats.IDProduit} Achats).

  5. Calculer πClients.ID(ClientsClients.ID=Achats.IDClientAchats)\pi_{Clients.ID} (Clients \bowtie_{Clients.ID = Achats.IDClient} Achats).

Projet

Créer une base de données modélisant une situation existante dans votre domaine d'études (ou autre). La base de données sera créé sur Libre Office Base ou avec SQLite. Il faut qu'elle contienne au moins 3 tables et 2 clefs étrangères. Pour chaque attribut, il faut préciser son type, si c'est une clef primaire ou une clef étrangère, s'il peut être NULL. Il faut aussi préciser les règles de suppression et de mises à jour.

Remplir la base avec quelques données et tester les règles de suppression et de mises à jour.