Come mantenere la relazione dell'utente quando l'utente disfa un altro utente

1

Ho una tabella di relazione utente che memorizza chi segue chi, la struttura della tabella è come segue

-id
-follower
-following

quando qualcuno segue un altro utente, aggiungo un record con id utente follower e id dell'utente che sta seguendo, ora la mia domanda:

Quando l'utente vuole smettere di seguire quell'utente, ho deciso piuttosto che cancellare il record Posso aggiungere un'altra colonna break alla fine di questa tabella, che imposterò a true quando l'utente vuole segui, in questo modo posso mantenere la consistenza nei record, cioè non ci sarà alcun gap come 1,2,4,7,8,9,15 se cancello i record. Se non elimini il record, posso usarlo se quell'utente vorrà seguire nuovamente quell'utente in futuro potrò impostare la colonna di interruzione di quel record su false e la relazione sarà di nuovo disponibile. Cosa pensi; dovrei usare questo approccio o dovrei cancellare il record?

Dimmi se l'approccio è buono o potrebbero esserci problemi associati e dimmi anche se esiste un modo migliore che conosci.

    
posta vikas devde 07.04.2013 - 18:16
fonte

3 risposte

6

In generale i record di segnalazione come inattivi non sono rari e funzionerebbero come lo descrivete, spesso trovate flag come "cancellati" quando c'è una buona ragione per mantenere l'informazione che qualcosa è esistito in qualche momento, per esempio ci sono altri record che si riferiscono al suo id.

Un modo alternativo sarebbe un campo data che è nullo a meno che la cancellazione, nel caso in cui è necessario sapere quando è avvenuta l'eliminazione.

Ma nel tuo caso particolare sembra inutile conservare vecchi documenti. Perché dovresti preoccuparti delle lacune nell'ID? Succede sempre.

    
risposta data 07.04.2013 - 18:30
fonte
1

Cosa stai considerando avendo un campo unfriend (preferisco l'idea che si tratti di una data) che è come un soft delete. Ti permetterebbe di mantenere altre tabelle che si basano sull'ID di questa tabella delle relazioni.

È possibile utilizzare un approccio funzionale in cui viene aggiunto un altro record per la stessa relazione con due utenti, ma un campo che indica che è stato interrotto. In questo modo non aggiorni né cancelli mai un record, continua semplicemente ad aggiungerne di nuovi come un log.

Fai ciò che causa meno problemi per il resto dei tuoi dati, se possibile. Solo tu puoi dire quale avrà prestazioni migliori o creare qualsiasi tipo di problemi di replica.

Non capisco l'intera idea alla base della numerazione della sequenza. Quindi cosa succede se ci sono lacune; non dovrebbe esserci alcuna logica / significato applicato a questo campo oltre all'unicità e potrebbe essere la chiave esterna in un'altra tabella. Affidarsi al numero per qualsiasi altra ragione, causerà problemi.

    
risposta data 08.04.2013 - 03:08
fonte
0

Manterrei le tabelle come sono e ho una tabella log separata (con date). La ragione è che è solo una questione di tempo che vuoi tenere traccia delle catene di eventi Friend-unFriend-FriendAgain

    
risposta data 07.04.2013 - 23:40
fonte