முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 9 · பாடம் 1 இன் 4பாடத்திட்டத்தில் 33/57~10 min
தொகுதி பாடங்கள் (1/4)

மேம்பட்ட தரவு வகைகள் மற்றும் ENUMகள்

முந்தைய பாடத்தில் அடிப்படை CREATE TABLE கட்டளையைப் பார்த்தோம். எங்கள் டொமைன்களை மிகவும் துல்லியமான மற்றும் பாதுகாப்பான முறையில் மாதிரியாக்க PostgreSQL வழங்கும் சில மேம்பட்ட தரவு வகைகளை இப்போது ஆராய்வோம்.

எண் மற்றும் உரை வகைகள்

PostgreSQL எண்கள் மற்றும் உரைக்கு பல வகைகளைக் கொண்டுள்ளது. சரியானதைத் தேர்ந்தெடுப்பது சரிபார்ப்பிற்கும் சேமிப்பகத்திற்கும் உதவுகிறது.

SQL
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 vs VARCHAR(n): Postgres இல் செயல்திறன் ஒரே மாதிரியாக உள்ளது. தரவுத்தள மட்டத்தில் செருகப்பட்ட நீளத்தை வெளிப்படையாக வரம்பிட வேண்டும் நீங்கள் VARCHAR(n) ஐப் பயன்படுத்துகிறீர்கள்.
  • NUMERIC(10, 2): பணம் அல்லது எண்கணித துல்லியத்திற்கு ஏற்றது. இங்கே இது அதிகபட்சம் 8 முழு எண் இலக்கங்களையும் 2 தசமங்களையும் (மொத்தம் 10) அனுமதிக்கிறது. நீங்கள் 10.555 ஐச் செருகினால், Postgres அதை 10.56 க்கு சுற்றும்.

UUID வகை

இணையத்தில் வெளிப்படும் பாதுகாப்பான அடையாளங்காட்டிகளுக்கு (URL களில் உள்ள பொது ஐடிகள் போன்றவை), UUID பெரும்பாலும் கிளாசிக் SERIAL அதிகரிப்பை விட விரும்பப்படுகிறது.

SQL
CREATE TABLE public_orders (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  customer    TEXT NOT NULL,
  total       NUMERIC(10, 2)
);

ENUM (கணக்கீடுகள்)

பெரும்பாலும் ஒரு நெடுவரிசையில் சில முன் வரையறுக்கப்பட்ட மதிப்புகளில் ஒன்றை மட்டுமே கொண்டிருக்க வேண்டும் (எ.கா. ஆர்டர் நிலை: "புதிய", "பணம்", "அனுப்பப்பட்டது"). ஒரு அணுகுமுறை CHECK முக்கிய சொல்லைப் பயன்படுத்துவதாகும், ஆனால் PostgreSQL தனிப்பயன் ENUM வகைகளை வழங்குகிறது.

SQL
-- 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'
);

தரவு நிலைத்தன்மையைப் பாதுகாத்து, தவறான நிலையை எவராலும் செருக முடியாது என்பதற்கு இது உத்தரவாதம் அளிக்கிறது.

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#sql.m9.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

இதனுடன் 'user_reviews' அட்டவணையை உருவாக்கவும்: id (SERIAL pk), test_id (இயல்புநிலை gen_random_uuid() உடன் UUID), மதிப்பெண் (முழு எண் பூஜ்யமல்ல) மற்றும் உள்ளடக்கம் (TEXT). மற்ற எந்தப் புலங்களுக்கும் வகையைத் தாண்டி வெளிப்படையான கட்டுப்பாடுகள் தேவையில்லை.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

CREATE TABLE user_reviews (...) பின்னர் பல்வேறு துறைகளை எழுதவும். காற்புள்ளிகளை நினைவில் கொள்க.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#sql.m9.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

முதலில் ENUM வகை 'user_role' ஐ 'admin' மற்றும் 'user' மதிப்புகளுடன் உருவாக்கவும். பின்னர் 'enum_users' அட்டவணையை ஐடி (சீரியல் பிகே) மற்றும் ரோல் (நீங்கள் இப்போது உருவாக்கிய வகை, பூஜ்யம் அல்ல) ஆகியவற்றை உருவாக்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

மறக்க வேண்டாம்; இரண்டு அறிக்கைகளையும் பிரிக்க (உருவாக்கும் வகை மற்றும் உருவாக்கு அட்டவணை).

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்