/* Requetes de création du jeu de données Series (pour MySQL / MariaDB)
** Complement du cours "conception de BD - modélisation physique"
** UCB Lyon 1 - BDW1 - Fabien Duchateau - 2020
** https://perso.liris.cnrs.fr/fabien.duchateau/BDW1/
*/

CREATE TABLE Series(
	nomSerie VARCHAR(255) PRIMARY KEY
);

CREATE TABLE Saisons(
	idSaison INT PRIMARY KEY,
	dateLancement DATE,
	nomSerie VARCHAR(255) REFERENCES Series(nomSerie)
);

CREATE TABLE Episodes(
	numero INT,
	idSaison INT REFERENCES Saisons(idSaison),
	titre VARCHAR(255),
	PRIMARY KEY(numero, idSaison)
);

CREATE TABLE Actrices(
	numINSEE INT PRIMARY KEY,
	nom VARCHAR(255),
	prenom VARCHAR(255)
);

CREATE TABLE Joue(
	numero INT,
	idSaison INT,
	numINSEE INT REFERENCES Actrices(numINSEE),
	salaire DOUBLE,
	CONSTRAINT pk_Joue PRIMARY KEY(numero, idSaison, numINSEE),
	CONSTRAINT fk_episodes FOREIGN KEY(numero, idSaison) REFERENCES Episodes(numero, idSaison),
	CONSTRAINT check_salaire_positif CHECK(salaire > 0.0)
);

/* Insertion de tuples */
INSERT INTO Series VALUES('The Big Bang Theory');
INSERT INTO Series VALUES('Game of Thrones');
INSERT INTO Saisons VALUES(1, '2011-09-22', 'The Big Bang Theory');
INSERT INTO Saisons VALUES(2, '2012-09-27', 'The Big Bang Theory');
INSERT INTO Saisons VALUES(3, '2011-04-17', 'Game of Thrones');
INSERT INTO Episodes VALUES(1, 1, 'The Skank Reflex Analysis');
INSERT INTO Episodes VALUES(1, 2, 'The Date Night Variable');
INSERT INTO Episodes VALUES(1, 3, 'Winter is coming');
INSERT INTO Episodes VALUES(2, 3, 'The Kingsroad');
INSERT INTO Actrices VALUES(111, 'Bean', 'Sean');
INSERT INTO Actrices VALUES(222, 'Fairley', 'Michelle');
INSERT INTO Actrices VALUES(333, 'Cuoco', 'Kaley');
INSERT INTO Actrices VALUES(444, 'Parsons', 'Jim');
INSERT INTO Joue VALUES(1, 3, 111, NULL);
INSERT INTO Joue VALUES(1, 3, 222, 6000);
INSERT INTO Joue VALUES(2, 3, 111, 5437.65);
INSERT INTO Joue VALUES(2, 3, 222, 6000);
INSERT INTO Joue VALUES(1, 1, 333, 3200);
INSERT INTO Joue VALUES(1, 1, 444, 3200);
INSERT INTO Joue VALUES(1, 2, 333, 3200);
INSERT INTO Joue VALUES(1, 2, 444, 3200);

