Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Blast06 en 16 Agosto 2016, 02:09



Título: Duda sobre esta base de datos
Publicado por: Blast06 en 16 Agosto 2016, 02:09
Saludos

Estoy realizando una base de datos para una app de música en la que el usuario pueda subir música,crear listas, seguir listas,seguir usuarios y demás(si, si, como spotify).

El asunto es que en el diagrama, me pregunto, como representaría la parte en la que un usuario puede seguir uno o varios usuarios, y este mismo puede tener uno o varios seguidores.

El problema lo planteé así(obviamente está sujeto a cambios):

se desea crear una app de música en la que un usuario se registra, y que este usuario pueda escuchar música ya alojada en la app o que pueda subirla, El usuario al momento de registrarse tendrá que especificar(o elegir) campos como el genero(o los géneros) que desea escuchar,tipo de suscripción, etc.
El usuario tendrá la posibilidad de crear listas, seguir a otros usuarios, asi como tener también el mismo seguidores, y también podrá seguir listas recomendadas por la aplicación o listas publicas de otros usuarios. Cada música subida a la app tendrá un genero, nombre y duración, las canciones podrán pertenecer a una lista o varias listas o ninguna si no se han agregado.

*Un usuario podrá seguir a muchos usuarios, y este podrá ser seguido por muchos a la vez
*Un usuario podrá crear listas, esas listas si son publicas podrán ser seguidas por usuarios




Aquí el diseño en oracle:

(https://k60.kn3.net/F/7/3/7/C/E/217.png)

El diagrama Entidad relación:

(https://k61.kn3.net/B/D/0/2/D/F/7F8.png)



PD:
No piensen que esto es tarea o algo así, solo que en serio, quisiera saber sobre la duda, si un usuario puede seguir a varios usuarios(que vienen siendo los mismos usuarios de la tabla usuario) y estos también pueden seguir y tener seguidores, a nivel de base de datos, estaría bien como lo tengo? o como lo representarían uds?



Título: Re: Duda sobre esta base de datos
Publicado por: [u]nsigned en 24 Agosto 2016, 18:41
Podrías crear una tabla nueva para guardar las relaciones entre usuarios, por ejemplo llamarla "users_follows" con los campos:
-id:id de registro (auto_increment)
-id del usuario (seguidor)
-id del usuario al que sigue (seguido)
-fecha de creación (opcional)

Entonces cuando un usuario 'empieza a seguir' a otro, solo debes agregar el registro a esta tabla, y cuando deja de seguir borrar el registro, o marcarlo como inactivo (tendrías que agregar otro campo a la tabla.)

También es mas simple cuando queres recuperar todos los usuarios a los que sigue el user 'X' y los que lo siguen a este.

Por cosas como esta, yo me he pasado a MongoDB xD