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 /* შეზღუდვის მაგალითი */
);