Junior
Πώς επηρεάζει το ξένο κλειδί την ακεραιότητα των δεδομένων στη βάση;
sobes.tech AI
Απάντηση από AI
Το ξένο κλειδί (foreign key) διασφαλίζει την αναφορά δεδομένων, εγγυάται ότι οι τιμές στη στήλη ενός πίνακα (πίνακας παιδιού) αντιστοιχούν στις τιμές στη στήλη ενός άλλου πίνακα (πίνακας γονέα).
Επίδραση στην ακεραιότητα των δεδομένων:
- Απαγορεύει την προσθήκη εγγραφών στον πίνακα παιδιού με μια τιμή που δεν υπάρχει στη σχετική στήλη του πίνακα γονέα. Η προσπάθεια εισαγωγής μιας γραμμής που αναφέρεται σε μη υπάρχουσα εγγραφή γονέα θα προκαλέσει σφάλμα.
- Περιορίζει τη διαγραφή εγγραφών από τον πίνακα γονέα που αναφέρονται από εγγραφές στον πίνακα παιδιού. Η συμπεριφορά κατά τη διαγραφή εξαρτάται από τη ρυθμισμένη ενέργεια (
ON DELETE):RESTRICT(προεπιλογή): Απαγορεύει τη διαγραφή.CASCADE: Διαγράφει τις εξαρτώμενες εγγραφές στον πίνακα παιδιού.SET NULL: Ορίζει την τιμή NULL στη σχετική στήλη του πίνακα παιδιού (αν η στήλη επιτρέπει NULL).NO ACTION: Παρόμοιο με τοRESTRICTστον τυπικό έλεγχο, αλλά μπορεί να διαφέρει κατά την εκτέλεση.
- Περιορίζει την ενημέρωση εγγραφών στον πίνακα γονέα. Η συμπεριφορά κατά την ενημέρωση εξαρτάται επίσης από τη ρυθμισμένη ενέργεια (
ON UPDATE):RESTRICT(προεπιλογή): Απαγορεύει την ενημέρωση.CASCADE: Ενημερώνει την αντίστοιχη τιμή στις εξαρτώμενες εγγραφές του πίνακα παιδιού.SET NULL: Ορίζει την τιμή NULL στη σχετική στήλη του πίνακα παιδιού (αν η στήλη επιτρέπει NULL).NO ACTION: Παρόμοιο με τοRESTRICTστον τυπικό έλεγχο, αλλά μπορεί να διαφέρει κατά την εκτέλεση.
Το ξένο κλειδί βοηθά στην αποτροπή εμφάνισης "ορφανών" εγγραφών και διασφαλίζει ότι οι σχέσεις μεταξύ των πινάκων παραμένουν σωστές.