CodeGym /జావా కోర్సు /All lectures for TE purposes /నిర్బంధం: డేటాబేస్ సమగ్రత

నిర్బంధం: డేటాబేస్ సమగ్రత

All lectures for TE purposes
స్థాయి , పాఠం
అందుబాటులో ఉంది

డేటాబేస్ సమగ్రత నియంత్రణ

డేటాబేస్‌ల గురించి తెలుసుకోవలసిన మరో ముఖ్యమైన విషయం CONSTRAINS. పరిమితుల సహాయంతో, మీరు మీ పట్టికలలో డేటా మార్పులను నియంత్రించవచ్చు మరియు వాటి సమగ్రతను మరియు స్థిరత్వాన్ని కొనసాగించవచ్చు.

మేము డేటాబేస్ గురించి మాట్లాడేటప్పుడు డేటా స్థిరత్వం అంటే ఏమిటి ?

ఉద్యోగి, ఉత్పత్తి మరియు టాస్క్ టేబుల్‌లతో మా ఆన్‌లైన్ స్టోర్‌ని తీసుకుందాం . టాస్క్ టేబుల్‌లో ఎవరికీ కేటాయించని టాస్క్‌లు ఉండవచ్చని మాకు ఇప్పటికే తెలుసు: అటువంటి అడ్డు వరుసల ఉద్యోగి_ఐడి NULL.

అయితే టాస్క్ టేబుల్‌లో 115కి సమానమైన Employee_idతో ఎంట్రీ ఉంటే ఏమి జరుగుతుంది? అన్ని తరువాత, మాకు అలాంటి ఉద్యోగి లేరు. ఉద్యోగి పట్టికలో id = 115 ఉన్న ఉద్యోగి మా వద్ద లేరు. అదే సమయంలో, ఈ ఐడితో ఉద్యోగికి లింక్ టాస్క్ టేబుల్‌లో ఉంది. ఇది డేటా అస్థిరతకు ఉదాహరణ .

కాబట్టి మేము ఈ డేటాను ఎలా సరిదిద్దాలి? ఆదర్శవంతంగా, SQL సర్వర్, ఏదైనా డేటా మార్పుతో, ఈ సూక్ష్మ నైపుణ్యాలన్నింటినీ నియంత్రిస్తుంది. మరియు అలాంటి అవకాశం ఉంది, దీనిని FOREIGN_KEY అంటారు.

మీ పట్టికలోని కొన్ని నిలువు వరుసలు కేవలం సంఖ్యలను మాత్రమే కాకుండా, మరొక పట్టిక నుండి id వరుసలను కలిగి ఉంటే, దీన్ని స్పష్టంగా పేర్కొనవచ్చు.

ఫారిన్ కీని జోడిస్తోంది

అటువంటి కీని దాని సృష్టి దశలో మరియు తర్వాత, ALTER TABLEని ఉపయోగించి పట్టికకు జోడించవచ్చు. ఫార్మాట్ ప్రాథమికంగా భిన్నంగా లేదు. మేము రెండు ఎంపికలను అందిస్తాము.

అటువంటి కీ/నియమం యొక్క సాధారణ రూపం:

FOREIGN KEY (column)
  	REFERENCES table(column)

టేబుల్‌లోని అన్ని ఉద్యోగి_ఐడిలు ఉద్యోగుల పట్టికలో ఇప్పటికే ఉన్న ఎంట్రీని సూచిస్తాయని నిర్ధారించుకోవడానికి ఈ కీ/నియమాను టాస్క్ టేబుల్‌కి జోడిద్దాం . ఈ స్క్రిప్ట్ ఇలా కనిపిస్తుంది:

ALTER TABLE task
      ADD FOREIGN KEY (employee_id)
  	REFERENCES employee(id)

మరియు మేము టాస్క్ టేబుల్‌ను సృష్టించే సమయంలో ఈ నియమాన్ని జోడించాలని నిర్ణయించుకుంటే, అప్పుడు కోడ్ ఇలా కనిపిస్తుంది:

CREATE TABLE task (
      id INT,
      name VARCHAR(100),
      employee_id INT,
      deadline DATE,
 
      PRIMARY KEY (id),
  	  FOREIGN KEY (employee_id)  
	      REFERENCES employee(id)
);

మార్గం ద్వారా, మేము సూచించే స్ట్రింగ్ ప్రత్యేకమైన మిశ్రమ కీని కలిగి ఉన్న సందర్భాలు ఉన్నాయి: ఉదాహరణకు, "పేరు మరియు పుట్టిన సంవత్సరం" లేదా "productCatogoryId మరియు productId". అప్పుడు FOREIGN KEYని ఇలా వ్రాయవచ్చు:

FOREIGN KEY (our_column1, our_column2)
  	REFERENCES table(their_column1, their_column2)

ఫారిన్ కీ మరియు మారుతున్న డేటా

ఇప్పుడు మేము ఉద్యోగి పట్టికలో కొంత డేటాను నవీకరించాలని నిర్ణయించుకున్న పరిస్థితిని ఊహించండి మరియు మా ఉద్యోగి ID మార్చబడింది. టాస్క్ టేబుల్‌లోని డేటాకు ఏమి జరుగుతుంది? అది నిజం, అవి అసంబద్ధం అవుతాయి మరియు మా డేటాబేస్ యొక్క సమగ్రత ఉల్లంఘించబడుతుంది.

ఇది జరగకుండా నిరోధించడానికి, మీరు ఎంప్లాయ్ టేబుల్‌లోని ఐడి మారినప్పుడు ఈ నిర్దిష్ట మార్చబడిన ఐడిని సూచించే అన్ని టేబుల్‌లలోని అన్ని అడ్డు వరుసల ఉద్యోగి_ఐడిని మార్చమని మీరు SQL సర్వర్‌కి చెప్పవచ్చు.

ఇటువంటి స్క్రిప్ట్‌లను ఆన్‌అప్‌డేట్ మరియు ఆన్‌డిలీట్ అంటారు . రికార్డ్ ఐడి మారితే ఏమి చేయాలి మరియు రికార్డ్ తొలగించబడితే ఏమి చేయాలి?

తొలగింపుతో, ప్రతిదీ చాలా సులభం కాదు. మీరు డేటాబేస్‌లో ఒకదానికొకటి సూచించే స్ట్రింగ్‌ల ద్వారా సూచించబడే డిపెండెంట్ ఆబ్జెక్ట్‌లను కలిగి ఉంటే, ఒక వస్తువును తొలగించేటప్పుడు అనేక రకాల ప్రవర్తన దృశ్యాలు సాధ్యమవుతాయి.

మేము సైట్ వినియోగదారుని తొలగిస్తామని అనుకుందాం, అంటే మనం అతని వ్యక్తిగత కరస్పాండెన్స్ మొత్తాన్ని తొలగించాలి. కానీ మేము అతని బహిరంగ వ్యాఖ్యలన్నింటినీ తీసివేయడం అసంభవం.

లేదా ఒక ఉద్యోగి నిష్క్రమించాడు. అతను నిష్క్రమించి, అదే సమయంలో అతనికి అప్పగించిన పనులన్నీ డేటాబేస్ నుండి అదృశ్యమైతే అది వింతగా ఉంటుంది. కానీ వారు అతనిచే నియమించబడకుండా ఉండి ఉంటే, అది కూడా చెడుగా మారేది. ఉద్యోగి తన పనులన్నింటినీ ఇతర వ్యక్తులకు తిరిగి అప్పగించిన తర్వాత నిష్క్రమించేలా దీన్ని చేయడం మరింత సరైనది.

ఫారిన్ కీని ఉపయోగించి మనం ఈ దృశ్యాలను ఎలా వివరించవచ్చో ఇక్కడ ఉంది. అటువంటి కీ/నియమం యొక్క సాధారణ రూపం:

FOREIGN KEY (column)
  	REFERENCES table(column)
 	[ON DELETE reference_option]
 	[ON UPDATE reference_option]

రికార్డ్‌లను తొలగిస్తే (తొలగించడంలో) లేదా మారుతున్నప్పుడు (నవీకరణలో) ఏమి చేయాలి? మొత్తంగా, SQL సర్వర్ ఈ పరిస్థితుల్లో ప్రతిదానిలో పనిచేయడానికి 5 ఎంపికలు ఉండవచ్చు:

# reference_option వివరణ
1 పరిమితం చేయండి స్ట్రింగ్ సూచనలు కనుగొనబడితే చర్యను నిలిపివేయండి
2 క్యాస్కేడ్ డిపెండెంట్ అడ్డు వరుసలలో ఐడిని మార్చండి
3 శూన్యంగా సెట్ చేయండి ఆధారపడిన అడ్డు వరుసలలో IDని NULLకి సెట్ చేయండి
4 చర్య తీసుకోలేదు చేయటానికి ఏమి లేదు
5 సెట్ డిఫాల్ట్ x డిపెండెంట్ సింక్‌లలో ఐడిని xకి సెట్ చేయండి

మేము మా టాస్క్ టేబుల్‌ని ఎలా సవరించవచ్చో ఇక్కడ ఉంది:

ALTER TABLE task
  	ADD FOREIGN KEY (employee_id)
  	REFERENCES employee(id)
  	ON UPDATE CASCADE
  	ON DELETE RESTRICT;

ఇక్కడ ఏమి వ్రాయబడింది:

అప్‌డేట్ క్యాస్‌కేడ్‌లో : ఎంప్లాయ్ టేబుల్‌లోని ఐడి కీ మారితే, దానిని సూచించే టాస్క్ టేబుల్‌లో ఉద్యోగి_ఐడిని కూడా మార్చండి.

ON DELETE RESTRICT : ఉద్యోగుల పట్టిక నుండి అడ్డు వరుస తొలగించబడి మరియు టాస్క్ టేబుల్ నుండి సూచించబడితే, ఆ వరుసను ఉద్యోగి పట్టిక నుండి తొలగించకుండా నిరోధించండి.

వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION