அண்மைய பதிவுகள்

ஆரக்கிள் பாடங்கள் - பாடம் - 6 - (தகவல் நிபந்தனைகள்) - கன்ஸ்ட்ரைன்ட்ஸ்.

கன்ஸ்ட்ரைன்ட்ஸ் (Constraints) என்பது, ஒரு டேபிளில் தகவல்களை, பெறவோ, மாற்றவோ, நீக்கவோ செய்யும்போது தகவல்களின் ஒருமைப்பாடு (Data integrity) கலையாமல் பாதுகாக்க, முன் வரையறுக்கப்பட்ட சில நிபந்தனைகளாகும் (pre-defined rules).

கன்ஸ்ட்ரைன்ட்ஸ் வகைகளில் சில :


செக் கன்ஸ்ட்ரைன்ட் (CHECK Constraint) : தகவல்களை உள்ளீடு செய்யும்போது, ஒரு சில நிரல்களில், குறிப்பிட்ட தகவல் மட்டுமே இடம்பெறுமாறு செய்ய இந்த கன்ஸ்ட்ரைன்ட் உதவுகிறது.

எடுத்துக்காட்டாக, பிராந்தியம் (REGION) என்றொரு நிரல் இருப்பதாய் கொள்வோம். அதில் NORTH, EAST, SOUTH, WEST எனப்படும், நான்கு மதிப்புகள் (Values) மட்டுமே பெறப்பட வேண்டும், வேறு ஏதாவது மதிப்பை உள்ளீடாக தந்தால் ஏற்றுக்கொள்ளாதபடி செய்ய இந்த கன்ஸ்ட்ரைன்ட் மூலம் கட்டுப்பாடு விதிக்கலாம்.

அது போல நமது எடுத்துக்காட்டில், STUD_CLAS என்ற நிரலில் ஒன்று முதல் பனிரெண்டு என்ற மதிப்புகள் மட்டுமே தரப்பட வேண்டும் என்றும் நாம் வரையறுக்கலாம். அந்த நிரலை வரையறுக்கும்போது (Column definition) இந்த கட்டுப்பாட்டையும் சேர்த்து வரையறுக்க வேண்டும்.


NOT NULL Constraint : ஒரு நிரலில் எந்த தகவலும் உள்ளீடு செய்யாமல் வெறுமனே விட்டுச்செல்வதை தடுக்க இந்த கன்ஸ்ட்ரைன்ட் உதவுகிறது. (எந்த மதிப்பும் இல்லை என்பதனை NULL (நல்) என குறிப்பிடுவோம்.)

அந்த நிரலில் எந்தவொரு நிரையிலும் (Row) குறிப்பிட்ட நிரல் மதிப்பேதும் இல்லாமல் இருக்கக் கூடாது என இதன்படி வரையறுக்கலாம்.


எடுத்துக்காட்டாக, ஒரு பள்ளியில் எல்லா மாணவர்களுக்கும் தனித்தனி பதிவு எண்கள் இருக்கும். பதிவு எண் இல்லாமல் ஒரு மாணவனின் தகவல் இருக்காது.

எனவே நமது எடுத்துக்காட்டில், STUD_MAST டேபிளில்
பதிவு எண் நிரலில் மதிப்பு கண்டிப்பாய் கொடுக்கப்பட வேண்டும் என்பதை கட்டாயமாக்கலாம்.

UNIQUE Constraint : ஒரு டேபிளில், ஒரு நிரலின் மதிப்போ, ஒன்றுக்கும் மேற்பட்ட நிரல்களின் தொகுப்பு மதிப்போ (Composite) ஒரு முறை மட்டுமே வரக்கூடியது போல வரையறுக்கப்படுவது யுனிக் (Unique) கன்ஸ்ட்ரைன்ட் எனப்படுகிறது.

