Bosh sahifa Wiki Column

Column

Column — relatsion jadvaldagi bir xil turdagi atribut qiymatlarini saqlaydigan vertikal tuzilmadir. Har column nom, data type, nullability, default va constraint kabi schema xususiyatlariga ega. Masalan, users.email ustuni barcha foydalanuvchi qatorlaridagi email qiymatlarini ifodalaydi. Columnning ma’nosi jadval kontekstida aniqlanadi.

Data type

Data type ustunda qaysi qiymatlar va amallar mumkinligini belgilaydi. Integer sonli hisob, VARCHAR o‘zgaruvchan matn, date-time turlari vaqt, boolean mantiqiy holat uchun ishlatiladi. Type to‘g‘ri tanlansa database noto‘g‘ri shakldagi ma’lumotni erta rad etadi va saqlash hamda indekslashni samarali tashkil qiladi.

VARCHAR(100)dagi limit belgi yoki bayt semantikasiga database va encoding ta’sir qilishi mumkin. DECIMAL(p,s) aniq o‘nlik qiymatni saqlaydi, floating-point esa taxminiy ikkilik ifodaga ega. Pul kabi aniq qiymatda ushbu farq muhim.

Constraintlar

NOT NULL har rowda qiymat bo‘lishini talab qiladi. UNIQUE takrorlanishni cheklaydi, CHECK qiymat diapazoni yoki shartini tekshiradi. Foreign key column boshqa jadvaldagi keyga murojaat qiladi. Constraint faqat ilova formasida emas, database darajasida bo‘lsa, barcha yozish yo‘llari uchun bir xil qoida ishlaydi.

Default INSERTda column ko‘rsatilmaganda qiymat beradi. Explicit NULL bilan ustunni tashlab ketish bir xil bo‘lmasligi mumkin. Generated column boshqa ustunlar ifodasidan virtual yoki saqlangan qiymat hosil qiladi; uning imkoniyati database enginega bog‘liq.

Nomlash va semantika

data, value yoki flag kabi noaniq nomlar ustun ma’nosini yashiradi. published_at, is_active, price_amount kabi nomlar birlik va holatni yaxshiroq bildiradi. Boolean ustunda NULL ruxsat etilsa, ikki emas uch holat paydo bo‘ladi va dastur buni aniq talqin qilishi kerak.

Vaqt ustunida timezone semantikasi hujjatlashtiriladi. Ayrim database turlari timezone ma’lumotini saqlaydi, ayrimlari faqat kalendar qiymatni saqlaydi. UTC instant bilan mahalliy devor vaqti bir xil tushuncha emas.

Indeksdagi o‘rni

Column alohida yoki composite index tarkibida bo‘lishi mumkin. Yuqori selectivityga ega qiymat ko‘p queryda foydali, ammo faqat shu ko‘rsatkich indeks tartibini belgilamaydi. Filter, join, sort va leftmost prefix qoidasi birgalikda ko‘riladi.

Expression yoki function-based index ustunning o‘zgartirilgan ko‘rinishini indekslaydi, masalan emailning lowercase varianti. Database collation katta-kichik harf va til bo‘yicha taqqoslashga ta’sir qiladi.

Schema evolyutsiyasi

Yangi nullable column qo‘shish ko‘pincha xavfsizroq bosqichdir. Keyin eski qatorlar backfill qilinadi, kod yangi maydonga o‘tadi va zarur bo‘lsa NOT NULL kiritiladi. Katta tableda bir bosqichda default va constraint qo‘shish lock yoki table rewrite keltirishi mumkin.

Columnni o‘chirishdan oldin barcha reader va writerlar undan foydalanmayotgani tekshiriladi. Application logi, query kuzatuvi va ikki bosqichli deployment eski versiya bilan moslikni saqlashga yordam beradi.

Column-level access

Ayrim database tizimlari tablega umumiy SELECT berish o‘rniga faqat ma’lum ustunlarni o‘qishga ruxsat beradi. Bu maxfiy ma’lumotni oddiy hisobot rolidan yashiradi. View ham kerakli columnlarni tanlab, xavfsizroq interfeys yaratishi mumkin. Biroq maxfiy ustun query natijasida chiqmasa ham, filter yoki error orqali bilvosita ma’lumot sizishi ehtimoli siyosatga bog‘liq. Dynamic data masking ko‘rinadigan qiymatni yashiradi, lekin storage shifrlashi va haqiqiy authorizationning o‘rnini bosmaydi. Ilova SELECT * ishlatsa, keyin qo‘shilgan maxfiy column tasodifan serializationga kirishi mumkin.

Bog‘liq tushunchalar

table, row, data type, constraint, index, NULL, schema migration