Domanda

I seguenti enti:residenziale inserzioni, inserzioni commerciali, affitto elenco e segnalate che detiene immobili in vendita per ogni utente.La più logica sembra leva supertype/sottotipo di approccio e di creare tabelle seguenti:

CREATE TABLE listings (
  id ...,
  listPrice ...,
  ...
  PRIMARY KEY (id)
)

CREATE TABLE residential (
  id ...
  ...
  PRIMARY KEY (id),
  FOREIGN KEY id REFERENCES listings(id)
)

CREATE TABLE featuredListings (
  id ..,
  userId ...,
  featuredListingId ...
  PRIMARY KEY (id),
  FOREIGN KEY featuredListingId REFERENCES listings(id)
)

Ma quando cerco di creare residenziale tabella Mysql restituisce l'errore "Errore MySQL Numero 1005.Non è possibile creare la tabella 'residenziale' (errno:150)"

Forse il mio DDL non è corretto.O è anche possibile avere PK che nello stesso tempo è FK in MySQL?Se no, qual è il miglior design per tale scenario?

È stato utile?

Soluzione

A seconda del motore si utilizza MySQL, chiavi esterne non sono supportati.Se si utilizza INNODB sono supportati, anche se non sono sicuro se l'id può essere un FK.Non vedo perché no.

Se si utilizza MYISAM FKs non sono supportati.

C'è anche una possibilità che non riesce perché i nomi delle colonne della chiave esterna non sono all'interno di parentesi.

FOREIGN KEY id REFERENCES listings(id)

diventa

FOREIGN KEY (id) REFERENCES listings(id)

Entrambi hanno questo problema.

Giacobbe

Altri suggerimenti

  • Modificare il nome della chiave esterna nella tabella "residenziale".
  • Assicurarsi che la tabella padre esiste.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top