Mi spiace, forse è un principio di design ben noto, ma poiché non conosco un nome per questo tipo di relazione, non sono stato in grado di trovare alcuna risposta esistente.
Quindi, diciamo che abbiamo un genitore che può avere molti figli, ma solo un figlio può avere qualche proprietà attiva (o impostata). Pensa a proprietà come "selezionato", "corrente", "attivo", "predefinito", ecc. Quindi, la mia domanda è dove memorizzare questo flag?
La variante 1 è di memorizzarla come proprietà figlio, come questa:
+---------+----------+--------------+-------------+
| ChildId | ParentId | SomeProperty | _IsCurrent_ |
+---------+----------+--------------+-------------+
| 1 | 1 | A | False |
| 2 | 1 | B | True |
| 3 | 1 | C | False |
| 4 | 2 | A | True |
+---------+----------+--------------+-------------+
La variante 2 è di memorizzarla come proprietà genitore:
+----+--------------+------------------+
| Id | SomeProperty | _CurrentChildId_ |
+----+--------------+------------------+
| 1 | A | 2 |
| 2 | B | 4 |
+----+--------------+------------------+
E la variante 3 è di memorizzarlo in entrambe le tabelle.
Quindi quale variante è quella giusta? Ho sempre usato la variante 1, ma ora penso che forse questa è una cattiva pratica perché puoi finire con 2 articoli correnti, ecc. E qual è il nome corretto per questo tipo di proprietà?
P.S. Penso che non sia rilevante, ma nel caso, sto usando SQL Server.
P.S. 2. Ho trovato una domanda simile qui , che hanno 2 risposte, ma nessuna è accettata e suggeriscono cose opposte. Quindi se nessuno risponderà a questa domanda, probabilmente lo eliminerò presto. Oppure i moderatori possono sentirsi liberi di cancellare questa domanda in qualsiasi momento, se lo desiderano.