Abbiamo una tabella degli account in un DB Postgres che ha un indice univoco su user_id
e product
. Gli utenti possono avere molti account, non c'è una tabella di prodotti. Occasionalmente gli utenti creeranno un account accidentalmente e dovremo aggiungere quell'account al loro record User
originale, dopo aver raccolto alcune informazioni su di esso che non possiamo semplicemente lanciare.
A causa dell'indice univoco su product
e user_id
, dobbiamo eseguire qualche serio collegamento / scollegamento sul record Account
e registrare i dati da un record account in un campo JSONB sull'altro record prima di connetterti fino al corretto record User
.
Abbiamo una colonna deleted_at
nella tabella Account che viene utilizzata moderatamente e ho proposto di aggiungerla all'indice (user_id, product_id)
. In questo modo, qualsiasi record che ha NULL
deleted_at
per un dato user_id, product_id
è l'account "attivo" e gli account possono essere contrassegnati come deprecati / inattivi semplicemente impostando un deleted_at
.
Ciò richiederebbe alcune riscritture nelle nostre ricerche, ma non sarebbero necessariamente estese, perché il nostro ORM fornisce una funzionalità di ambito che possiamo applicare a tutte le query.
Ho ottenuto un respingimento sull'idea, ma nulla ha riguardato l'impatto sulle prestazioni o gli inconvenienti tecnici, solo affermazioni sulla falsariga di "Le persone lo fanno davvero?" o "Non l'ho mai visto prima". Giuro che ho visto le aziende farlo, ma sarebbe difficile fornire prove.
Qualcuno può fornire una critica alle prestazioni o ai modelli di questo approccio? Qualcuno ha visto questo tipo di approccio? Se no, hai mai risolto questo tipo di problema?