ఒక పూర్తి ఫంక్షనల్ డిపెందెన్సీ అనేది డేటాబేస్ సాధారణీకరణ యొక్క స్థితి, ఇది సాధారణ సాధారణ ఫార్మాట్ (2NF) యొక్క సాధారణీకరణ ప్రమాణాలకు సమానం. క్లుప్తంగా చెప్పాలంటే, ఇది మొదటి సాధారణ ఫారం (1NF) యొక్క అవసరాలకు అనుగుణంగా ఉంటుంది, మరియు అన్ని ముఖ్య-కాని లక్షణాలను ప్రాథమిక కీపై పూర్తిగా క్రియాశీలంగా ఆధారపడి ఉంటాయి.
ఇది శబ్దంతో సంక్లిష్టమైనది కాదు. మరింత వివరంగా చూద్దాం.
మొదటి సాధారణ రూపం యొక్క సారాంశం
ఒక డేటాబేస్ పూర్తిగా క్రియాశీలకంగా ఉండటానికి ముందు, ఇది మొదట మొదటి సాధారణ ఫారమ్కు కట్టుబడి ఉండాలి.
దీని అర్ధం ప్రతి లక్షణం ఒకే, అణు విలువను కలిగి ఉండాలి.
ఉదాహరణకు, కింది పట్టిక 1NF కు అనుగుణంగా లేదు, ఎందుకంటే ఉద్యోగి టీనా రెండు ప్రదేశాలతో అనుసంధానించబడి ఉంది, అవి రెండూ ఒక్క సెల్లో ఉంటాయి:
ఉద్యోగి | స్థానం |
---|---|
జాన్ | లాస్ ఏంజెల్స్ |
టీనా | లాస్ ఏంజిల్స్, చికాగో |
ఈ రూపకల్పనను అనుమతించడం వలన డేటా నవీకరణలు లేదా ఎంట్రీలను ప్రతికూలంగా ప్రభావితం చేయవచ్చు. 1NF సమ్మతిని నిర్ధారించడానికి, పట్టికను క్రమాన్ని మార్చండి తద్వారా అన్ని లక్షణాలు (లేదా కాలమ్ కణాలు) ఒకే విలువను కలిగి ఉంటాయి:
ఉద్యోగి | స్థానం |
---|---|
జాన్ | లాస్ ఏంజెల్స్ |
టీనా | లాస్ ఏంజెల్స్ |
టీనా | చికాగో |
కానీ డేటాతో సమస్యలను నివారించడానికి 1NF ఇప్పటికీ సరిపోదు.
2NF పూర్తి ఆధారపడేలా ఎలా పనిచేస్తుంది?
పూర్తిగా ఆధారపడి ఉండటానికి, అన్ని కాని అభ్యర్థి కీ లక్షణాలు ప్రాథమిక కీ ఆధారపడి ఉండాలి. (గుర్తుంచుకోండి, ఒక అభ్యర్థి కీలక్షణం ఏ డేటాను (ఉదాహరణకు, ప్రాథమిక లేదా విదేశీ కీ) ప్రత్యేకంగా ఒక డేటాబేస్ రికార్డును గుర్తించడానికి ఉపయోగిస్తారు.
డేటాబేస్ డిజైనర్లు లక్షణాల మధ్య ఆధారపడి సంబంధాలను వివరించడానికి ఒక సంకేతాన్ని ఉపయోగిస్తారు:
లక్షణం B యొక్క విలువను నిర్ణయిస్తే, ఈ A -> B ను వ్రాయండి - B అంటే B పై క్రియాశీలంగా ఆధారపడి ఉంటుంది. ఈ సంబంధంలో, B యొక్క విలువను నిర్ణయిస్తుంది, B అనేది B పై ఆధారపడి ఉంటుంది.
ఉదాహరణకు, క్రింది ఉద్యోగుల విభాగాల పట్టికలో, EmployeeID మరియు DeptID రెండూ అభ్యర్థి కీలు: EmployeeID అనేది పట్టిక యొక్క ప్రాథమిక కీ, అయితే DeptID అనేది ఒక విదేశీ కీ.
ఏ ఇతర లక్షణం - ఈ సందర్భంలో, EmployeeName మరియు DeptName - దాని విలువ పొందటానికి ప్రాధమిక కీ ఆధారపడి ఉండాలి.
ఉద్యోగ గుర్తింపు | ఉద్యోగి పేరు | DeptID | DeptName |
---|---|---|---|
Emp1 | జాన్ | Dept001 | ఫైనాన్స్ |
Emp2 | టీనా | Dept003 | అమ్మకాలు |
Emp3 | కార్లోస్ | Dept001 | ఫైనాన్స్ |
ఈ సందర్భంలో, పట్టిక పూర్తిగా ఆధారపడి ఉండదు, ఎందుకంటే EmployeeName ప్రాథమిక కీ EmployeeID పై ఆధారపడి ఉంటుంది, DeptName బదులుగా DeptID పై ఆధారపడి ఉంటుంది. ఈ పాక్షిక డిపెండెన్సీ అంటారు.
ఈ పట్టికను 2NF కు అనుగుణంగా చేయడానికి, మేము డేటాను రెండు పట్టికలుగా విభజించాలి:
ఉద్యోగ గుర్తింపు | ఉద్యోగి పేరు | DeptID |
---|---|---|
Emp1 | జాన్ | Dept001 |
Emp2 | టీనా | Dept003 |
Emp3 | కార్లోస్ | Dept001 |
ఉద్యోగుల పట్టిక నుండి DeptName లక్షణాన్ని తొలగించి, క్రొత్త పట్టిక విభాగాలను సృష్టించండి:
DeptID | DeptName |
---|---|
Dept001 | ఫైనాన్స్ |
Dept002 | మానవ వనరులు |
Dept003 | అమ్మకాలు |
ఇప్పుడు పట్టికలు మధ్య సంబంధాలు పూర్తిగా ఆధారపడి ఉంటాయి, లేదా 2NF లో.
ఎందుకు పూర్తి ఆధారపడటం ముఖ్యమైనది
డేటాబేస్ గుణాల మధ్య పూర్తి ఆధారపడటం డేటా సమగ్రతను నిర్ధారించడానికి మరియు డేటా క్రమరాహిత్యాలను నివారించడానికి సహాయపడుతుంది.
ఉదాహరణకు, పైన పేర్కొన్న విభాగంలో పట్టికను 1NF కు మాత్రమే అనుసరిస్తుంది. ఇక్కడ మళ్ళీ, ఉంది:
ఉద్యోగి | స్థానం |
---|---|
జాన్ | లాస్ ఏంజెల్స్ |
టీనా | లాస్ ఏంజెల్స్ |
టీనా | చికాగో |
టీనాకు రెండు రికార్డులు ఉన్నాయి. మేము రెండింటిని గుర్తించకుండా ఒకదాన్ని నవీకరించినట్లయితే, ఫలితంగా అసంగతమైన డేటా అవుతుంది.
లేదా, మేము ఈ పట్టికలో ఒక ఉద్యోగిని జోడించాలనుకుంటే, ఇంకా మేము ఇంకా తెలియదా? స్థాన లక్షణం NULL విలువలకు అనుమతించకపోతే కొత్త ఉద్యోగిని చేర్చడానికి మేము అనుమతించకపోవచ్చు.
ఇది సాధారణీకరణ విషయానికి వస్తే పూర్తి పరాధీనత మొత్తం చిత్రం కాదు. మీరు మీ డేటాబేస్ మూడవ సాధారణ ఫారం (3NF) లో ఉన్నట్లు నిర్ధారించుకోవాలి.