நமது எடுத்துக்காட்டின்படி, ஒரு பள்ளியில் ஒவ்வொரு மாணவனுக்கும், தானித்தனி பதிவு எண்கள் கொடுக்கப்பட்டிருக்கும். ஒரே பதிவு எண் இரண்டு மாணவர்களுக்கு வழங்கப்பட மாட்டாது.

அதனை நிர்ணயிக்கவே UNIQUE கன்ஸ்ட்ரைன்ட் உதவுகிறது.


நாம் நமது பாடம் 4(ii) - இல் கீழே கொடுக்கப்பட்டுள்ள கட்டளை உதவியுடன் டேபிள் உருவாக்கினோம்.

CREATE TABLE STUD_MAST (STUD_REG_NO NUMBER(8),
STUD_NAME VARCHAR2(30),
STUD_GEND CHAR(1),
STUD_JOIN_DATE DATE,
STUD_JOIN_CLAS VARCHAR2(3))

DROP TABLE கட்டளை மூலம் டேபிளை நீக்கி விட்டு, நாம் மேலே நாம் கூறியுள்ள கன்ஸ்ட்ரைன்ட் - கள் சேர்த்து இந்த டேபிளை மறுபடி உருவாக்குவோம்.

CREATE TABLE STUD_MAST (STUD_REG_NO NUMBER(8)NOT NULL UNIQUE,
STUD_NAME VARCHAR2(30) NOT NULL,
STUD_GEND CHAR(1),
STUD_JOIN_DATE DATE,
STUD_JOIN_CLAS VARCHAR2(4)
CHECK (STUD_JOIN_CLAS IN ('I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII')))




இவ்வாறு DROP செய்து விட்டு உருவாக்கும்போது அந்த டேபிளில் இருந்த தகவல்கள் எதுவும் கிடைக்காது. அவ்வாறு ஏற்கனவே தகவல்கள் நிறைந்த டேபிளில் நாம் கன்ஸ்ட்ரைன்ட் சேர்க்க விரும்பினால் கீழ்க்காணும் கட்டளைகளை பயன்படுத்தலாம்.


ALTER TABLE STUD_MAST MODIFY (STUD_REG_NO NUMBER(8) NOT NULL);

ALTER TABLE STUD_MAST MODIFY (STUD_NAME VARCHAR2(30) NOT NULL);

ALTER TABLE STUD_MAST MODIFY (STUD_JOIN_CLAS VARCHAR2(4) CHECK (STUD_JOIN_CLAS IN ('I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII')))


(ஆரக்கிளின் பழைய பதிப்பான 7.3 CHECK கன்ஸ்ட்ரைன்ட்டை ALTER TABLE கட்டளையில் ஆதரிப்பதில்லை.)

இவ்வாறு ALTER TABLE மூலம் CHECK கன்ஸ்ட்ரைன்ட் செயல்படுத்துகையில், அந்த நிரலில் ஏற்கனவே உள்ள மதிப்புகள் தற்போது கொடுக்கப்படும் நிபந்தனைக்கு உட்பட்டவைகளாக இருக்க வேண்டும்.


NOT NULL, CHECK கன்ஸ்ட்ரைன்ட் - களை ALTER TABLE கட்டளையில், நிரல் தலைப்புக்கு அருகிலேயே செயல்படுத்தலாம். ஆனால் UNIQUE கன்ஸ்ட்ரைன்ட்டை அவ்வாறு செய்ய இயலாது. அதற்கு ADD CONSTRAINT என தனியே செயல்படுத்த வேண்டும்.


ALTER TABLE STUD_MAST ADD CONSTRAINT UK_REG_NO UNIQUE(STUD_REG_NO)


இன்னும்
Primary Key Constraint, References Constraint (Foreign key constraint) போன்ற கன்ஸ்ட்ரைன்ட்கள் உள்ளன. பதிவின் நீளம் கருதி அதனை அடுத்த பதிவில் சொல்கிறேன்.




0 comments:

Post a Comment

Blog Widget by LinkWithin