Diseño de base de datos: 3 tipos de usuarios, por separado o en una tabla?

Tengo 3 tipos de usuarios:

  • Administradores de
  • Proveedores
  • Empleados

Cada tipo de usuario tendrá diferentes de la interfaz de usuario y el acceso a diferentes tipos de datos. Su única similitud es que están utilizando una aplicación web, pero tienen acceso a cosas completamente diferentes. Es mejor poner a todos ellos en una tabla de usuario como tbl_users o es mejor crear tbl_admins, tbl_suppliers, tbl_employees?

  • Usted puede ser que desee ver en la Única Mesa de la Herencia, la Tabla de Clase de la Herencia de Hormigón y la Mesa de la Herencia
InformationsquelleAutor IMB | 2011-12-12

5 Kommentare

  1. 63

    Lo que usted necesita para tener en cuenta al diseñar las tablas no es necesariamente lo que tendrá acceso a y la forma en que está similares/diferentes, sino más bien de cómo los niveles de usuario en sí, son similares o diferentes.

    Por ejemplo, si los tipos de usuario tendrá los mismos atributos (nombre, correo electrónico, fecha de nacimiento, etc), a continuación, pertenecen en una mesa junto a una columna que indica su nivel de privilegio.

    Esto también facilita el cambio de niveles de privilegios de un usuario, el cual se puede hacer un trabajador ordinario en un Administrador, por ejemplo, con solo actualizar el registro en la tabla de usuario.

    Si los Proveedores son un tipo diferente de objeto con atributos diferentes a los otros dos, los Proveedores pueden pertenecer en su propia tabla.

    O, una cosa más a tener en cuenta: Se puede usar un users tabla que contiene sólo información muy limitada acerca de los usuarios de los tres tipos, y si los tipos de los atributos extendidos que no se relacionan bien el uno al otro, puede almacenar las de otras tablas con una clave externa en la principal users tabla.

    • Párrafo #2 es la clave: Si los datos que se necesitan para los tres «cosas» es el mismo, a continuación, ponerlos en la misma tabla. Si los datos son diferentes, a continuación, ponerlos en tablas diferentes. El único caso en que esto debe ser complicado es cuando los datos son «la mayoría» de la misma, y usted tiene que hacer juicio de llamadas. Igual, si hay 8 campos de la misma, pero 2 diferentes, ¿quieres tener 2 campos que no son utilizados en algunos casos, o repetir de 8 a través de los campos de dos tablas, o romper el 2 campos en un segundo «add-on» de la tabla?
    • Creo que el último párrafo es la regla de oro aquí. Tiene sentido separar los datos de esta manera a mí. Tenemos 1 usuario tabla con userTypes y, a continuación, si no hay datos específicos de un userType luego compensar el pequeño cambio…no tiene sentido de la base de datos para tener 3 tablas diferentes …cada mesa tendrá un fname y lname campo, al menos, incluso los proveedores.
    • La respuesta perfecta… como yo estaba buscando..stackoverflow.com/questions/35316447/…
    • Buena respuesta como estoy yo mirando cómo diseñar mis propias tablas. Pero hay otro parámetro a tener en cuenta: ¿cómo será su aplicación de evolucionar en el futuro cercano? Se necesita agregar más tipos de usuarios? Si sí, su diseño de base de datos se ajuste a sus necesidades? Para que un punto a tener en cuenta.
  2. 11

    También hay una tercera opción: poner las columnas que todos los usuarios tienen en común en tbl_users, y crear tres tablas para tbl_admins, tbl_suppliers y tbl_employees unirse a tbl_users como 1 a 0..1. Usted debe considerar esta opción como una alternativa cuando el número de columnas compartidas es significativo.

    • Está bien tener uno a uno relación en tbl_user y otro tipo de usuario tabla?
  3. 2

    Depende de la similitud de las estructuras de datos son. Si son similares, entonces tal vez usted podría poner a todos en una tabla. Pero, si tienen un montón de diferentes campos y usted terminará para arriba con un montón de valores NULOS…y, a continuación, lo mejor es que todos están en tablas separadas.

  4. 0

    Mejor para mantener toda su información de inicio de sesión en un solo lugar. Si fueran a hacer un cambio en el proceso de inicio de sesión, con 3 tablas diferentes significaría tener que cambiar el código en 3 lugares diferentes.

    Si un usuario puede pertenecer a más de una función, considere la posibilidad de hacer un UserRoles tabla. De lo contrario, la adición de un campo adicional a la tabla existente – como RoleType – podría ayudar a diferenciar los diferentes tipos de usuarios.

    • a menos que el uso de la programación orientada a objetos, donde los padres de la clase de ofertas con el inicio de sesión, y el niño sólo especifica que la tabla a utilizar, y cualquier columnas adicionales.
  5. 0

    Sólo debe incluir en una tabla y crear un campo de atributo que sería un indicador de si el usuario es Administrador, Proveedor o Empleado.

    Es más fácil si usted centralizar esa manera.

    La preocupación sobre cómo/lo que el acceso sería bajo el software a desarrollar. Usted puede fetch/constriñen la interfaz de usuario[o lo que les de acceso en el sistema de software] basando el tipo de usuario que usted tiene.

    Por lo general basta con ocultar y mostrar las cosas según el tipo de usuario que tengo

    Espero que esto ayude..

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea