मॉड्यूल पाठ (1/4)
उन्नत डेटा प्रकार और ENUMs
पिछले पाठ में हमने मूल CREATE TABLE कमांड देखी थी। आइए अब कुछ उन्नत डेटा प्रकारों का पता लगाएं जो PostgreSQL हमारे डोमेन को अधिक सटीक और सुरक्षित तरीके से मॉडल करने के लिए प्रदान करता है।
संख्यात्मक और पाठ प्रकार
PostgreSQL में संख्याओं और टेक्स्ट के लिए कई प्रकार हैं। सही का चयन करने से सत्यापन और भंडारण स्थान दोनों में मदद मिलती है।
CREATE TABLE advanced_products (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
description TEXT,
-- NUMERIC(p,s) dove p = cifre totali, s = cifre decimali
price NUMERIC(10, 2) NOT NULL,
featured BOOLEAN DEFAULT FALSE
);TEXTबनामVARCHAR(n): पोस्टग्रेज़ में प्रदर्शन समान है। आपVARCHAR(n)का उपयोग केवल तभी करते हैं जब आप डेटाबेस स्तर पर सम्मिलित लंबाई को स्पष्ट रूप से सीमित करना चाहते हैं।NUMERIC(10, 2): पैसे या अंकगणितीय सटीकता के लिए बिल्कुल सही। यहां यह अधिकतम 8 पूर्णांक अंक और 2 दशमलव (कुल 10) की अनुमति देता है। यदि आप10.555सम्मिलित करते हैं, तो पोस्टग्रेज़ इसे10.56पर पूर्णांकित कर देता है।
यूयूआईडी प्रकार
वेब पर प्रदर्शित सुरक्षित पहचानकर्ताओं (जैसे यूआरएल में सार्वजनिक आईडी) के लिए, UUID को अक्सर क्लासिक SERIAL वेतन वृद्धि पर प्राथमिकता दी जाती है।
CREATE TABLE public_orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
customer TEXT NOT NULL,
total NUMERIC(10, 2)
);ENUM (गणना)
अक्सर किसी कॉलम में कुछ पूर्वनिर्धारित मानों में से केवल एक ही होना चाहिए (उदाहरण के लिए ऑर्डर स्थिति: "नया", "भुगतान किया गया", "शिप किया गया")। एक दृष्टिकोण CHECK कीवर्ड का उपयोग करना है, लेकिन PostgreSQL कस्टम ENUM प्रकार प्रदान करता है।
-- Dobbiamo prima creare il tipo:
CREATE TYPE order_status AS ENUM ('nuovo', 'pagato', 'spedito', 'cancellato');
-- Ora possiamo usarlo in una tabella:
CREATE TABLE orders_demo (
id SERIAL PRIMARY KEY,
status order_status NOT NULL DEFAULT 'nuovo'
);यह गारंटी देता है कि डेटा स्थिरता की रक्षा करते हुए कोई भी कभी भी अमान्य स्थिति नहीं डाल सकता है।
इसे अजमाएं
एक 'user_reviews' तालिका बनाएं: आईडी (SERIAL pk), test_id (डिफ़ॉल्ट gen_random_uuid() के साथ UUID), स्कोर (पूर्णांक शून्य नहीं), और सामग्री (TEXT)। अन्य किसी भी क्षेत्र को प्रकार से परे स्पष्ट बाधाओं की आवश्यकता नहीं है।
संकेत दिखाएँ
CREATE TABLE user_reviews (...) और फिर विभिन्न फ़ील्ड लिखें। अल्पविराम याद रखें.
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
सबसे पहले 'एडमिन' और 'यूजर' मानों के साथ ENUM प्रकार 'user_role' बनाएं। फिर आईडी (SERIAL pk) और भूमिका (आपके द्वारा अभी बनाया गया प्रकार, शून्य नहीं) के साथ 'enum_users' तालिका बनाएं।
संकेत दिखाएँ
मत भूलना ; दो कथनों (क्रिएट प्रकार और क्रिएट टेबल) को अलग करने के लिए।
3 प्रयासों के बाद समाधान उपलब्ध है