Come devo fare per creare uno schema db per "abbonamento alle notizie" e collegarlo con "utenti"?

0

Sul mio sito web c'è un nuovo modulo di iscrizione. E gli utenti possono anche registrarsi e iscriversi alle notizie dopo. Quando un utente anonimo si iscrive alle notizie, come dovrei gestirlo meglio? Devo creare a) un utente inattivo per lui b) e un record nella tabella "news_subscritpion"? La tabella "news_subscritpion" è collegata con "utenti" da una chiave esterna da user_id .

O dovrei invece tenere nella tabella "news_subscritpion" solo le e-mail? Quindi non avrò bisogno di creare un utente inattivo per gli utenti iscritti in modo anonimo.

Nessuna delle soluzioni è perfetta in quanto entrambe hanno aspetti negativi.

    
posta Kakki 07.12.2017 - 04:18
fonte

1 risposta

1

Sarei incline a mantenere la relazione di chiave esterna alla tabella utente dalla tabella di sottoscrizione.

La ragione principale di ciò è che se un utente arriva al tuo sito e cambia le sue informazioni sul profilo e include un nuovo indirizzo email, allora si aspetterebbe che il loro abbonamento seguisse il nuovo indirizzo. Puoi sempre tenerne conto aggiornando i loro abbonamenti quando aggiornano la loro posta elettronica, ma quella relazione (dipendenza dall'utente dalla sottoscrizione) verrebbe catturata nel tuo codice solo in quel caso invece che esplicitamente "spiegata" nello schema.

È un po 'brutto che tu abbia un sacco di account utente anonimi ma mi piace la coerenza relazionale ("Gli utenti hanno zero o più abbonamenti") quindi avere l'email è solo una proprietà di abbonamento.

    
risposta data 07.12.2017 - 22:41
fonte

Leggi altre domande sui tag