Una chiave esterna che fa riferimento a una chiave primaria richiede il vincolo NOT NULL in un database PostgreSQL?
Il database è altamente normalizzato e sarà molto grande. Non desidero aggiungere ulteriori vincoli che rallenteranno ulteriormente le query se tali query non sono necessarie.Una chiave esterna che fa riferimento a PK richiede il vincolo NOT NULL?
risposta
Se si desidera essere in grado di rappresentare lo sconosciuto nella colonna FK di quella tabella, quindi renderlo nullable, se deve avere un valore, renderlo Not Null.
È possibile avere quanti record si desidera nella tabella di riferimento con valori FK null. Il vincolo univoco si trova sulle righe della tabella di riferimento (dove si trova il PK) non sulle righe nella tabella di riferimento (dove FK è).
Questo è corretto. Per dirla in altro modo, dipende dal fatto che stai modellando una relazione 1: N o una relazione 0..1: N. cioè la relazione è facoltativa? –
rapporto 1: 1. Il tavolo su cui sto lavorando è un tavolo da bridge. – WolfmanDragon
Se è 1: N, allora la colonna FK DOVREBBE avere il vincolo Not Null su di esso. –
Una chiave primaria deve essere univoca e idealmente dovrebbe essere selezionata dal database, per limitare i problemi con la concorrenza, quindi, sebbene possa essere univoca, per 1 record, ogni altro record deve avere un valore.
Altrimenti, come saprai a quale riga si riferisce questa chiave esterna se c'è più di una corrispondenza?
Quindi, come New in town menzionato, NULL dovrebbe essere valido, ma per un record, poiché l'unicità sarà il problema più grande.
MODIFICA: oops, ho capito male la domanda.
Ho messo nullo su chiavi esterne prima, ma se si dispone di eliminazione a cascata, ad esempio, null non funzionerà, a meno che non si abbia la chiave nella tabella primaria con un valore nullo.
OP chiedeva il vincolo "non nullo" sul tasto _FOREIGN_ – ChssPly76
- 1. mysql aggiungi un vincolo di chiave esterna che fa riferimento a una vista
- 2. chiave esterna che fa riferimento una vista in Oracle
- 3. Perché creare un vincolo di chiave esterna che fa riferimento alla chiave primaria della stessa tabella dal campo chiave primaria
- 4. chiave esterna che fa riferimento una chiave primaria 2 colonne in SQL Server
- 5. Chiave primaria composta, chiave esterna. Riferimento a oggetto o chiave?
- 6. Vincolo chiave esterna MySQL - Colonna intero
- 7. differenze tra "chiave esterna" e "chiave esterna vincolo"
- 8. Violazione del vincolo univoco Oracle che fa riferimento a un vincolo che non sembra esistere
- 9. JDBC: chiave esterna sulla PK creato stessa transazione
- 10. vincolo di chiave esterna SailsJS
- 11. la chiave esterna fa sempre riferimento a una chiave univoca in un'altra tabella?
- 12. JDBC ottiene la relazione + attributo a cui fa riferimento una chiave esterna
- 13. Disabilita il vincolo di chiave esterna su una tabella?
- 14. Perché il "vincolo di chiave esterna non riesce" quando la chiave esterna esiste?
- 15. MySQL: cancella una riga ignorando il vincolo di chiave esterna
- 16. Laravel Eloquent troncato - Vincolo chiave esterna
- 17. script fsx che fa riferimento a una dll che fa riferimento a molte dll
- 18. Una chiave esterna può fare riferimento a più tabelle?
- 19. Come si dispone di un vincolo di controllo che fa riferimento a un'altra tabella?
- 20. Vincolo di chiave esterna a due vie in una relazione 1: 1
- 21. Elimina chiave esterna senza conoscere il nome del vincolo?
- 22. SQL Tabella chiave esterna che fa parte di una chiave primaria composita
- 23. Un vincolo che consente solo a una delle due tabelle di fare riferimento a una tabella di base
- 24. SQLAlchemy: non applicare il vincolo di chiave esterna a una relazione
- 25. Chiave esterna a una delle tante tabelle?
- 26. Alter table per fornire il vincolo di chiave esterna
- 27. Assegnazione di ID utente a chiave esterna = null
- 28. Elixir Ecto: come convalidare il vincolo di chiave esterna?
- 29. Aggiunta di una chiave esterna nullable.
- 30. Come rimuovere il vincolo di chiave esterna in sql server?
Nella tua applicazione la velocità è davvero più importante della correttezza? Non ti renderai conto dei costi per un assegno non nullo. La risposta alla tua domanda è no, ma vorrei specificare qualsiasi vincolo noto da tenere. –