Progettazione database: molti piccoli tavoli o meno tavoli più grandi?

2

Quindi sto progettando un database per un progetto che consentirà alle aziende di bellezza di creare un profilo, ai clienti di creare un profilo e ai clienti di poter prenotare appuntamenti e alle imprese di gestire gli appuntamenti e i loro clienti .

Ho le seguenti tabelle e campi finora (ho mantenuto il più semplice possibile qui, ma c'è di più sulle tabelle su carta):

BUSINESS_TABLE
id (PK)
name
address
contact
about
website

TREATMENT_TABLE
id (PK)
name
description
duration
price

CLIENT_TABLE
id (PK)
name
address
contact
about
current_medical
medical_history
notes

EMPLOYEE_TABLE
id (PK)
name
address
business_id (FK)
business_name (JOIN)
availability_days
availability_hours

APPOINTMENT_TABLE
id (PK)
client_id (FK)
client_name (JOIN)
business_id (FK)
business_name (JOIN)
employee_id (FK)
employee_name (JOIN)
treatment_id (FK)
treatment_name (JOIN)
treatment_duration (JOIN)
treatment_price (JOIN)
appointment_day
appointment_time

Quindi penso di averlo normalizzato correttamente:

Le aziende possono avere molti clienti, appuntamenti, trattamenti e dipendenti I clienti possono avere molti appuntamenti I trattamenti non hanno nulla I dipendenti non sono collegati al business per mantenere le cose semplici per ora Gli appuntamenti prendono trattamenti, aziende, dipendenti e clienti

Quindi APPOINTMENT_TABLE è la tabella di collegamento e tutto il resto in esso.

Oltre a verificare se la mia logica è corretta, chiedevo anche se dovevo suddividere il CLIENT_TABLE in tabelle più piccole, poiché ci sono 11 campi nella categoria current_medical e 20 nella categoria medical_history ed entrambi può essere aggiunto in qualsiasi momento. Penso che varrebbe la pena mettere questi due in tabelle separate e unirli a CLIENT_TABLE per l'organizzazione ed essere in grado di modificarli più facilmente (anche se un po 'più complesso nella programmazione).

Sarei grato di sentire qualsiasi opinione.

Grazie,

Michelle

    
posta Michelle-A 17.01.2016 - 12:52
fonte

2 risposte

4

I nomi dei tuoi tavoli dovrebbero essere BUSINESS, TRATTAMENTI, CLIENTI, DIPENDENTI, APPUNTAMENTI. Nessuno aggiunge "_TABLE" ai loro nomi di tabella, così come nessuno aggiunge "_Word_Document" ai loro nomi di documento di parole.

Inoltre, di solito non includiamo i campi uniti nei disegni delle tabelle. Il fatto che questi campi siano disponibili è evidente dalla presenza della chiave esterna.

Oltre a questo, il tuo design sembra perfetto. Consiglierei di dividere i campi di qualsiasi tabella. Se si verifica un problema di prestazioni, esaminare il partizionamento. Se si verificano altri problemi di modifica della tabella, il problema potrebbe riguardare il modo in cui si intende gestirlo (il che fa sì che pensi che la tabella debba essere divisa) e non nella struttura del tabella stessa.

    
risposta data 17.01.2016 - 14:15
fonte
2

Non dovresti dividere una tabella normalizzata solo perché ha "molti" campi. Non renderà tutto più facile.

    
risposta data 17.01.2016 - 13:03
fonte

Leggi altre domande sui tag