Чектөөлөр жана маалымат бүтүндүгү
Жаман маалымат эч качан кире албашы үчүн базанын өзү сактай турган эрежелер
Негизги идея: Чектөө (constraint) - бул таблицага тиркелген эреже, ага ар бир сап баш ийиши керек. База аны ар бир
INSERT жана UPDATE учурунда текшерет жана аны бузган нерсенин баарын четке кагат. Тиркеменин кодуна ишенүүнүн ордуна, кепилдикти схеманын өзүнө түшүрөсүз, ал жерде ал бардык кардарлар, скрипттер жана кол менен түзөтүүлөр үчүн иштейт.
Аягында сиз төмөнкүлөрдү жасай аласыз:
NOT NULLаркылуу калтырылган маанилерге тыюу салуу,UNIQUEаркылуу кайталанууларга тыюу салуу,CHECKаркылуу бизнес-эрежелерди коюу,DEFAULTаркылуу акылга сыярлык демейки маанилерди коюу,FOREIGN KEYжана анынON DELETE/ON UPDATEаракеттери менен таблицаларды шайкештирүү.
1. Биздин үлгү схема: кичине дүкөн
Төмөндөгү ар бир бөлүм бир эле кичинекей онлайн-дүкөн базасына кайрылат. categories таблицасы товарларды топтойт, products товарларды сактайт, customers - сатып алуучуларды, ал эми orders сатып алууларды жазат. Аларды бир жолу түзөлү:
CREATE TABLE categories (
category_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE
);
CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(8,2) NOT NULL CHECK (price > 0),
stock INT NOT NULL DEFAULT 0 CHECK (stock >= 0),
category_id INT,
CONSTRAINT fk_cat FOREIGN KEY (category_id)
REFERENCES categories(category_id)
ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
email VARCHAR(120) NOT NULL UNIQUE,
country CHAR(2) NOT NULL DEFAULT 'US'
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
total DECIMAL(10,2) NOT NULL DEFAULT 0,
CONSTRAINT fk_cust FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
ON DELETE CASCADE ON UPDATE CASCADE
);
Ушул бир CREATE TABLE блогу биз изилдей турган бардык чектөө түрлөрүн колдонот: PRIMARY KEY, NOT NULL, UNIQUE, CHECK, DEFAULT жана FOREIGN KEY. Аларды бирден карайлы.