diff --git a/ERD.png b/ERD.png new file mode 100644 index 0000000..58426c7 Binary files /dev/null and b/ERD.png differ diff --git a/gleek_code.txt b/gleek_code.txt new file mode 100644 index 0000000..8f94c06 --- /dev/null +++ b/gleek_code.txt @@ -0,0 +1,95 @@ +Original_Unnormalized_Table + int ID PK + string Title + string Director + string Director_country + string Star + Date Star_DOB + string writer + string Writer_email + int year + string Genre + int Score + + +Persons + int ID PK + string Name + + +DateOfBirths + int ID PK + Date dateOfBith + int PersonsID FK "unique" + +HomeCountries + int ID PK + int PersonsID FK "unique" + int CountriesID FK + +Countries + int ID PK + string name "unique" + +Genres + int ID PK + string name "unique" + +Emails + int ID PK + string Title + int PersonID FK "unique" + +Movies + int ID PK + string Title + int Year + int score "range 0 to 10" + int DirectorID FK + int WriterID FK + int MovieStarID FK + +Movie_Genre + int ID PK + int MoviesID FK + int GenresID FK + + +MovieStar + int ID PK + int PersonID FK + +MovieDirector + int ID PK + int PersonID FK + +MovieWriter + int ID PK + int PersonID FK + +Cast + int ID PK + int MoviesID FK + int PersonID FK + +Persons{1}--registered--{01}DateOfBirths +Persons{1}--registered--{01}HomeCountries +Countries{1}--registered--{0..n}HomeCountries + +Movies{1}--registered--{1..n}Movie_Genre +Movie_Genre{1..n}--is--{1}Genres + +Persons{1}--registrered--{01}Emails + + +MovieStar{1}--starIn--{1}Movies +MovieStar{01}--isA--{1}Persons + +MovieDirector{1}--directed--{1}Movies +MovieDirector{01}--isA--{1}Persons + +MovieWriter{1}--wrote--{1}Movies +MovieWriter{01}--isA--{1}Persons + +Cast{0..n}--wrote--{1}Movies +Cast{0..n}--isA--{1}Persons \ No newline at end of file diff --git a/planning.md b/planning.md new file mode 100644 index 0000000..ec15c42 --- /dev/null +++ b/planning.md @@ -0,0 +1,113 @@ + +# Use regex to get data from entries... + + +2001: A Space Odyssey +Stanley Kubrick +USA +Keir Dullea +30/05/1936 +Arthur C Clarke +arthur@clarke.com +1968 +Science Fiction +10 + +Star Wars: A New Hope +George Lucas +USA +Mark Hamill +25/09/1951 +George Lucas +george@email.com +1977 +Science Fiction +7 + +To Kill A Mockingbird +Robert Mulligan +USA +Gregory Peck +05/04/1916 +Harper Lee +harper@lee.com +1962 +Drama +10 + +Titanic +James Cameron +Canada +Leonardo DiCaprio +11/11/1974 +James Cameron +james@cameron.com +1997 +Romance +5 + +Dr Zhivago +David Lean +UK +Julie Christie +14/04/1940 +Boris Pasternak +boris@boris.com +1965 +Historical +8 + +El Cid +Anthony Mann +USA +Charlton Heston +04/10/1923 +Frederick Frank +fred@frank.com +1961 +Historical +6 + +Voyage to Cythera +Theodoros Angelopoulos +Greece +Manos Katrakis +14/08/1908 +Theodoros Angelopoulos +theo@angelopoulos.com +1984 +Drama +8 + +Soldier of Orange +Paul Verhoeven +Netherlands +Rutger Hauer +23/01/1944 +Erik Hazelhoff Roelfzema +erik@roelfzema.com +1977 +Thriller +8 + +Three Colours: Blue +Krzysztof Kieslowski +Poland +Juliette Binoche +09/03/1964 +Krzysztof Kieslowski +email@email.com +1993 +Drama +8 + +Cyrano de Bergerac +Jean-Paul Rappeneau +France +Gerard Depardieu +27/12/1948 +Edmond Rostand +edmond@rostand.com +1990 +Historical +9 \ No newline at end of file diff --git a/queries/1_select.sql b/queries/1_select.sql new file mode 100644 index 0000000..22bd8b9 --- /dev/null +++ b/queries/1_select.sql @@ -0,0 +1,4 @@ +-- Show the title and director name for all films + + +SELECT m.title, p.name FROM movies m INNER JOIN movie_director md ON md.id = m.director_id INNER JOIN persons p ON p.id = md.persons_id; \ No newline at end of file diff --git a/queries/2_select.sql b/queries/2_select.sql new file mode 100644 index 0000000..33060a2 --- /dev/null +++ b/queries/2_select.sql @@ -0,0 +1,8 @@ +-- Show the title, director and star name for all films + +SELECT m.title, p.name AS Director, msp.name AS Star + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN movie_star ms ON ms.id = m.movie_star_id + INNER JOIN persons p ON p.id = md.persons_id + INNER JOIN persons msp ON msp.id = ms.persons_id; \ No newline at end of file diff --git a/queries/3_select.sql b/queries/3_select.sql new file mode 100644 index 0000000..10007e2 --- /dev/null +++ b/queries/3_select.sql @@ -0,0 +1,11 @@ +--Show the title of films where the director is from the USA + +SELECT m.title, d.name AS Director, msp.name AS Star, c.countryname + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN movie_star ms ON ms.id = m.movie_star_id + INNER JOIN persons d ON d.id = md.persons_id + INNER JOIN persons msp ON msp.id = ms.persons_id + INNER JOIN home_countries homec ON homec.person_id = d.id + INNER JOIN countries c ON c.id= homec.countries_id + WHERE c.countryname LIKE '%USA%'; \ No newline at end of file diff --git a/queries/4_select.sql b/queries/4_select.sql new file mode 100644 index 0000000..5fb0009 --- /dev/null +++ b/queries/4_select.sql @@ -0,0 +1,7 @@ +--Show only those films where the writer and the director are the same person + +SELECT m.title + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN movie_writer mw ON mw.id = m.movie_star_id + WHERE mw.persons_id = md.persons_id; \ No newline at end of file diff --git a/queries/5_select.sql b/queries/5_select.sql new file mode 100644 index 0000000..1f4d5c4 --- /dev/null +++ b/queries/5_select.sql @@ -0,0 +1,8 @@ +--Show directors and film titles for films with a score of 8 or higher + + +SELECT m.title, p.name AS Director, m.score + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN persons p ON p.id = md.persons_id + WHERE m.score >= 8; \ No newline at end of file diff --git a/queries/6_select.sql b/queries/6_select.sql new file mode 100644 index 0000000..b1bbb55 --- /dev/null +++ b/queries/6_select.sql @@ -0,0 +1,55 @@ +--Make at least 5 more queries to demonstrate your understanding of joins, and other relationships between tables. + + +-- less than 8 +SELECT m.title, p.name AS Director, m.score + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN persons p ON p.id = md.persons_id + WHERE m.score < 8; + +-- All movies and genres +SELECT m.title, g.genre_name + FROM movies m + INNER JOIN genres_for_movies mg ON mg.movies_id = m.id + INNER JOIN genres g ON g.id = mg.genre_id; + +-- All Drama Movies +SELECT m.title, g.genre_name + FROM movies m + INNER JOIN genres_for_movies mg ON mg.movies_id = m.id + INNER JOIN genres g ON g.id = mg.genre_id + where g.genre_name LIKE '%Drama%'; + + +-- All Science Fiction by Cameron +SELECT m.title, g.genre_name + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN persons p ON md.persons_id = p.id + INNER JOIN genres_for_movies mg ON mg.movies_id = m.id + INNER JOIN genres g ON g.id = mg.genre_id + where g.genre_name LIKE '%Science Fiction%' + AND p.name LIKE '%James Cameron%'; -- results in 0 movies, because Aliens was not part of the list... + +-- All Drama movies with a director from USA +SELECT m.title, g.genre_name + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN persons p ON md.persons_id = p.id + INNER JOIN home_countries hc ON hc.person_id = p.id + INNER JOIN countries c ON hc.countries_id = c.id + INNER JOIN genres_for_movies mg ON mg.movies_id = m.id + INNER JOIN genres g ON g.id = mg.genre_id + where g.genre_name LIKE '%Drama%' + AND c.countryname LIKE '%USA%'; + + +-- select all other cast from the james cameraon movies +SELECT m.title, mc.persons_id, mcp.name + FROM movies m + INNER JOIN movie_director md ON md.id = m.director_id + INNER JOIN persons p ON md.persons_id = p.id + INNER JOIN cast_in_movies mc ON mc.movies_id = m.id + INNER JOIN persons mcp ON mcp.id = mc.persons_id + AND p.name LIKE '%James Cameron%'; \ No newline at end of file diff --git a/queries/create_tables.sql b/queries/create_tables.sql new file mode 100644 index 0000000..13877eb --- /dev/null +++ b/queries/create_tables.sql @@ -0,0 +1,107 @@ + + + + + +CREATE TABLE persons( + id serial PRIMARY KEY, + name varchar(55) NOT NULL +); + +CREATE TABLE date_of_births( + id serial int IDENTITY PRIMARY KEY, + birth_date date NOT NULL, + person_id int NOT NULL, + CONSTRAINT fk_persons_id FOREIGN KEY (person_id) REFERENCES persons(id), + UNIQUE(person_id) +); + + +CREATE TABLE countries( + id serial PRIMARY KEY, + countryname VARCHAR(55) NOT NULL, + UNIQUE(countryname) +); + +CREATE TABLE emails( + id serial PRIMARY KEY, + email_str VARCHAR(256) NOT NULL, + person_id int NOT NULL, + CONSTRAINT fk_persons_id FOREIGN KEY (person_id) REFERENCES persons(id), + UNIQUE(person_id) +); + +CREATE TABLE home_countries( + id serial PRIMARY KEY, + countries_id int NOT NULL, + person_id int NOT NULL, + CONSTRAINT fk_persons_id FOREIGN KEY (person_id) REFERENCES persons(id), + constraint fk_countriesid FOREIGN KEY (countries_id) REFERENCES countries(id), + UNIQUE(person_id) +); + +CREATE TABLE movie_director( + id serial PRIMARY KEY, + persons_id int NOT NULL, + FOREIGN KEY (persons_id) REFERENCES persons(id), + UNIQUE(persons_id) +); + +CREATE TABLE movie_star( + id serial PRIMARY KEY, + persons_id int NOT NULL, + FOREIGN KEY (persons_id) REFERENCES persons(id), + UNIQUE(persons_id) +); + +CREATE TABLE movie_writer( + id serial PRIMARY KEY, + persons_id int NOT NULL, + FOREIGN KEY (persons_id) REFERENCES persons(id), + UNIQUE(persons_id) +); + + +CREATE TABLE genres( + id serial PRIMARY KEY, + genre_name varchar(128), + UNIQUE(genre_name) +); + + +CREATE TABLE movies( + id serial PRIMARY KEY, + title VARCHAR(256) NOT NULL, + release_year int NOT NULL, + score int NOT NULL CHECK(score <= 10 AND score >= 0), + director_id int NOT NULL, + movie_star_id int NOT NULL, + writer_id int NOT NULL, + FOREIGN KEY (director_id) REFERENCES movie_director(id), + FOREIGN KEY (movie_star_id) REFERENCES movie_star(id), + FOREIGN KEY (writer_id) REFERENCES movie_writer(id), + UNIQUE(title, director_id, writer_id, movie_star_id) +); + + +CREATE TABLE genres_for_movies( + id serial PRIMARY KEY, + movies_id int NOT NULL, + genre_id int NOT NULL, + CONSTRAINT fk_movies_id FOREIGN KEY (movies_id) REFERENCES movies(id), + CONSTRAINT fk_genre_id FOREIGN KEY (genre_id) REFERENCES genres(id) +); + +CREATE TABLE cast_in_movies( + id serial PRIMARY KEY, + movies_id int NOT NULL, + persons_id int NOT NULL, + FOREIGN KEY (movies_id) REFERENCES movies(id), + FOREIGN KEY (persons_id) REFERENCES persons(id), + UNIQUE(movies_id, persons_id) +); + + + + + diff --git a/queries/insert_into_tables.sql b/queries/insert_into_tables.sql new file mode 100644 index 0000000..fac6cd2 --- /dev/null +++ b/queries/insert_into_tables.sql @@ -0,0 +1,383 @@ + + + +INSERT INTO persons +(name) +VALUES +-- Stars - Persons with registered birthdays +('Keir Dullea'), -- 1 +('Mark Hamill'), -- 2 +('Gregory Peck'), -- 3 +('Leonardo DiCaprio'), -- 4 +('Julie Christie'), -- 5 +('Charlton Heston'), -- 6 +('Manos Katrakis'), -- 7 +('Rutger Hauer'), -- 8 +('Juliette Binoche'), -- 9 +('Gerard Depardieu'), -- 10 +-- Directors - persons with home contries +('Stanley Kubrick'), -- 11 +('George Lucas'), -- 12 +('Robert Mulligan'), -- 13 +('James Cameron'), -- 14 +('David Lean'), -- 15 +('Anthony Mann'), -- 16 +('Theodoros Angelopoulos'), -- 17 +('Paul Verhoeven'), -- 18 +('Krzysztof Kieslowski'), -- 19 +('Jean-Paul Rappeneau'), -- 20 +-- Writers - persons with email adresses +('Arthur C Clarke'), -- 21 +('George Lucas'), -- 22 +('Harper Lee'), -- 23 +('James Cameron'), -- 24 +('Boris Pasternak'), -- 25 +('Frederick Frank'), -- 26 +('Theodoros Angelopoulos'), -- 27 +('Erik Hazelhoff Roelfzema'), -- 28 +('Krzysztof Kieslowski'), -- 29 +('Edmond Rostand'); -- 30 + +INSERT INTO countries +(countryname) +VALUES +('USA'), -- 11, 1 +--('USA'), -- 12, 1 +--('USA'), -- 13, 1 +--('USA'), -- 16, 1 +('Canada'), -- 14, 2 +('UK'), -- 15, 3 +('Greece'), -- 17, 4 +('Netherlands'), -- 18, 5 +('Poland'), -- 19, 6 +('France'); -- 20, 7 + +INSERT INTO genres +(genre_name) +VALUES +('Science Fiction'), +-- ('Science Fiction'), +-- ('Drama'), +('Romance'), +-- ('Historical'), +-- ('Historical'), +-- ('Drama'), +('Thriller'), +('Drama'), +('Historical'); + + +CREATE FUNCTION add_person_birthdate +(person varchar(55), birthdate Date) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + + INSERT INTO date_of_births + (person_id, birth_date) + VALUES + (person_id, birthdate); + return person_id; + +END; +$$; + +CREATE FUNCTION add_person_email +(person varchar(55), emailstr varchar(256)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + + INSERT INTO emails + (person_id, email_str) + VALUES + (person_id, emailstr); + return person_id; + +END; +$$; + +CREATE FUNCTION add_person_homecountry +(person varchar(55), countryname_in varchar(55)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; + country_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + SELECT c.id INTO country_id FROM countries c WHERE c.countryname LIKE '%'||countryname_in||'%'; + + INSERT INTO home_countries + (person_id, countries_id) + VALUES + (person_id, country_id); + return person_id; + +END; +$$; + +CREATE FUNCTION add_director +(person varchar(55)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + + INSERT INTO movie_director + (persons_id) + VALUES + (person_id); + return person_id; + +END; +$$; + + +CREATE FUNCTION add_writer +(person varchar(55)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + + INSERT INTO movie_writer + (persons_id) + VALUES + (person_id); + return person_id; + +END; +$$; + +CREATE FUNCTION add_movie_star +(person varchar(55)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + person_id int; +BEGIN + -- logic + SELECT p.id INTO person_id FROM persons p WHERE p.name LIKE '%'||person||'%'; + + INSERT INTO movie_star + (persons_id) + VALUES + (person_id); + return person_id; + +END; +$$; + +SELECT add_director('Stanley Kubrick'); +SELECT add_director('George Lucas'); +SELECT add_director('Robert Mulligan'); +SELECT add_director('James Cameron'); +SELECT add_director('David Lean'); +SELECT add_director('Anthony Mann'); +SELECT add_director('Theodoros Angelopoulos'); +SELECT add_director('Paul Verhoeven'); +SELECT add_director('Krzysztof Kieslowski'); +SELECT add_director('Jean-Paul Rappeneau'); + +SELECT add_writer('Arthur C Clarke'); +SELECT add_writer('George Lucas'); +SELECT add_writer('Harper Lee'); +SELECT add_writer('James Cameron'); +SELECT add_writer('Boris Pasternak'); +SELECT add_writer('Frederick Frank'); +SELECT add_writer('Theodoros Angelopoulos'); +SELECT add_writer('Erik Hazelhoff Roelfzema'); +SELECT add_writer('Krzysztof Kieslowski'); +SELECT add_writer('Edmond Rostand'); + +SELECT add_movie_star('Keir Dullea'); +SELECT add_movie_star('Mark Hamill'); +SELECT add_movie_star('Gregory Peck'); +SELECT add_movie_star('Leonardo DiCaprio'); +SELECT add_movie_star('Julie Christie'); +SELECT add_movie_star('Charlton Heston'); +SELECT add_movie_star('Manos Katrakis'); +SELECT add_movie_star('Rutger Hauer'); +SELECT add_movie_star('Juliette Binoche'); +SELECT add_movie_star('Gerard Depardieu'); + + +SELECT add_person_birthdate('Keir Dullea', '1936-05-30'); +SELECT add_person_birthdate('Mark Hamill', '1951-09-25'); +SELECT add_person_birthdate('Gregory Peck', '1916-04-05'); +SELECT add_person_birthdate('Leonardo DiCaprio', '1974-11-11'); +SELECT add_person_birthdate('Julie Christie', '1940-04-14'); +SELECT add_person_birthdate('Charlton Heston', '1923-10-04'); +SELECT add_person_birthdate('Manos Katrakis', '1908-08-14'); +SELECT add_person_birthdate('Rutger Hauer', '1944-01-23'); +SELECT add_person_birthdate('Juliette Binoche', '1964-03-09'); +SELECT add_person_birthdate('Gerard Depardieu', '1948-12-27'); + +SELECT add_person_email('Arthur C Clarke', 'arthur@clarke.com'); +SELECT add_person_email('George Lucas', 'george@email.com'); +SELECT add_person_email('Harper Lee', 'harper@lee.com'); +SELECT add_person_email('James Cameron', 'james@cameron.com'); +SELECT add_person_email('Boris Pasternak', 'boris@boris.com'); +SELECT add_person_email('Frederick Frank', 'fred@frank.com'); +SELECT add_person_email('Theodoros Angelopoulos', 'theo@angelopoulos.com'); +SELECT add_person_email('Erik Hazelhoff Roelfzema', 'erik@roelfzema.com'); +SELECT add_person_email('Krzysztof Kieslowski', 'email@email.com'); +SELECT add_person_email('Edmond Rostand', 'edmond@rostand.com'); + +SELECT add_person_homecountry('Stanley Kubrick', 'USA'); +SELECT add_person_homecountry('George Lucas', 'USA'); +SELECT add_person_homecountry('Robert Mulligan', 'USA'); +SELECT add_person_homecountry('James Cameron', 'Canada'); +SELECT add_person_homecountry('David Lean', 'UK'); +SELECT add_person_homecountry('Anthony Mann', 'USA'); +SELECT add_person_homecountry('Theodoros Angelopoulos', 'Greece'); +SELECT add_person_homecountry('Paul Verhoeven', 'Netherlands'); +SELECT add_person_homecountry('Krzysztof Kieslowski', 'Poland'); +SELECT add_person_homecountry('Jean-Paul Rappeneau', 'France'); + + + + + +CREATE FUNCTION add_movie +(_title VARCHAR(256), _release_year int, _score int,genre VARCHAR(128), director VARCHAR, writer VARCHAR, moviestar VARCHAR) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + _movie_id int; + _director_id int; + _writer_id int; + _moviestar_id int; + _genre_id int; +BEGIN + -- logic + BEGIN -- Exception + select md.id INTO _director_id FROM persons p INNER JOIN movie_director md ON md.persons_id = p.id WHERE p.name LIKE '%'||director||'%'; + select mw.id INTO _writer_id FROM persons p INNER JOIN movie_writer mw ON mw.persons_id = p.id WHERE p.name LIKE '%'||writer||'%'; + select ms.id INTO _moviestar_id FROM persons p INNER JOIN movie_star ms ON ms.persons_id = p.id WHERE p.name LIKE '%'||moviestar||'%'; + select g.id INTO _genre_id FROM genres g WHERE g.genre_name LIKE '%'||genre||'%'; + + INSERT INTO movies + (title, release_year, score, director_id, writer_id, movie_star_id) + VALUES + (_title, _release_year, _score, _director_id, _writer_id, _moviestar_id) + RETURNING id INTO _movie_id; + + INSERT INTO genres_for_movies + (genre_id, movies_id) + VALUES + (_genre_id, _movie_id); + + return _movie_id; + EXCEPTION + WHEN OTHERS THEN + -- Rollback and raise error + -- ROLLBACK; + RAISE; + END; + +END; +$$; +-- drop FUNCTION add_movie; + +CREATE FUNCTION add_movie_cast_member +(cast_name varchar(55), movie varchar(55)) +RETURNS int +LANGUAGE plpgsql AS $$ +DECLARE + -- variables + _person_id int; + _movie_id int; + _cast_id int; +BEGIN + -- logic + SELECT p.id INTO _person_id FROM persons p WHERE p.name LIKE '%'||cast_name||'%'; + SELECT m.id INTO _movie_id FROM movies m WHERE m.title LIKE '%'||movie||'%'; + + IF _person_id IS NULL AND _movie_id IS NOT NULL THEN + INSERT INTO persons + (name) + VALUES + (cast_name) + RETURNING id INTO _person_id; + END IF; + + INSERT INTO cast_in_movies + (persons_id, movies_id) + VALUES + (_person_id, _movie_id) + RETURNING id INTO _cast_id; + + return _cast_id; + +END; +$$; + +DROP FUNCTION add_movie_cast_member; + + + +select add_movie('2001: A Space Odyssey', 1968, 10, 'Science Fiction', 'Stanley Kubrick', 'Arthur C Clarke', 'Keir Dullea'); +SELECT add_movie_cast_member('bob', '2001: A Space Odyssey'); +SELECT add_movie_cast_member('Doodle', '2001: A Space Odyssey'); + +select add_movie('Star Wars: A New Hope', 1977, 7, 'Science Fiction', 'George Lucas', 'George Lucas', 'Mark Hamill'); +SELECT add_movie_cast_member('bob', 'Star Wars: A New Hope'); +SELECT add_movie_cast_member('Flart', 'Star Wars: A New Hope'); + +select add_movie('To Kill A Mockingbird', 1962, 10, 'Drama', 'Robert Mulligan', 'Harper Lee', 'Gregory Peck'); +SELECT add_movie_cast_member('bob', 'To Kill A Mockingbird'); +SELECT add_movie_cast_member('Blorp', 'To Kill A Mockingbird'); + +select add_movie('Titanic', 1997, 5, 'Romance', 'James Cameron', 'James Cameron', 'Leonardo DiCaprio'); +SELECT add_movie_cast_member('bob', 'Titanic'); +SELECT add_movie_cast_member('Glirp', 'Titanic'); + +select add_movie('Dr Zhivago', 1965, 8, 'Historical', 'David Lean', 'Boris Pasternak', 'Julie Christie'); +SELECT add_movie_cast_member('bob', 'Dr Zhivago'); +SELECT add_movie_cast_member('Frumthh', 'Dr Zhivago'); + +select add_movie('El Cid', 1961, 6, 'Historical', 'Anthony Mann', 'Frederick Frank', 'Charlton Heston'); +SELECT add_movie_cast_member('bob', 'El Cid'); +SELECT add_movie_cast_member('Dovid', 'El Cid'); + +select add_movie('Voyage to Cythera', 1984, 8, 'Drama', 'Theodoros Angelopoulos', 'Theodoros Angelopoulos', 'Manos Katrakis'); +SELECT add_movie_cast_member('bob', 'Voyage to Cythera'); +SELECT add_movie_cast_member('Golum', 'Voyage to Cythera'); + +select add_movie('Soldier of Orange', 1977, 8, 'Thriller', 'Paul Verhoeven', 'Erik Hazelhoff Roelfzema', 'Rutger Hauer'); +SELECT add_movie_cast_member('bob', 'Soldier of Orange'); +SELECT add_movie_cast_member('Golumum', 'Soldier of Orange'); + +select add_movie('Three Colours: Blue', 1993, 8, 'Drama', 'Krzysztof Kieslowski', 'Krzysztof Kieslowski', 'Juliette Binoche'); +SELECT add_movie_cast_member('bob', 'Three Colours: Blue'); +SELECT add_movie_cast_member('Shrek', 'Three Colours: Blue'); + +select add_movie('Cyrano de Bergerac', 1990, 9, 'Historical', 'Jean-Paul Rappeneau', 'Edmond Rostand', 'Gerard Depardieu'); +SELECT add_movie_cast_member('bob', 'Cyrano de Bergerac'); +SELECT add_movie_cast_member('Loink', 'Cyrano de Bergerac'); + +