Ho un'applicazione che ha bisogno di archiviare i dati dei clienti, e parte di essi sono alcuni dati sul loro datore di lavoro. Supponendo che un cliente possa avere solo un datore di lavoro e che le probabilità che persone abbiano dati identici sul datore di lavoro siano scarse a zero, quale schema avrebbe più senso usare?
Schema 1
Client Table:
-------------------
id int
name varchar(255),
email varchar(255),
address varchar(255),
city varchar(255),
state char(2),
zip varchar(16),
employer_name varchar(255),
employer_phone varchar(255),
employer_address varchar(255),
employer_city varchar(255),
employer_state char(2),
employer_zip varchar(16)
**Schema 2**
Client Table
------------------
id int
name varchar(255),
email varchar(255),
address varchar(255),
city varchar(255),
state char(2),
zip varchar(16),
Employer Table
---------------------
id int
name varchar(255),
phone varchar(255),
address varchar(255),
city varchar(255),
state char(2),
zip varchar(16)
patient_id int
Una parte di me pensa che dal momento che sono chiaramente due diversi "oggetti" nel mondo reale, è opportuno separarli in due diversi tavoli. Tuttavia, dal momento che un cliente avrà sempre un datore di lavoro, non vedo alcun vantaggio reale per separarli, e renderebbe più complessi i dati di query sui clienti. C'è qualche vantaggio / ragione per creare due tabelle in una situazione come questa invece di una?