Skip to content

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:

  1. Ma'lumotlar bazasi sxemasi – ma'lumotlar bazasidagi barcha obyektlarning tuzilishini belgilaydi.
  2. Jadval sxemasi – jadvalning ustunlari, ularning turlari va cheklovlarini tavsiflaydi.
  3. 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:

SELECT * FROM my_schema.users;

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

alter schema my_schema rename to my_schema_new;

Sxemani o'chirish

drop schema my_schema_new;

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.

drop schema my_schema_new cascade;

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.

CREATE SCHEMA users AUTHORIZATION db_user;

Endi users sxemasi uchun javobgar db_user hisoblanadi, boshqa foydalanuvchilar users sxemasida amallar bajarolmaydi qachonki ularga ruxsat(GRANT) berilmaguncha.

Sxema egasini o'zgartirish

ALTER SCHEMA my_schema OWNER TO new_db_user;