Mysql
 sql >> Database >  >> RDS >> Mysql

Due tabelle con le stesse colonne o una tabella con una colonna aggiuntiva?

Dipende dai vincoli:

  • Hai chiavi esterne o CHECK su apples che non esistono su oranges (o viceversa)?
  • Devi mantenere le chiavi univoche in entrambe le tabelle (quindi niente apple può avere lo stesso ID di alcuni orange )?

Se le risposte a queste due domande sono:"sì" e "no" , mantieni le tabelle separate (in modo che i vincoli possano essere specificati per la tabella).

Se le risposte sono:"no" e "sì" , uniscili insieme (in modo da poter creare una chiave che si estende su entrambi).

Se le risposte sono:"sì" e "sì" , considera l'emulazione dell'ereditarietà:

Cerca dati è un tipico esempio di tabelle che sembrano simili, ma devono essere tenute separate in modo che gli FK possano essere tenuti separati.

In particolare, questa è la strategia "tutte le classi in tabelle separate" per rappresentare l'ereditarietà (ovvero categoria, sottoclassi, sottotipi, gerarchia di generalizzazione ecc.). Potresti dare un'occhiata a questo post per maggiori informazioni.