Table — relatsion ma’lumotlar bazasida bir turdagi obyekt yoki hodisalar haqidagi yozuvlarni qator va ustunlar shaklida saqlaydigan asosiy tuzilmadir. Har ustun atribut va uning ma’lumot turini, har qator esa shu atributlar bo‘yicha bitta yozuvni ifodalaydi. Table nomi va schema qoidalari ma’lumotning domen ma’nosini aniq ko‘rsatishi kerak.
Tuzilishi
Jadval yaratilganda ustun nomi, turi, nullability va default qiymati belgilanadi. Constraintlar ma’lumotning ruxsat etilgan holatini himoya qiladi. Primary key qatorni yagona aniqlaydi, unique constraint takrorni cheklaydi, foreign key esa boshqa jadval bilan referential integrityni saqlaydi.
CREATE TABLE users (
id BIGINT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL
);
Bu jadval har foydalanuvchiga yagona id va email talab qiladi. NOT NULL qiymatning mavjud bo‘lishini database darajasida tekshiradi.
Relatsion ma’no
Relatsion nazariyada relation tartiblanmagan tuplelar to‘plamidir. SQL table amalda duplicate row va NULL kabi qo‘shimcha xususiyatlarga ega bo‘lishi mumkin. Qatorlarning fizik saqlanish tartibi SELECT natijasining kafolatlangan tartibi emas. Aniq tartib kerak bo‘lsa ORDER BY yoziladi.
Bir jadvalga turli ma’nodagi ko‘plab nullable ustunlarni yig‘ish modelni tushunishni qiyinlashtiradi. Normalization takroriy ma’lumot va update anomalyni kamaytirish uchun obyektlarni mantiqiy jadvallarga ajratadi. Biroq analitik yoki ishlash talabi uchun nazoratli denormalization qo‘llanishi mumkin.
Indekslar
Table ma’lumoti odatda data page yoki bloklarda saqlanadi. Index ustun qiymatidan qatorga tez yo‘l beradi. Primary key ko‘p tizimlarda avtomatik indekslanadi. Secondary index filtr, join yoki sortni tezlashtirishi mumkin.
Har bir indeks yozuv qo‘shish, o‘zgartirish va o‘chirishda yangilanadi. Keraksiz indekslar storage, cache va write xarajatini oshiradi. Composite index ustunlarining tartibi query pattern asosida tanlanadi.
Partition
Katta table sana yoki kalit diapazoni bo‘yicha partitionlarga bo‘linishi mumkin. Query predicate partition keyga mos bo‘lsa, optimizer kerak bo‘lmagan qismlarni o‘qimasdan chiqaradi. Partition alohida server degani emas; u bitta mantiqiy table ichidagi fizik boshqaruv usulidir. Sharding esa ma’lumotni bir nechta database tuguniga taqsimlashi mumkin.
O‘zgarish va migratsiya
Ustun qo‘shish, turini o‘zgartirish yoki constraint kiritish ALTER TABLE orqali bajariladi. Katta jadvalda bu amal lock, table rewrite yoki qo‘shimcha disk talab qilishi mumkin. Online DDL imkoniyati database versiyasi va o‘zgarish turiga bog‘liq. Production migration oldindan vaqt, lock va rollback bo‘yicha tekshiriladi.
Temporary table va view
Temporary table sessiya yoki tranzaksiya doirasidagi oraliq natijani saqlashi mumkin va doimiy schema jadvalidan alohida hayot sikliga ega. Query optimizer ham sort yoki aggregation uchun ichki vaqtinchalik tuzilma yaratishi mumkin. View esa saqlangan query bo‘lib, oddiy holatda ma’lumot qatorlarini o‘zi nusxalamaydi. Materialized view natijani fizik saqlaydi va yangilash siyosatiga muhtoj. Bu obyektlar oddiy tablega o‘xshab so‘ralishi mumkin, ammo index, update, transaction va freshness semantikasi database enginega qarab farq qiladi. Ularni asosiy jadvalning aynan ekvivalenti deb qabul qilib bo‘lmaydi.
Table statistikasi qiymatlar taqsimoti va row soni haqida optimizerga ma’lumot beradi. Eskirgan statistika to‘g‘ri indekslar mavjud bo‘lsa ham samarasiz execution plan tanlanishiga sabab bo‘lishi mumkin.
Bog‘liq tushunchalar
relational database, row, column, primary key, foreign key, index, normalization