2016-03-20 5 views
0

私はこの情報をすべて使ってテーブルを作成しなければならなかったのですが、何か情報のためにテーブルを追加するか、削除する必要があるかもしれません。私は多くのSQLをやっていませんが、私はこのテーブルをプロジェクトにしなければなりません。テーブルの作成に関する助言

drop table film_director; 
drop table film_actor; 
drop table film; 
drop table studio; 
drop table actor; 
drop table director; 

CREATE TABLE studio(
    studio_ID NUMBER NOT NULL, 
    studio_Name VARCHAR2(30), 
    PRIMARY KEY(studio_ID)); 

CREATE TABLE film(
    film_ID NUMBER NOT NULL, 
    studio_ID NUMBER NOT NULL, 
    genre VARCHAR2(30), 
    genre_ID NUMBER(1), 
    film_Len NUMBER(3), 
    film_Title VARCHAR2(30) NOT NULL, 
    year_Released NUMBER NOT NULL, 
    PRIMARY KEY(film_ID), 
    FOREIGN KEY (studio_ID) REFERENCES studio); 

CREATE TABLE director(
    director_ID NUMBER NOT NULL, 
    director_fname VARCHAR2(30), 
    director_lname VARCHAR2(30), 
    PRIMARY KEY(director_ID)); 

CREATE TABLE actor(
    actor_ID NUMBER NOT NULL, 
    actor_fname VARCHAR2(15), 
    actor_lname VARCHAR2(15), 
    PRIMARY KEY(actor_ID)); 

CREATE TABLE film_actor(
    film_ID NUMBER NOT NULL, 
    actor_ID NUMBER NOT NULL, 
    PRIMARY KEY(film_ID, actor_ID), 
    FOREIGN KEY(film_ID) REFERENCES film(film_ID), 
    FOREIGN KEY(actor_ID) REFERENCES actor(actor_ID)); 

CREATE TABLE film_director(
    film_ID NUMBER NOT NULL, 
    director_ID NUMBER NOT NULL, 
    PRIMARY KEY(film_ID, director_ID), 
    FOREIGN KEY(film_ID) REFERENCES film(film_ID), 
    FOREIGN KEY(director_ID) REFERENCES director(director_ID)); 

INSERT INTO studio (studio_ID, studio_Name) VALUES (1, 'Paramount'); 
INSERT INTO studio (studio_ID, studio_Name) VALUES (2, 'Warner Bros'); 
INSERT INTO studio (studio_ID, studio_Name) VALUES (3, 'Film4'); 
INSERT INTO studio (studio_ID, studio_Name) VALUES (4, 'Working Title Films'); 

INSERT INTO film (film_ID, studio_ID, genre, genre_ID, film_Len, film_Title, year_Released) VALUES (1, 1, 'Comedy', 1, 180, 'The Wolf Of Wall Street', 2013); 
INSERT INTO film (film_ID, studio_ID, genre, genre_ID, film_Len, film_Title, year_Released) VALUES (2, 2, 'Romance', 2, 143, 'The Great Gatsby', 2013); 
INSERT INTO film (film_ID, studio_ID, genre, genre_ID, film_Len, film_Title, year_Released) VALUES (3, 3, 'Science Fiction', 3, 103, 'Never Let Me Go', 2008); 
INSERT INTO film (film_ID, studio_ID, genre, genre_ID, film_Len, film_Title, year_Released) VALUES (4, 4, 'Romance', 4, 127, 'Pride and Prejudice', 2005); 

INSERT INTO director (director_ID, director_fname, director_lname) VALUES (1, 'Martin', 'Scorcese'); 
INSERT INTO director (director_ID, director_fname, director_lname) VALUES (2, 'Baz', 'Luhrmann'); 
INSERT INTO director (director_ID, director_fname, director_lname) VALUES (3, 'Mark', 'Romanek'); 
INSERT INTO director (director_ID, director_fname, director_lname) VALUES (4, 'Joe', 'Wright'); 

INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (1, 'Matthew', 'McConnaughy'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (2, 'Leonardo', 'DiCaprio'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (3, 'Margot', 'Robbie'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (4, 'Joanna', 'Lumley'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (5, 'Carey', 'Mulligan'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (6, 'Tobey', 'Maguire'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (7, 'Joel', 'Edgerton'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (8, 'Keira', 'Knightly'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (9, 'Andrew', 'Garfield'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (10, 'Sally', 'Hawkins'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (11, 'Judi', 'Dench'); 
INSERT INTO actor (actor_ID, actor_fname, actor_lname) VALUES (12, 'Matthew', 'Macfadyen'); 

INSERT INTO film_actor (film_ID, actor_ID) VALUES (1, 1); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (1, 2); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (1, 3); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (1, 4); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (2, 2); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (2, 5); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (2, 6); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (2, 7); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (3, 5); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (3, 8); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (3, 9); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (3, 10); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (4, 5); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (4, 8); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (4, 11); 
INSERT INTO film_actor (film_ID, actor_ID) VALUES (4, 12); 

INSERT INTO film_director (film_ID, director_ID) VALUES (1,1); 
INSERT INTO film_director (film_ID, director_ID) VALUES (2,2); 
INSERT INTO film_director (film_ID, director_ID) VALUES (3,3); 
INSERT INTO film_director (film_ID, director_ID) VALUES (4,4); 

答えて

0

私は2つのテーブルをcastingテーブルを交換することをお勧め - filmactor(俳優あたり膜ごとに1行を有する)およびfilmdirector(ダイレクタあたり膜ごとに1行を有します)。 castingテーブルには、不要な(指定されたフィルムに対して)各行に対してdirector_idが繰り返されています(3NFにもありません)。また、映画に複数の監督がいる場合(シナリオは不可能ではないが不可能)、シナリオを適切に処理することはできない。
それ以外のデザインは私にはうまく見えます。

+0

どのようにキャスティングテーブルを修正する必要がありますか?私はそれがディレクターの名前を4回印刷していたので、実行しようとしていたクエリの1つに問題の原因の1つがあると思います。 – Poena

+0

私はあなたがテーブル '鋳造'を必要としないと思います。私は確信が持てませんが、複数の「スタジオ」が「映画」に関連付けられている可能性があると思います。その場合、 'film'テーブルから' studio_id'を削除し、 'film'と' studio'を関連付ける新しいテーブル 'filmstudio'を作成する必要があります。 – AKS

+0

助けてくれてありがとうございます。 – Poena

関連する問題