risposta

4

vorrei togliere il coulmn Bonus.Id e rendere Bonus. Cliente il PK. In questo modo si elimina la necessità di avere un vincolo univoco nella colonna Bonus.CustomerId, poiché ora sarà un PK. Chiunque guardi il tavolo vedrà l'uno-a-uno in modo più chiaro senza il bonus. Non avrai bisogno di un indice su Bonus.CustomerId, l'indice PK sarà tutto ciò di cui hai bisogno, quindi meno spazio su disco e cache di memoria sprecate. Inoltre, se hai bisogno di un FK per il tavolo Bonus, devi utilizzare il valore CustomerId (il nuovo PK), che può essere utilizzato per tornare ai tavoli Cliente o Bonus, non solo Bonus.

+0

Grazie per il feedback, di solito aggiungo una colonna id a tutti i tavoli che creo e non ci penso troppo, ma ho iniziato a discuterne con un mio collega che mi ha suggerito di lasciarlo. Volevo avere più opinioni sulla questione prima di farlo. – Vlad

0

se è ono-one, perché c'è qualche tabella in più? potresti invece mettere "bonusvalue" nella tua tabella clienti.

(altra cosa: sì, è possibile eliminare l'id del bonus-tavolo, il cliente-ID è la chiave primaria e "id" è completamente ridondante)

+0

una relazione uno-a-uno è buona quando la maggior parte delle righe della tabella principale non ha bisogno di una riga nella seconda tabella. Ad esempio, hai una tabella "Persona" principale e quindi una tabella "DoctorInfo" one-to-one e un altro "StudentInfo" uno-a-uno, ecc. Non vorresti includere tutte le colonne DoctorInfo o StudentInfo di persona"? non io, li ho divisi in tavoli one-to-one. –

+0

Si dividono anche le tabelle in un uno-a-uno quando la lunghezza della riga della tabella è troppo grande per un accesso efficiente. O se i dati verranno interrogati solo di rado e la tabella principale verrà frequentemente interrogata. O di voi volete limitare la visibilità dei dati. – HLGEM

+0

È ridondante, ma non sono d'accordo con mettere tutto in una tabella, per quanto riguarda l'indirizzo, anche se è uno a uno. Mi piace fare i miei tavoli come faccio i miei oggetti, ho bisogno di avere solo. Come molte classi/tabelle di cui ho bisogno. – Vlad

1

Suppongo che in realtà non sia un vero one-to-one perché si potrebbe presumibilmente avere un cliente senza una riga di bonus. I vincoli di chiave esterna in stile SQL sono sempre facoltativi sul lato di riferimento di qualsiasi relazione.

Accetto la colonna Bonus.Id sembra completamente ridondante.

+0

Hai ragione, non tutti i clienti hanno un bonus. – Vlad