Esquema de base de datos para archivos/carpetas compartidas para usuarios/grupos.
Me gustaría crear un sistema simple para que los usuarios compartan documentos con otros usuarios O grupos.
Actualmente tengo tres modelos:
- Usuario (información general del usuario)
- Documento (tiene una carpeta principal)
- Carpeta (solo un nombre)
Los principios son:
- Las carpetas son solo de un nivel y contienen documentos. No se permite jerarquía.
- Un usuario puede compartir una carpeta O un archivo con un usuario O un grupo.
- Para que un usuario acceda a un documento, el documento O su carpeta principal deben ser compartidos con él, o con un grupo al que pertenezca.
Estas últimas condiciones hacen que sea muy difícil pensar en la estructura de la tabla. Agradecería mucho cualquier ayuda con esto.
davy.ai
Para crear un sistema para que los usuarios compartan documentos con otros usuarios o grupos, necesitarás una base de datos con varias tablas. Aquí tienes un ejemplo de una posible estructura de tabla:
Usuario
Grupo
Documento
Carpeta
Documento_Compartido
Carpeta_Compartida
La tabla de Usuario contiene información general del usuario, incluyendo nombres de usuario y contraseñas. La tabla de Grupo se utiliza para almacenar información sobre los grupos de usuarios. Las tablas de Documento y Carpeta almacenan información de documentos y carpetas, respectivamente. Las tablas de Documento_Compartido y Carpeta_Compartida se utilizan para hacer un seguimiento de qué documentos y carpetas se han compartido con quién.
Para compartir un documento o carpeta con un usuario o grupo, crearías un nuevo registro en la tabla Documento_Compartido o Carpeta_Compartida. Este registro incluiría el ID del documento o carpeta que se está compartiendo, así como el ID del usuario o grupo con el que se está compartiendo el documento/carpeta.
Para verificar si un usuario tiene acceso a un documento o carpeta en particular, simplemente verificarías la tabla Documento_Compartido o Carpeta_Compartida en busca de registros que coincidan con el ID del documento/carpeta y el ID del usuario o grupo en cuestión.
En general, esta estructura de tablas debería permitirte crear un sistema simple pero efectivo para compartir documentos con otros usuarios o grupos.