Domanda logica RDBMS (MySQL). Come unire più "AMICI"

0

quindi questa è una domanda logica per creare le relazioni appropriate in un database MySQL.

Quale logica sceglieresti per il seguente scenario?

Questo è un back-end per un'app in cui le persone possono avere amici con cui possono interagire, o "Aggiungi" se si desidera accedere alla propria "Rete" per mancanza di termini migliori.

Quindi, ad esempio, dovrei avere una tabella "MyFriends" in cui, ad esempio, la colonna "MyFriend.ID" è identica forse a "User.ID" della persona che ha avviato la connessione? E hai una colonna successiva chiamata "Amici" dove è inserito "User.ID" di tutti quelli che hai "aggiunto" alla tua "Rete"?

O hai suggerimenti alternativi per creare le relazioni necessarie per gli "Amici" da connettere all'interno di ciascuna "Rete"?

    
posta fizzy drink 26.10.2014 - 21:41
fonte

1 risposta

4

Avrei una tabella per gli utenti e una seconda tabella per le relazioni.

La tabella Relazioni avrebbe 2 chiavi esterne, entrambe che puntano ai record nella tabella Utente.

Ecco un diagramma approssimativo:

+------------------+         +------------------------+
| User             |         | Relationship           |
|------------------|         |------------------------|
| UserPK  (int)    |         | RelationshipPK (int)   |
| ...              |<--------+ User1FK        (int)   |
|                  |<--------+ User2FK        (int)   |
|                  |         |                        |
|                  |         |                        |
|                  |         |                        |
|                  |         |                        |
+------------------+         +------------------------+

La tabella delle relazioni è tecnicamente la tabella centrale in una relazione molte a molte.

Ecco un esempio. Nota che il diagramma mostra 2 record dalla tabella USER :

+------------------+         +------------------------+      +------------------+
| User             |         | Relationship           |      | User             |
|------------------|         |------------------------|      |------------------|
| UserPK:     1    |         | RelationshipPK   100   |      | UserPK:     2    |
| Name:   ALICE    |<--------+ User1FK            1   |      | Name:     BOB    |
|                  |         | User2FK            2   +----->|                  |
|                  |         |                        |      |                  |
|                  |         |                        |      |                  |
|                  |         |                        |      |                  |
|                  |         |                        |      |                  |
+------------------+         +------------------------+      +------------------+

Abbiamo 3 record nel database: un record USER per Alice, un record USER per Bob e un record RELATIONSHIP che mostra che Alice e Bob si conoscono.

Probabilmente vorrai aggiungere campi aggiuntivi a queste tabelle. Ad esempio, la relazione "amici", "collaboratori", "famiglia", ecc.

Se Alice è amica di Bob e Bob è un amico di Alice (cioè una relazione simmetrica), potrebbe essere più semplice avere solo due record nella tabella delle relazioni (User1FK: Alice, User2FK: Bob e User1FK: Bob , User2FK: Alice). Ciò renderebbe alcune query più facili.

    
risposta data 26.10.2014 - 22:27
fonte

Leggi altre domande sui tag