La nostra azienda ha molte entità diverse, ma una buona parte di queste entità di database sono le persone. Quindi abbiamo clienti, dipendenti e potenziali clienti, appaltatori e fornitori e tutti hanno determinati attributi in comune, ovvero nomi e numeri di telefono di contatto.Per l'archiviazione di persone in MySQL (o qualsiasi DB) - più tabelle o solo una?
Forse sono andato fuori bordo con il pensiero orientato agli oggetti, ma ora sto cercando di creare una tabella "Persona" che contenga tutte le persone, con i flag/sottotitoli che "estendono" quel modello e aggiungono gli attributi basati sui ruoli alla giunzione tavoli se necessario. Se cresciamo a dire che 250.000 persone (su MySQL e ISAM) avranno un impatto così grande sulle prestazioni che i futuri DBA mi malediranno per sempre? La nostra singola ricerca più comune è sulle combinazioni nome/cognome.
Per, ad es. un'azienda come Salesforce, sono clienti/lead/dipendenti tutti in una tabella centralizzata con sotto-viste (per mancanza di un termine migliore) o sono separati in tabelle diverse?
Avvertenza: questa domanda ha a che fare con "è stato meglio farlo nel mondo reale" in contrasto con il progetto teorico. Mi piace la soluzione di cui sopra, e sono fiducioso che con le visualizzazioni, il corretto dimensionamento e l'indicizzazione accurata, le prestazioni non ne risentiranno. Sento anche che quanto sopra non conta come un MUCK, solo un tavolo piuttosto grande.
Tutte le risposte erano esattamente ciò che stavo cercando, ma hai inchiodato l'unica cosa a cui non avevo pensato - e se non sapessi dov'è quella persona. Il motivo per la tabella principale è proprio perché abbiamo persone con ruoli multipli, vecchi clienti che lavorano per noi e in ruoli diversi. Ha senso centralizzare ciò che è comune. Grazie! –