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