Должна ли работать следующая нормализация данных SQL-запроса? - PullRequest
1 голос
/ 26 сентября 2010
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 (могу ли я использовать один и тот же внешний ключ для обоих?) У меня есть командаtable a Championship
таблица и таблицы groups_per_champsionship (для индексации).

доступна схема


Большое спасибо

1 Ответ

0 голосов
/ 26 сентября 2010

Пример схемы:

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

ИЛИ

Вы можете поместить ChampID в таблицу совпадений и не иметь ChampMatchTable.

оригинальный ответ ниже

Да, вы не можете использовать один и тот же ключ для обоих.Оба они являются ключами к одной и той же таблице, но они разные (поскольку каждая команда отличается.)

Не ясно, на что указывает ключ idChamionship.Это таблица, которая описывает событие, которое имеет совпадения?

...