我需要设计一个没有重复组的表格,我想我已经这样做了,但表格看起来是否正确,它们是如何链接的,或者有什么我可以改进的?我跑了所有的查询,我有几个重复的球队经理&经理,因为我把他们都在一个小队表中,所以我把他们分成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);
不知道为什么这是用sql和oracle标记的......它更多的是关于数据库设计,关系数据库的问题......没有什么特别与SQL或oracle有关 – mathguy
您的模式显示SYSTEM。在系统模式中创建表不是一个好主意。只需创建一个用户并在那里完成您的工作。良好的习惯开始早。 – kevinsky
你怎么知道只有一个工作室会拍电影?是否会有合作作品暗示许多电影公司与一个电影关系? – kevinsky