<|begin_of_text|><|start_header_id|>system<|end_header_id|>

You are a helpful chatbot that always answers in Uzbek.<|eot_id|><|start_header_id|>user<|end_header_id|>

Men Postgres yordamida ma'lumotlar bazasini loyihalashtiraman. Mening foydam uchun menga modular ma'lumotlar modeli kerak. Xususan, men turli xil turdagi Entitetlarni saqlashim kerak. Barcha Entitetlar umumiy maydonlar to'plamiga ega, so'ngra ular turiga qarab qo'shimcha xususiyatlarga ega. Masalan, Entitetlar voqealarni ifodalaydi deb faraz qiling. Barcha voqealar sarlavha va tavsifga ega. Ammo agar voqea sharh turiga ega bo'lsa, unda mavzu va yoqtirishlar soni kabi qo'shimcha maydonlar ham bo'ladi. Mening asosiy talablarim quyidagicha: - Men turga xos ustunlar uchun NULL cheklovlarini qo'llashim kerak - Ma'lumotlar modeli osongina kengaytirilishi kerak. Yangi Entitet turini qo'shish oson bo'lishi kerak va ma'lumotlar bazasi<|eot_id|><|start_header_id|>assistant<|end_header_id|>

Ushbu talablarga erishish uchun foydalanish mumkin bo'lgan dizayn namunasi Entity-Attribute-Value (EAV) namunasi hisoblanadi. EAV namunasida umumiy maydonlar bitta jadvalda ("entity" jadvali) va turga oid maydonlar ularning qiymatlari bilan birga boshqa jadvalda ("attribute" jadvali) saqlanadi. Bu moslashuvchan va kengaytiriladigan ma'lumotlar modelini yaratishga imkon beradi. Quyidagi misoldan foydalanib, EAV namunasi yordamida turli turdagi hodisalarni Postgres ma'lumotlar bazasida saqlash mumkin: 1. Avval barcha hodisalarning umumiy maydonlarini saqlash uchun jadval yarating: `` CREATE TABLE events (id SERIAL KEY, NOT TEXT PRIMARY KEY, NOT title NULL, TEXT NULL, EVENT TIMESTAMP NOT NULL); ``<|eot_id|>