sql >> Base de Datos >  >> RDS >> Mysql

Diseño de bases de datos relacionales múltiples tipos de usuarios

Su caso parece una instancia de clase/subclase.

Hay dos formas clásicas de diseñar tablas SQL para tratar con subclases. Cada uno tiene ventajas y desventajas.

Una forma se llama "herencia de tabla única". En este diseño solo hay una mesa para todo tipo de usuarios. Si una columna dada no pertenece a una fila dada, la intersección se deja NULL. Se puede agregar una columna para indicar el tipo de usuario.

Otra forma se llama "Herencia de tabla de clase". Esto es muy parecido a la respuesta que dio Nanego, con algunos cambios menores. Hay una tabla para usuarios, con todos los datos comunes y un campo de identificación. Hay una tabla para cada subclase, con datos que pertenecen a esa subclase. El campo de identificación a menudo se configura como una copia del campo de identificación en la fila correspondiente en la tabla de usuarios. De esta manera, la clave de subclase puede cumplir una doble función, actuando como clave principal y como clave externa que hace referencia a la tabla de usuarios. Esta última técnica se denomina "Clave primaria compartida". Requiere un poco de programación en el momento de la inserción, pero vale la pena. Refuerza la naturaleza uno a uno de la relación y acelera las uniones necesarias.

Puede buscar estos tres diseños como etiquetas en SO o como artículos en la web.