1
About relationship between tables:
I tried to run the following code and Sqlite returns me the following error:
table "Games" has more than one Primary key
-- -----------------------------------------------------
-- Table `times`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `times` (
  `_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  `nome` VARCHAR(45) NOT NULL,
  `sigla` VARCHAR(3) NOT NULL,
  `imagem` MEDIUMTEXT NUL);
-- -----------------------------------------------------
-- Table `Jogos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Jogos` (
  `_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  `rodada` INT NOT NULL,
  `data_hora` VARCHAR(45) NOT NULL,
  `local` VARCHAR(100) NOT NULL,
  `gols_mandante` VARCHAR(45) NULL,
  `gols_visitante` VARCHAR(45) NULL,
  `id_mandante` INT NOT NULL,
  `id_visitante` INT NOT NULL,
  PRIMARY KEY (`_id`, `id_mandante`, `id_visitante`),
  CONSTRAINT `fk_Jogos_times1`
    FOREIGN KEY (`id_mandante`)
    REFERENCES `times` (`_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Jogos_times2`
    FOREIGN KEY (`id_visitante`)
    REFERENCES `times` (`_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
;
CREATE INDEX `fk_Jogos_times1_idx` on `Jogos` (`id_mandante` ASC);
CREATE INDEX `fk_Jogos_times2_idx` on `Jogos` (`id_visitante` ASC);
It seems that the error arises when I try to add foreign keys from the table times on the table jogos.
Thank you Jorge, but I cannot delete the pk _id because this is the primary key of the games table. It wouldn’t be deleting "id_mandante" and "id_visitante" so: PRIMARY KEY (
_id)– caezar
And if that’s the case, I wouldn’t lose relational integrity?
– caezar
No, you maintain relational integrity. Tables do not need to have Primary key id, it can be another field or a multiple primary key as you have
– Jorge B.