సాధారణీకరణను నిర్ధారించడానికి సహాయపడే ట్రాన్సమిటీ డిపెండెన్సీలను నివారించండి
ఒక డేటాబేస్లో ఒక సక్రియాత్మక డిపెండెన్సీ అనేది ఫంక్షనల్ డిపెండెన్సీని కలిగించే అదే పట్టికలో విలువలు మధ్య పరస్పర సంబంధం. మూడో సాధారణ రూపం (3NF) యొక్క సాధారణ ప్రామాణీకరణ సాధించడానికి, మీరు ఏవైనా సంతులిత డిపెండెన్సీని తొలగించాలి.
దాని స్వభావం ద్వారా, ఒక సంతులిత డిపెండెన్సీకి మూడు లేదా అంతకంటే ఎక్కువ లక్షణాలను (లేదా డేటాబేస్ కాలమ్లు) వాటి మధ్య క్రియాత్మక పరాధీనత కలిగివుంటాయి, అంటే ఒక పట్టికలో కాలమ్ A ని కాలమ్ B పై ఆధారపడుతుంది.
ఇది ఎలా పని చేస్తుందో చూద్దాం.
ట్రాన్స్మిడియల్ డిపెండెన్సీ ఉదాహరణ
రచయితలు
Author_ID | రచయిత | పుస్తకం | Author_Nationality |
---|---|---|---|
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | ముగించేవాడి ఆట | సంయుక్త రాష్ట్రాలు |
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | ముగించేవాడి ఆట | సంయుక్త రాష్ట్రాలు |
Auth_002 | మార్గరెట్ అట్వుడ్ | ది హ్యాండ్మైడ్స్ టేల్ | కెనడా |
పైన AUTHORS ఉదాహరణలో:
- బుక్ → రచయిత : ఇక్కడ, పుస్తకం లక్షణం రచయిత లక్షణాన్ని నిర్ణయిస్తుంది. పుస్తకం పేరు మీకు తెలిస్తే, మీరు రచయిత పేరును తెలుసుకోవచ్చు. ఏమైనప్పటికీ, రచయిత పుస్తకాన్ని గుర్తించలేదు, ఎందుకంటే ఒక రచయిత బహుళ పుస్తకాలను వ్రాయవచ్చు. ఉదాహరణకు, మనకు రచయిత పేరు ఆర్సన్ స్కాట్ కార్డ్ తెలిసినందున, మేము ఇప్పటికీ పుస్తకం పేరు తెలియదు.
- రచయిత → రచయిత_జాతీయత : అదేవిధంగా, రచయిత లక్షణం Author_Nationality ను నిర్ణయిస్తుంది, కానీ ఇతర మార్గం కాదు; మనము జాతీయతను తెలిస్తే కేవలం రచయితని గుర్తించలేము.
కానీ ఈ పట్టిక సమ్మతమైన డిపెందెన్సీని పరిచయం చేస్తుంది:
- పుస్తకం → Author_Nationality: మేము పుస్తకం పేరు తెలిస్తే, మేము రచయిత కాలమ్ ద్వారా జాతీయత నిర్ణయిస్తుంది.
ట్రాన్సియరిటీ డిపెండెన్సీలను తప్పించడం
మూడో సాధారణ ఆకృతిని నిర్ధారించడానికి, మృదువైన పరాధీనతను తొలగించండి.
మేము రచయితల పట్టిక నుండి బుక్ కాలమ్ని తీసివేయడం ద్వారా మరియు ఒక ప్రత్యేక పుస్తకాల పట్టికను సృష్టించడం ద్వారా ప్రారంభించవచ్చు:
BOOKS
Book_ID | పుస్తకం | Author_ID |
---|---|---|
Book_001 | ముగించేవాడి ఆట | Auth_001 |
Book_001 | మైండ్ పిల్లలు | Auth_001 |
Book_002 | ది హ్యాండ్మైడ్స్ టేల్ | Auth_002 |
రచయితలు
Author_ID | రచయిత | Author_Nationality |
---|---|---|
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | సంయుక్త రాష్ట్రాలు |
Auth_002 | మార్గరెట్ అట్వుడ్ | కెనడా |
దీనిని పరిష్కరించావా? ఇప్పుడు మన పరతంత్రతను పరిశీలిద్దాం:
BOOKS పట్టిక :
- Book_ID → బుక్: పుస్తకము Book_ID పై ఆధారపడి ఉంటుంది.
- ఈ పట్టికలో ఇతర ఆధారాలు లేవు, కాబట్టి మేము ఓకే. విదేశీ కీ ఆథరైయిడ్ ఈ పట్టికను AUTHORS పట్టికకు దాని ప్రాథమిక కీ Author_ID ద్వారా లింక్ చేస్తుంది . అనుబంధ డేటాబేస్ల యొక్క కీలకమైన రూపాన్ని, ఒక సంక్లిష్ట పరతంత్రతను నివారించడానికి మేము ఒక సంబంధాన్ని సృష్టించాము.
AUTHORS పట్టిక :
- Author_ID → రచయిత: రచయిత Author_ID పై ఆధారపడి ఉంటుంది.
- రచయిత → రచయిత_జాతీయత: జాతీయత రచయిత ద్వారా నిర్ణయించబడుతుంది.
- Author_ID → Author_Nationality: జాతీయత రచయిత్రి లక్షణం ద్వారా Author_ID నుండి నిర్ణయించబడుతుంది. మేము ఇంకా సందిగ్ధంగా ఆధారపడతాము.
ఈ డేటాను సాధారణీకరించడానికి మేము మూడవ పట్టికని జోడించాలి:
దేశాలు
Country_ID | దేశం |
---|---|
Coun_001 | సంయుక్త రాష్ట్రాలు |
Coun_002 | కెనడా |
రచయితలు
Author_ID | రచయిత | Country_ID |
---|---|---|
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | Coun_001 |
Auth_002 | మార్గరెట్ అట్వుడ్ | Coun_002 |
ఇప్పుడు మనము మూడు పట్టికలు కలిగి, పట్టికల మధ్య అనుసంధానము చేసేందుకు విదేశీ కీల వినియోగాన్ని తయారు చేస్తున్నాము:
- BOOK పట్టిక యొక్క విదేశీ కీ రచయిత _ID AUTHORS పట్టికలో రచయితకు ఒక పుస్తకాన్ని కలుపుతుంది.
- AUTHORS పట్టిక యొక్క విదేశీ కీ Country_ID COUNTRIES పట్టికలో ఒక దేశానికి రచయితను కలుపుతుంది.
- ఈ రూపకల్పనలో మరొక పట్టికకు లింక్ చేయవలసిన అవసరం లేనందున COUNTRIES పట్టికకు విదేశీ కీ లేదు.
ఎందుకు ట్రాన్స్మిడియల్ డిపెండెన్సీలు బాడ్ డేటాబేస్ డిజైన్
3NF ను నిర్ధారించడానికి సకర్షనీయ డిపెండెన్సీలను నివారించే విలువ ఏమిటి? మన మొదటి టేబుల్ను మళ్ళీ పరిగణలోకి తీసుకుందాం మరియు అది సృష్టించే సమస్యలను చూడండి:
రచయితలు
Author_ID | రచయిత | పుస్తకం | Author_Nationality |
---|---|---|---|
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | ముగించేవాడి ఆట | సంయుక్త రాష్ట్రాలు |
Auth_001 | ఆర్సన్ స్కాట్ కార్డ్ | మైండ్ పిల్లలు | సంయుక్త రాష్ట్రాలు |
Auth_002 | మార్గరెట్ అట్వుడ్ | ది హ్యాండ్మైడ్స్ టేల్ | కెనడా |
ఈ రకమైన రూపకల్పన డేటా క్రమరాహిత్యాలు మరియు అస్థిరతలకు దోహదం చేస్తుంది, ఉదాహరణకు:
- మీరు రెండు పుస్తకాలను "చిల్డ్రన్ ఆఫ్ ది మైండ్" మరియు "ఎండర్స్ గేమ్" లను తొలగించినట్లయితే, మీరు రచయిత "ఓర్సన్ స్కాట్ కార్డ్" మరియు అతని జాతీయత పూర్తిగా డేటాబేస్ నుండి తొలగించబడుతుంది.
- మీరు ఒక పుస్తకాన్ని చేర్చకపోతే మీరు కొత్త రచయితను డేటాబేస్లో చేర్చలేరు; రచయిత ఇంకా ప్రచురింపబడకపోతే లేదా ఆమె వ్రాసిన పుస్తకం పేరు మీకు తెలియదా?
- "ఆర్సన్ స్కాట్ కార్డు" అతని పౌరసత్వాన్ని మార్చినట్లయితే, మీరు కనిపించే అన్ని రికార్డులలో దానిని మార్చవలసి ఉంటుంది. అదే రచయితతో బహుళ రికార్డులను కలిగి ఉండక సరికాని డేటాకు దారి తీయవచ్చు: డేటా ఎంట్రీ వ్యక్తి గ్రహించలేకపోతే, అతడికి బహుళ రికార్డులు ఉన్నాయి మరియు ఒకే రికార్డులో డేటాను మార్చగలదా?
- పూర్తిగా రచయితను తొలగించకుండా "హ్యాండ్మైడ్స్ టేల్" వంటి పుస్తకాన్ని మీరు తొలగించలేరు.
ఇవి కేవలం సాధారణ కారణాలు, మరియు సంతులిత ఆధారపడాన్ని తప్పించడం, డేటాను రక్షించడం మరియు స్థిరత్వం నిర్ధారించడానికి కొన్ని కారణాలు.