Nuestra empresa tiene muchas entidades diferentes, pero una buena parte de esas entidades de base de datos son personas. Entonces, tenemos clientes, empleados, clientes potenciales, contratistas y proveedores, y todos ellos tienen ciertos atributos en común, a saber, nombres y números de teléfono de contacto.Para almacenar personas en MySQL (o cualquier base de datos): ¿varias tablas o solo una?
Puede haber ido por la borda con el pensamiento orientado a objetos pero ahora estoy buscando hacer una tabla de "Persona" que contenga todas las personas, con banderas/subtablas "extendiendo" ese modelo y agregando atributos basados en roles al cruce tablas según sea necesario. Si llegamos a decir 250,000 personas (en MySQL e ISAM), ¿esto afectará tanto el rendimiento que futuros DBA me maldecirán para siempre? Nuestra búsqueda más común es en combinaciones de nombre/apellido.
Para, p. Ej. una empresa como Salesforce, ¿son Clientes/Clientes/Empleados, todos en una tabla centralizada con sub-vistas (a falta de un mejor término) o están separados en diferentes tablas?
Advertencia: esta pregunta tiene que ver con "nos pareció mejor hacerlo en el mundo real" en comparación con el diseño teórico. Me gusta la solución anterior, y estoy seguro de que con las vistas, el tamaño adecuado y la indexación precisa, ese rendimiento no sufrirá. También siento que lo anterior no cuenta como MUCK, solo una mesa bastante grande.
Todas las respuestas fueron exactamente lo que estaba buscando, pero has encontrado una cosa en la que no había pensado, ¿qué pasa si no sé dónde está esa persona? El motivo de una tabla principal es precisamente porque tenemos personas en múltiples roles, clientes antiguos que trabajan para nosotros y en roles diferentes. Tiene sentido para centralizar lo que es común. ¡Gracias! –