TD 7 : Contraintes (suite)
Définition de données et Contraintes
L3 MIASHS/Ingémath |
Année 2024 |
Cette séance est consacrée à l’enrichissement des schémas pagila
et nycflights
.
L’objectif est d’ajouter des contraintes aux schémas, en particulier, des contraintes d’exclusion.
Cette séance est l’occasion de se familiariser avec les types timestamp
et tsrange
et avec les opérateurs de recouvrement.
Contraintes SQL (suite)
Schéma pagila
Imposer la contrainte suivante : un client ne peut emprunter plusieurs DVD simultanément.
Écrire d’abord une requête correspondant à la contrainte.
La requête est facile à écrire si on est prêt à utiliser le type tsrange
, l’opérateur de recouvrement &&
(overlap
).
Postgresql documentation on range types
Dans l’instance du schéma pagila
disponible sur le serveur etu-pgsql
, la contrainte est-elle vérifiée ?
Imposer la contrainte : un film est identifié par son titre, son année de sortie et sa langue originale.
Imposer la contrainte : le prix de location doit être croissant en fonction de la durée du film
Imposer la contrainte : un même DVD ne peut pas être loué simultanément à deux clients différents.
Schéma nycflights
Dans flights
et weather
imposer les contraintes
year, month, day, hour ⟶ time_hour
time_hour ⟶ year, month, day, hour
Dans flights
imposer la contrainte : un aéronef ne peut pas effectuer deux missions simultanément.
Dans flights
imposer la contrainte : un aéronef ne peut pas être exploité par deux compagnies différentes à la même date.
Dans planes
, imposer les contraintes model ⟶ manufacturer
et model ⟶ type