-3

次の設計が与えられた場合:

Player
===========
PlayerID
TeamID
FirstName
LastName
DateOfBirth

Team
===========
TeamID
TeamName
Grade

Match
===========
MatchID
HomeTeamID
AwayTeamID
Date
Result

私はこれを使用しています:

 CREATE TABLE Match(
   MatchID VARCHAR2(5) NOT NULL,
   Dateofmatch date,
   Result VARCHAR2(1) ,
   HomeTeam VARCHAR2(5),
   AwayTeam VARCHAR2(5),
   CONSTRAINT MatchPK PRIMARY KEY(MatchID),
   CONSTRAINT HomeFK FOREIGN KEY(HomeTeamIDFK) REFERENCES TEAM(TeamID),
   CONSTRAINT AwayFK FOREIGN KEY(AwayTeamIDFK) REFERENCES TEAM(TeamID),
   CONSTRAINT Result
   Check (Result in (‘W’,’L’,’D’)
   );

Match ID、Player ID、および teamID 列が data type であると仮定して、Match テーブルを作成しますVARCHAR2(5)。試合の結果はホームチームを参照し、勝敗または勝敗のみが可能です。

これは正しいです?


私はこの親切に私を修正して出てきました

CREATE TABLE Match (
    MatchID VARCHAR2(5) NOT NULL,
    Dateofmatch date,
    Result VARCHAR2(1) ,
    HomeTeam VARCHAR2(5),
    AwayTeam VARCHAR2(5),
    CONSTRAINT MatchPK PRIMARY KEY(MatchID),
    CONSTRAINT HomeFK FOREIGN KEY(HomeTeamIDFK) REFERENCES TEAM(TeamID),
    CONSTRAINT AwayFK FOREIGN KEY(AwayTeamIDFK) REFERENCES TEAM(TeamID),
    CONSTRAINT Result Check (Result in (‘W’,’L’,’D’)
);
4

1 に答える 1

1

私はもっ​​と次のようなものを目指します:

CREATE TABLE match
   ( match_id INTEGER, 
     date_of_match  DATE, 
     result_type  char(1), 
     home_team_id INTEGER, 
     away_team_id INTEGER,
     CONSTRAINT match_pk PRIMARY KEY(match_id),
     CONSTRAINT home_fk FOREIGN KEY(home_team_id_fk) REFERENCES TEAM(team_id),
     CONSTRAINT away_fk FOREIGN KEY(away_team_id_fk) REFERENCES TEAM(team_id)
     CONSTRAINT result_type CHECK (result_type in (‘W’,’L’,’D’)
  )

fk のデータ型は varchar2(5) であるはずですが、それらを変更するか、これらのテーブルが整数であるか追加された真の主キーであることを確認することをお勧めします。それは正しいことです(ただし、意見は異なります)。

于 2012-09-29T12:53:02.993 に答える