தொகுதி பாடங்கள் (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): Postgres இல் செயல்திறன் ஒரே மாதிரியாக உள்ளது. தரவுத்தள மட்டத்தில் செருகப்பட்ட நீளத்தை வெளிப்படையாக வரம்பிட வேண்டும் நீங்கள்VARCHAR(n)ஐப் பயன்படுத்துகிறீர்கள்.NUMERIC(10, 2): பணம் அல்லது எண்கணித துல்லியத்திற்கு ஏற்றது. இங்கே இது அதிகபட்சம் 8 முழு எண் இலக்கங்களையும் 2 தசமங்களையும் (மொத்தம் 10) அனுமதிக்கிறது. நீங்கள்10.555ஐச் செருகினால், Postgres அதை10.56க்கு சுற்றும்.
UUID வகை
இணையத்தில் வெளிப்படும் பாதுகாப்பான அடையாளங்காட்டிகளுக்கு (URL களில் உள்ள பொது ஐடிகள் போன்றவை), 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 (இயல்புநிலை gen_random_uuid() உடன் UUID), மதிப்பெண் (முழு எண் பூஜ்யமல்ல) மற்றும் உள்ளடக்கம் (TEXT). மற்ற எந்தப் புலங்களுக்கும் வகையைத் தாண்டி வெளிப்படையான கட்டுப்பாடுகள் தேவையில்லை.
குறிப்பைக் காட்டு
CREATE TABLE user_reviews (...) பின்னர் பல்வேறு துறைகளை எழுதவும். காற்புள்ளிகளை நினைவில் கொள்க.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்பாய்வு பயிற்சி
முதலில் ENUM வகை 'user_role' ஐ 'admin' மற்றும் 'user' மதிப்புகளுடன் உருவாக்கவும். பின்னர் 'enum_users' அட்டவணையை ஐடி (சீரியல் பிகே) மற்றும் ரோல் (நீங்கள் இப்போது உருவாக்கிய வகை, பூஜ்யம் அல்ல) ஆகியவற்றை உருவாக்கவும்.
குறிப்பைக் காட்டு
மறக்க வேண்டாம்; இரண்டு அறிக்கைகளையும் பிரிக்க (உருவாக்கும் வகை மற்றும் உருவாக்கு அட்டவணை).
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்