Σύντομη απάντηση: Ναι, μπορεί να είναι NULL ή διπλότυπο Θέλω να εξηγήσω γιατί ένα ξένο κλειδί μπορεί να πρέπει να είναι μηδενικό ή μπορεί να χρειάζεται να είναι μοναδικό ή όχι μοναδικό. Πρώτα να θυμάστε ότι ένα ξένο κλειδί απαιτεί απλώς ότι η τιμή σε αυτό το πεδίο πρέπει να υπάρχει πρώτα σε έναν διαφορετικό πίνακα (τον γονικό πίνακα). Αυτό είναι το μόνο που είναι ένα FK εξ ορισμού.
Είναι το ξένο κλειδί αποδεκτή μηδενική τιμή;
Στο ξένο κλειδί μπορεί να εκχωρηθεί ένα όνομα περιορισμού. … Ένα ξένο κλειδί που περιέχει μηδενικές τιμές δεν μπορεί να ταιριάζει με τις τιμές ενός γονικού κλειδιού, αφού ένα γονικό κλειδί εξ ορισμού δεν μπορεί να έχει μηδενικές τιμές. Ωστόσο, μια μηδενική τιμή ξένου κλειδιού είναι πάντα έγκυρη, ανεξάρτητα από την τιμή οποιουδήποτε από τα μη μηδενικά μέρη του.
Γιατί επιτρέπονται μηδενικές τιμές στο ξένο κλειδί;
Ορισμός σχέσεων μεταξύ των πινάκων γονέα και παιδιού
Χωρίς περιορισμούς στο ξένο κλειδί Όταν δεν ορίζονται άλλοι περιορισμοί στο ξένο κλειδί, οποιοσδήποτε αριθμός σειρών στον θυγατρικό πίνακα μπορεί να αναφέρεται ίδια τιμή γονικού κλειδιού Αυτό το μοντέλο επιτρέπει μηδενικά στο ξένο κλειδί.
Πώς μπορώ να επιτρέψω το null στο ξένο κλειδί;
Δεδομένου ότι ο περιορισμός ξένου κλειδιού απαιτεί το κλειδί αναφοράς να είναι μοναδικό, το καλύτερο που μπορείτε να κάνετε είναι να επιτρέψετε μια σειρά με ένα κλειδί που είναι NULL. Σε αυτήν την περίπτωση, θα πρέπει να αντικαταστήσετε τον περιορισμό του Πρωτεύοντος κλειδιού με έναν μοναδικό περιορισμό (ή ευρετήριο) και να επιτρέψετε τη στήλη Χώρες. country_id να είναι NULL.
Μπορούμε να εισαγάγουμε μηδενικές τιμές στη στήλη ξένου κλειδιού;
Yes, Μπορείτε να μηδενίσετε την τιμή στη στήλη ξένου κλειδιού.