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

¿Cómo manejar el almacenamiento masivo de registros en la base de datos para fines de autorización de usuarios?

El hecho es que si desea permisos de nivel de artículo por usuario entonces necesitas una forma de relacionar User s al Article s a los que pueden acceder. Esto requiere un mínimo necesita N*A (donde A es el número de artículos autorizados de forma única).

El enfoque 3NF para esto sería, como sugirió, tener un UsersArticles conjunto ... que sería una mesa muy grande (como notó).

Considere que se accedería mucho a esta tabla... Me parece una de las situaciones en las que un enfoque ligeramente desnormalizado (o incluso no SQL) es más apropiado.

Considere el modelo que usa Twitter para sus tablas de seguidores de usuarios:

Jeff Atwood sobre el tema

Blog de alta escalabilidad

Una muestra de esas piezas es una lección aprendida en Twitter de que consultar a los seguidores de una tabla normalizada ejerce una gran presión sobre un Users mesa. Su solución fue desnormalizar a los seguidores para que los seguidores de un usuario se almacenen en su configuración de usuario individual.

Me imagino que se podría usar un enfoque similar para proporcionar permisos de artículos y evitar un UsersArticles tremendamente estresado. mesa individual.