Sobes.tech
Middle

Τι είναι η ακεραιότητα των αναφορικών συνδέσεων;

sobes.tech AI

Απάντηση από AI

Η αναφορά ακεραιότητας (Referential Integrity) είναι μια ιδιότητα των δεδομένων σε μια σχεσιακή βάση δεδομένων που διασφαλίζει ότι οι αναφορές μεταξύ των πινάκων παραμένουν έγκυρες. Προλαμβάνει τα ακόλουθα προβλήματα:

  • Τη διαγραφή μιας γραμμής από τον "γονικό" πίνακα στην οποία αναφέρονται γραμμές στον "παιδικό" πίνακα.
  • Την αλλαγή του πρωτεύοντος κλειδιού στον "γονικό" πίνακα στο οποίο αναφέρονται γραμμές στον "παιδικό" πίνακα, χωρίς να ενημερώνονται αυτές οι αναφορές.
  • Την εισαγωγή μιας γραμμής στον "παιδικό" πίνακα με αναφορά σε ένα μη υπαρκτό πρωτεύον κλειδί στον "γονικό" πίνακα.

Εφαρμόζεται μέσω εξωτερικών κλειδιών (FOREIGN KEY).

Παραδείγματα περιορισμών για τα εξωτερικά κλειδιά:

  • ON DELETE CASCADE: Όταν διαγράφεται μια γραμμή στον "γονικό" πίνακα, διαγράφονται και οι αντίστοιχες γραμμές στον "παιδικό" πίνακα.
  • ON DELETE SET NULL: Όταν διαγράφεται μια γραμμή στον "γονικό" πίνακα, το αντίστοιχο εξωτερικό κλειδί στον "παιδικό" πίνακα τίθεται σε NULL.
  • ON DELETE RESTRICT: Η διαγραφή μιας γραμμής από τον "γονικό" πίνακα απαγορεύεται αν υπάρχουν αναφορές σε αυτήν στον "παιδικό" πίνακα.
  • ON UPDATE CASCADE: Όταν ενημερώνεται το πρωτεύον κλειδί στον "γονικό" πίνακα, ενημερώνονται και τα αντίστοιχα εξωτερικά κλειδιά στον "παιδικό" πίνακα.
-- Παράδειγμα πίνακα "users" (γονικός)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Παράδειγμα πίνακα "orders" (παιδικός) με εξωτερικό κλειδί
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
        ON DELETE CASCADE /* Παράδειγμα περιορισμού */
        ON UPDATE CASCADE /* Παράδειγμα περιορισμού */
);