మాడ్యూల్ పాఠాలు (1/4)
అధునాతన డేటా రకాలు మరియు ENUMలు
మునుపటి పాఠంలో మేము ప్రాథమిక 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
);TEXTvsVARCHAR(n): పోస్ట్గ్రెస్లో పనితీరు ఒకేలా ఉంటుంది. మీరు డేటాబేస్ స్థాయిలో చొప్పించిన పొడవును ** స్పష్టంగా పరిమితం చేయాలనుకున్నప్పుడు మాత్రమే మీరుVARCHAR(n)ని ఉపయోగిస్తారు.NUMERIC(10, 2): డబ్బు లేదా అంకగణిత ఖచ్చితత్వం కోసం పర్ఫెక్ట్. ఇక్కడ ఇది గరిష్టంగా 8 పూర్ణాంక అంకెలు మరియు 2 దశాంశాలు (మొత్తం 10) అనుమతిస్తుంది. మీరు10.555ని ఇన్సర్ట్ చేస్తే, Postgres దాన్ని10.56కి రౌండ్ చేస్తుంది.
UUID రకం
వెబ్లో బహిర్గతమయ్యే సురక్షిత ఐడెంటిఫైయర్ల కోసం (URLలలో పబ్లిక్ IDలు వంటివి), 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' పట్టికను సృష్టించండి: id (SERIAL pk), test_id (డిఫాల్ట్తో UUID gen_random_uuid()), స్కోర్ (పూర్ణాంకం శూన్యం కాదు) మరియు కంటెంట్ (TEXT). ఇతర ఫీల్డ్లలో దేనికీ రకానికి మించి స్పష్టమైన పరిమితులు అవసరం లేదు.
సూచనను చూపించు
CREATE TABLE user_reviews (...) ఆపై వివిధ ఫీల్డ్లను వ్రాయండి. కామాలను గుర్తుంచుకోండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
ముందుగా 'అడ్మిన్' మరియు 'యూజర్' విలువలతో ENUM రకాన్ని 'user_role' సృష్టించండి. ఆపై id (SERIAL pk) మరియు రోల్తో 'enum_users' పట్టికను సృష్టించండి (మీరు ఇప్పుడే సృష్టించిన రకం, NULL కాదు).
సూచనను చూపించు
మర్చిపోవద్దు; రెండు స్టేట్మెంట్లను వేరు చేయడానికి (క్రియేట్ టైప్ మరియు క్రియేట్ టేబుల్).
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది