应该以下sql查询数据规范化工作吗?

时间:2010-09-26 16:50:01

标签: sql mysql normalization

CREATE  TABLE IF NOT EXISTS `mydb`.`MATCHES` ( 
  `idMatch` INT NOT NULL , 
  `idChampionship` INT NOT NULL , 
  `idWinningTeam` INT NOT NULL ,
  `idWLoosingTeam` INT NOT NULL , 
  `date` TIMESTAMP NULL DEFAULT NULL , 
  `goalsWinningTeam` INT NULL DEFAULT -1 ,
  `goalsLoosingTeam` INT NULL DEFAULT -1 , 
  `played` CHAR NULL DEFAULT 'Y' , 
  PRIMARY KEY (`idMatch`) , 
  INDEX `ID_TEAM_X_CHAMP` (`idMatch` ASC) , 
  CONSTRAINT `ID_TEAM_X_CHAMP` 
  FOREIGN KEY (`idChampionship` , `idMatch` ) 
  REFERENCES `mydb`.`TEAMS_PER_CHAMPIONSHIP` (`idChampionship` , `idTeam` ) 
  ON DELETE NO ACTION 
  ON UPDATE NO ACTION) 
  ENGINE = InnoDB;

我正在尝试制作一个匹配表,我不确定如何设置输赢队伍,两者都是由idTeam(我可以为两者使用相同的外键吗?)我有一个Team table a锦标赛 table和teams_per_champsionship表(用于索引)。

架构可用


非常感谢

1 个答案:

答案 0 :(得分:0)

示例架构:

Team Table
----------
TeamID pk
rest of the team information

Championship Table
------------------
ChampID  pk
rest of the championship info

Match Table
-----------
MatchID pk
winningTeamID fk
losingTeamID fk
rest of the match info

ChampMatchTable
---------------
ChampId fk (dups)
MachID fk

OR

您可以将ChampID放入比赛表中,而不是拥有ChampMatchTable。

以下原始答案

是的,你不能为两者使用相同的密钥。它们都是同一张桌子的钥匙,但它们是不同的(因为每个团队都不同。)

不清楚idChamionship的关键点是什么。这是一个描述具有匹配项的事件的表吗?