¿Cómo funciona Google+ en términos de asignar personas a grupos específicos y permitirles ver solo publicaciones particulares?

Lo pensaría así:

4 mesas.

  1. Tabla de usuarios (con información, etc. Por ahora nos importa el campo de identificación).
  2. 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))
  3. Tabla de publicaciones (Nos preocupamos. ID (identificación única de la publicación) y Owner_ID (que es quién publicó la publicación))
  4. 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).

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 🙂

Google+ te permite compartir con círculos específicos y / o individuos, así como públicamente, círculos y círculos extendidos.

Puede crear círculos (grupos) y asignarles personas específicas. Tenga en cuenta que las personas se pueden agregar a varios círculos.

Cuando publicas o compartes algo, puedes compartirlo con uno o más círculos.

En general, el usuario se agrega a una tabla con id de círculo. Puede haber una tabla separada para círculos con identificación y nombres. A medida que crea un nuevo círculo, habrá una entrada en la tabla de círculos. Cuando mueve a un usuario de un círculo a otro, la tabla ‘relación círculo-usuario’ se actualiza en consecuencia.