Postgresqlda schema (sxema) tushunchasi.
Ma'lumotlar bazasida schema (sxema) – bu ma'lumotlar bazasining tuzilishini tavsiflovchi mantiqiy tuzilma hisoblanadi. U jadval (table), ustun (column), indeks (index), view (ko‘rinish), trigger, funksiya va boshqa obyektlarni o‘z ichiga oladi.
Schema asosiy tushunchalari:
- Ma'lumotlar bazasi sxemasi – ma'lumotlar bazasidagi barcha obyektlarning tuzilishini belgilaydi.
- Jadval sxemasi – jadvalning ustunlari, ularning turlari va cheklovlarini tavsiflaydi.
- Foydalanuvchi sxemasi – ba'zi ma'lumotlar bazalarida (masalan, PostgreSQL) har bir foydalanuvchining alohida sxemasi bo‘lishi mumkin.
Schema ning afzalliklari:
- Tartib va boshqaruv – ma'lumotlarni mantiqiy guruhlarga ajratish imkonini beradi.
- Xavfsizlik – turli foydalanuvchilarga turli sxemalarga kirish huquqlarini berish mumkin.
- Modullik – katta ma'lumotlar bazalarida komponentlarni alohida sxemalar orqali ajratish qulay.
Misol (PostgreSQL)
Jadval yaratish:
CREATE SCHEMA my_schema;
CREATE TABLE my_schema.users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE
);
Bu kod my_schema nomli schema yaratadi va unda users jadvalini hosil qiladi. Shu jadvalga murojaat qilish uchun:
Schema tushunchasi ayniqsa PostgreSQL, Oracle va SQL Serverda keng qo‘llaniladi. MySQL esa schema atamasini ko‘pincha database bilan bir xil ma'noda ishlatadi.
Sxema nomini o'zgartirish
Sxemani o'chirish
Agar o'chirilayotgan sxemaga tegishli jadvallar mavjud bo'lsa xatolik sodir bo'ladi, chunki sxemaga tegishli ma'lumotlar borligi sabab ruxsat berilmaydi.
Bunday holatlarda CASCADE
bilan o'chirish mumkin, bu usul sxemaga tegishli barcha ma'lumotlarni ham o'chirib yuboradi.
Sxemani egasi bilan yaratish
Ba'zi holatlarda sxema biznes logikasiga qarab cheklovlar o'rnatilishi mumkin, bu cheklovlarga misol qilib qaysi bir sxemaga aniq foydalanuvchini biriktirish kerak bo'ladi. Bu bilan sxema bilan ishlashda faqat biriktirilgan foydalanuvchida huquqlar bo'ladi. Buni quyidagi tartibda amalga oshirish mumkin.
Endi users
sxemasi uchun javobgar db_user hisoblanadi, boshqa foydalanuvchilar users
sxemasida amallar bajarolmaydi qachonki ularga ruxsat(GRANT) berilmaguncha.