csi2532 playground Firas Jribi 300084463
SELECT name, dateofbirth FROM artists;
SELECT title, price FROM artworks WHERE year > 1600;
SELECT title, type FROM artworks WHERE year = 2000 OR artist_name = 'Picasso';
SELECT name, birthplace FROM artists
WHERE EXTRACT(YEAR FROM dateofbirth) > 1880
and EXTRACT(YEAR FROM dateofbirth) < 1930 ;
SELECT name, country FROM artists
WHERE style in ('Modern', 'Baroque', 'Renaissance');
SELECT * FROM artworks ORDER BY title;
SELECT name, id
FROM customers
JOIN likeartists ON customers.ID = likeartists.customer_id
where artist_name = 'Picasso';
SELECT name
FROM customers
JOIN likeartists ON customers.ID = likeartists.customer_id
WHERE artist_name in (
SELECT name
FROM artists JOIN artworks on artists.name = artworks.artist_name
WHERE style = 'Renaissance' AND price > 30000
);
Les migrations ont ete ajoutees a db/migrations
Une base de données universitaire contient des informations sur les professeurs
(identifié par le numéro de sécurité sociale ou SSN) et les cours
(identifié par courseid). Les professeurs donnent des cours; chacun de
les situations suivantes concernent l'ensemble de relation teaches
.
Pour chaque situation voici un diagramme ER qui le décrit (en supposant qu'aucune autre contrainte).
- Les professeurs peuvent enseigner le même cours sur plusieurs semestres et seule la plus récente doit être enregistrée.
- Chaque professeur doit enseigner un cours.
- Chaque professeur enseigne exactement un cours (ni plus, ni moins).
- Chaque professeur enseigne exactement un cours (ni plus, ni moins), et chaque cours doit être enseigné par un professeur.
- Les professeurs peuvent enseigner le même cours sur plusieurs semestres et chaque doit être enregistrée.
- Supposons maintenant que certains cours puissent être enseignés conjointement par une équipe de professeurs, mais il est possible qu'aucun professeur dans une équipe ne puisse enseigner le cours. Modélisez cette situation en introduisant des ensembles d'entités et des ensembles de relations supplémentaires si nécessaire.
Avec les diagrammes ER ci-dessus, modèlez un diagramme relationnel pour les systèmes.
Avec les diagrammes relationnel ci-dessus, écrivez un schéma SQL relationnel pour les systèmes.
CREATE TABLE "professor" (
"ssn" varchar(20),
PRIMARY KEY ("ssn")
);
CREATE TABLE "teaches" (
"ssn" varchar(20),
"courseid" varchar(20),
"semesterid" varchar(20),
PRIMARY KEY ("ssn", "courseid")
);
CREATE TABLE "course" (
"courseid" varchar(20),
PRIMARY KEY ("courseid")
);
CREATE TABLE "professor" (
"ssn" varchar(20),
PRIMARY KEY ("ssn")
);
CREATE TABLE "teaches" (
"ssn" varchar(20),
"courseid" varchar(20),
"semesterid" varchar(20),
PRIMARY KEY ("courseid")
);
CREATE TABLE "course" (
"courseid" varchar(20),
PRIMARY KEY ("courseid")
);
CREATE TABLE "professor" (
"ssn" varchar(20),
PRIMARY KEY ("ssn")
);
CREATE TABLE "teaches" (
"ssn" varchar(20),
"courseid" varchar(20),
"semesterid" varchar(20),
PRIMARY KEY ("semesterid")
);
CREATE TABLE "course" (
"courseid" varchar(20),
PRIMARY KEY ("courseid")
);
CREATE TABLE "professor" (
"ssn" varchar(20),
PRIMARY KEY ("ssn")
);
CREATE TABLE "teaches" (
"courseid" varchar(20),
"groupid" varchar(20),
"semesterid" varchar(20),
PRIMARY KEY ("semesterid")
);
CREATE TABLE "group" (
"groupid" varchar(20),
PRIMARY KEY ("groupid")
);
CREATE TABLE "member_of" (
"ssn" varchar(20),
"courseid" varchar(20),
"membershipid" varchar(20),
PRIMARY KEY ("membershipid")
);
CREATE TABLE "course" (
"courseid" varchar(20),
PRIMARY KEY ("courseid")
);
Pour chaque situation voici un diagramme ER qui le décrit (en supposant qu'aucune autre contrainte).
Les professeurs peuvent enseigner le même cours sur plusieurs semestres et seule la plus récente doit être enregistrée.
Chaque professeur doit enseigner un cours.
Chaque professeur enseigne exactement un cours (ni plus, ni moins).
Chaque professeur enseigne exactement un cours (ni plus, ni moins), et chaque cours doit être enseigné par un professeur.
Les professeurs peuvent enseigner le même cours sur plusieurs semestres et chaque doit être enregistrée.
Supposons maintenant que certains cours puissent être enseignés conjointement par une équipe de professeurs, mais il est possible qu'aucun professeur dans une équipe ne puisse enseigner le cours. Modélisez cette situation en introduisant des ensembles d'entités et des ensembles de relations supplémentaires si nécessaire.
# psql -c "DROP DATABASE university"
psql -c "CREATE DATABASE university"
psql university -f ./db/schema.sql
psql university -f ./db/seed.sql
psql university -f ./db/test.sql