2016-04-08 1 views
1

繰り返しグループのないテーブルを設計する必要がありますが、私はそれを行っていると思いますが、リンクされたテーブルの外観が正しいか、改善できるものはありますか?私はすべての質問を実行し、プレイヤー&のマネージャーのためにいくつかの繰り返しグループを持っていました。私はチームテーブルの両方でそれらを持っていたので、私はteam_player & team_managerに分割しました。監督はまた、彼の映画のほとんどに表示されますクエンティン・タランティーノのような俳優であるならば、何が起こるためなどテーブルデザインが正しい?

drop table football_manager; 
drop table football_player; 
drop table team; 
drop table stadium; 
drop table player; 
drop table manager; 

CREATE TABLE stadium(
stadium_ID NUMBER NOT NULL, 
stadium_Name VARCHAR2(30), 
PRIMARY KEY(stadium_ID)); 

CREATE TABLE team(
team_ID NUMBER NOT NULL, 
stadium_ID NUMBER NOT NULL, 
league VARCHAR2(30), 
league_ID NUMBER(1), 
match_Len NUMBER(3), 
match_Title VARCHAR2(30) NOT NULL, 
year_Released NUMBER NOT NULL, 
PRIMARY KEY(team_ID), 
FOREIGN KEY (stadium_ID) REFERENCES stadium); 

CREATE TABLE manager(
manager_ID NUMBER NOT NULL, 
manager_fname VARCHAR2(30), 
manager_lname VARCHAR2(30), 
PRIMARY KEY(manager_ID)); 

CREATE TABLE player(
player_ID NUMBER NOT NULL, 
player_fname VARCHAR2(15), 
player_lname VARCHAR2(15), 
PRIMARY KEY(player_ID)); 

CREATE TABLE football_player(
team_ID NUMBER NOT NULL, 
player_ID NUMBER NOT NULL, 
PRIMARY KEY(team_ID, player_ID), 
FOREIGN KEY(team_ID) REFERENCES team(team_ID), 
FOREIGN KEY(player_ID) REFERENCES player(player_ID)); 

CREATE TABLE football_manager(
team_ID NUMBER NOT NULL, 
manager_ID NUMBER NOT NULL, 
PRIMARY KEY(team_ID, manager_ID), 
FOREIGN KEY(team_ID) REFERENCES team(team_ID), 
FOREIGN KEY(manager_ID) REFERENCES manager(manager_ID)); 

INSERT INTO stadium (stadium_ID, stadium_Name) VALUES (1, 'Bernabeu'); 
INSERT INTO stadium (stadium_ID, stadium_Name) VALUES (2, 'Old Trafford'); 
INSERT INTO stadium (stadium_ID, stadium_Name) VALUES (3, 'Celtic Park'); 
INSERT INTO stadium (stadium_ID, stadium_Name) VALUES (4, 'Wembley'); 

INSERT INTO team (team_ID, stadium_ID, league, league_ID, match_Len, team_Title, year_Released) VALUES (1, 1, 'BPL', 1, 180, 'Manchester', 2013); 
INSERT INTO team (team_ID, studio_ID, league, league_ID, match_Len, team_Title, year_Released) VALUES (2, 2, 'Eire', 2, 143, 'Bray', 2013); 
INSERT INTO team (team_ID, studio_ID, league, league_ID, match_Len, team_Title, year_Released) VALUES (3, 3, 'Conference', 3, 103, 'Leeds', 2003); 
INSERT INTO team (team_ID, studio_ID, league, league_ID, match_Len, team_Title, year_Released) VALUES (4, 4, 'League 2', 4, 127, 'Swansea', 2009); 

INSERT INTO director (manager_ID, manager_fname, manager_lname) VALUES (1, 'Martin', 'Miles'); 
INSERT INTO director (manager_ID, manager_fname, manager_lname) VALUES (2, 'Gaz', 'Lineker'); 
INSERT INTO director (manager_ID, manager_fname, manager_lname) VALUES (3, 'Miles', 'Teller'); 
INSERT INTO director (manager_ID, manager_fname, manager_lname) VALUES (4, 'Ian', 'Wright'); 

INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (1, 'Mike', 'McDonnagh'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (2, 'John', 'Ryan'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (3, 'Robbie', 'Keane'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (4, 'Ronnie', 'Tunner'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (5, 'Larry', 'Dunne'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (6, 'Tom', 'Maguire'); 
INSERT INTO actor (player_ID, player_fname, player_lname) VALUES (7, 'Joel', 'Ryan'); 
INSERT INTO actor (player_ID, player_lname, player_lname) VALUES (8, 'Kevin', 'Smith'); 
INSERT INTO actor (player_ID, player_lname, player_lname) VALUES (9, 'Andrew', 'Ward'); 
INSERT INTO actor (player_ID, player_lname, player_lname) VALUES (10, 'Gary', 'Hawkins'); 
INSERT INTO actor (player_ID, player_lname, player_lname) VALUES (11, 'Joey', 'Ward'); 
INSERT INTO actor (player_ID, player_lname, player_lname) VALUES (12, 'Matthew', 'Walsh'); 

INSERT INTO team_player (team_ID, player_ID) VALUES (1, 1); 
INSERT INTO team_player (team_ID, player_ID) VALUES (1, 2); 
INSERT INTO team_player (team_ID, player_ID) VALUES (1, 3); 
INSERT INTO team_player (team_ID, player_ID) VALUES (1, 4); 
INSERT INTO team_player (team_ID, player_ID) VALUES (2, 2); 
INSERT INTO team_player (team_ID, player_ID) VALUES (2, 5); 
INSERT INTO team_player (team_ID, player_ID) VALUES (2, 6); 
INSERT INTO team_player (team_ID, player_ID) VALUES (2, 7); 
INSERT INTO team_player (team_ID, player_ID) VALUES (3, 5); 
INSERT INTO team_player (team_ID, player_ID) VALUES (3, 8); 
INSERT INTO team_player (team_ID, player_ID) VALUES (3, 9); 
INSERT INTO team_player (team_ID, player_ID) VALUES (3, 10); 
INSERT INTO team_player (team_ID, player_ID) VALUES (4, 5); 
INSERT INTO team_player (team_ID, player_ID) VALUES (4, 8); 
INSERT INTO team_player (team_ID, player_ID) VALUES (4, 11); 
INSERT INTO team_player (team_ID, player_ID) VALUES (4, 12); 

INSERT INTO team_manager(team_ID, director_ID) VALUES (1,1); 
INSERT INTO team_manager(team_ID, director_ID) VALUES (2,2); 
INSERT INTO team_manager(team_ID, director_ID) VALUES (3,3); 
INSERT INTO team_manager(team_ID, director_ID) VALUES (4,4); 
+0

これがsqlとoracleでタグ付けされている理由がわかりません...データベース設計、リレーショナル・データベースについてもっと質問です.SqlまたはOracleに特に関連するものはありません – mathguy

+1

スキーマにはSYSTEMが表示されます。システムスキーマにテーブルを作成することはお勧めできません。ちょうどユーザーを作成し、そこであなたの仕事をしてください。良い習慣は早い時期に始まります。 – kevinsky

+0

1つのスタジオだけが映画を制作することをどのように知っていますか? 1つの映画関係に多くのスタジオを含める共同製作があるだろうか? – kevinsky

答えて

1

大丈夫よ私はsdmonに同意する - 監督と俳優が同じ属性を持っているので、それはそれらすべてを保つために理にかなっています単一のテーブルに格納し、「ファクト」テーブルでロールを割り当てます。

映画に複数のディレクターが付いていますか?そうでなければ、film_directorテーブルは必要ありません。フィルムテーブルの "director"の列が必要です。それ以外の場合は、film_directorテーブルが必要です。

複数のスタジオに映画を結び付けることはできますか?あなたのモデルでは、フィルムテーブルにstudio_idの列がありますが、film_studioテーブルもあります。あなたは両方を必要としません。フィルムが常に1つのスタジオで作成されている場合は、列は必要です(ただし表は必要ありません)。 1つの映画に複数のスタジオを表示する必要がある場合は、追加のテーブルが必要ですが、列は必要ありません。

他のすべてはうまく見えます。がんばろう!

+0

yeah that studio_idリンク私はちょうど変更を加えたので削除するのを忘れていましたが、私が与えられたデータを処理するかどうかは分かりませんでしたが、おそらく私はおそらくそれを思っていました。 – Poena

関連する問題