Lo pensaría así:
4 mesas.
- Tabla de usuarios (con información, etc. Por ahora nos importa el campo de identificación).
- Tabla de círculo (igual, nos preocupamos por: ID (identificación única del círculo) y User_ID (que es quién creó el círculo))
- Tabla de publicaciones (Nos preocupamos. ID (identificación única de la publicación) y Owner_ID (que es quién publicó la publicación))
- Tabla Post_share
Esto podría mejorarse al no usar una ID única como círculo y publicación, ya que podemos usar la ID de usuario para identificar a qué usuario están asignados (mejorará mucho, ya que los ints no son tanto en un gran servicio).
- ¿Cuál es el último chipset de la placa base Intel para el socket 1150?
- ¿Cuál es la forma más fácil de construir y alojar un sitio web para un novato?
- Cómo hacer un sitio de redes sociales sin saber mucha codificación
- ¿Qué tan fácil es mantener una gran base de código React.js?
- ¿Cuáles son algunas herramientas imprescindibles para crear contenido interactivo?
Pero imaginemos que todo es único:
La tabla post_share podría usarse para mantener la relación “muchos a muchos”
Dado que una publicación se puede compartir con muchos círculos, lo mismo para un círculo que tiene muchas publicaciones.
Esta tabla contiene solo dos campos: Post_ID y Circle_ID que se utiliza para saber qué publicación se ha compartido con qué círculo.
Entonces ejemplo si tenemos:
Publicaciones: A, B, C
Círculo: 1, 2, 3.
Si la publicación A se comparte con: 1 y 2
La publicación B se comparte con: 2
Y la publicación C se comparte con 1, 2, 3
La tabla debería hacer algo como esto:
y en su base de datos SQL será como:
| —————————————————————- |
El | Post_ID | Circle_ID |
| —————————————————————- |
El | A | 1 |
El | A | 2 |
El | B | 2 |
El | C | 1 |
El | C | 2 |
El | C | 3 |
| —————————————————————- |
Luego puede seleccionar todos los círculos que pueden ver la publicación C con una consulta (idem para A, B).
Puede usar otra consulta para ver qué publicaciones puede ver el círculo 2.
Entonces debes saber en qué círculo se encuentra el usuario que solicita esta publicación.
Podría ser una forma de hacerlo 🙂