8.1 డీనార్మలైజేషన్ ఎందుకు అవసరం?
పెద్ద పట్టికల మధ్య అత్యంత గణనపరంగా ఖరీదైన ఆపరేషన్ చేరడం. దీని ప్రకారం, ఒక ప్రశ్నలో అనేక మిలియన్ల వరుసలను కలిగి ఉన్న అనేక పట్టికలను "వెంటిలేట్" చేయాల్సిన అవసరం ఉంటే, అప్పుడు DBMS అటువంటి ప్రాసెసింగ్లో చాలా సమయాన్ని వెచ్చిస్తుంది.
ఈ సమయంలో వినియోగదారు కాఫీ తాగడానికి దూరంగా వెళ్లవచ్చు. ప్రాసెసింగ్ యొక్క ఇంటరాక్టివిటీ ఆచరణాత్మకంగా అదృశ్యమవుతుంది మరియు బ్యాచ్ ప్రాసెసింగ్కు చేరుకుంటుంది. ఇంకా చెత్తగా, బ్యాచ్ మోడ్లో, వినియోగదారుడు ఉదయం ముందు రోజు అభ్యర్థించిన మొత్తం డేటాను స్వీకరిస్తాడు మరియు ప్రశాంతంగా వారితో పని చేస్తాడు, సాయంత్రం కోసం కొత్త అభ్యర్థనలను సిద్ధం చేస్తాడు.
భారీ చేరికల పరిస్థితిని నివారించడానికి, పట్టికలు డీనార్మలైజ్ చేయబడతాయి. కానీ ఎలాగూ కాదు. డేటా గిడ్డంగుల కోసం పట్టికలను నిర్మించే నియమాల ప్రకారం లావాదేవీలపరంగా డీనార్మలైజ్ చేయబడిన పట్టికలను "సాధారణీకరించబడింది"గా పరిగణించడానికి మిమ్మల్ని అనుమతించే కొన్ని నియమాలు ఉన్నాయి.
విశ్లేషణాత్మక ప్రాసెసింగ్లో "సాధారణం"గా పరిగణించబడే రెండు ప్రధాన పథకాలు ఉన్నాయి: "స్నోఫ్లేక్" మరియు "స్టార్". పేర్లు సారాన్ని బాగా ప్రతిబింబిస్తాయి మరియు సంబంధిత పట్టికల చిత్రం నుండి నేరుగా అనుసరిస్తాయి.
రెండు సందర్భాల్లో, వాస్తవ పట్టికలు అని పిలవబడేవి స్కీమా యొక్క కేంద్ర మూలకం, ఈవెంట్లు, లావాదేవీలు, పత్రాలు మరియు విశ్లేషకుడికి ఆసక్తి కలిగించే ఇతర ఆసక్తికరమైన విషయాలు ఉంటాయి. అయితే లావాదేవీల డేటాబేస్లో ఒక పత్రం అనేక పట్టికలలో (కనీసం రెండు: శీర్షికలు మరియు కంటెంట్ వరుసలు) "స్మెర్ చేయబడి ఉంటే", నిజానికి పట్టికలో ఒక పత్రం, మరింత ఖచ్చితంగా, దానిలోని ప్రతి అడ్డు వరుసలు లేదా సమూహ వరుసల సమితికి అనుగుణంగా ఉంటుంది. ఒక రికార్డుకు.
పై రెండు పట్టికలను డీనార్మలైజ్ చేయడం ద్వారా దీన్ని చేయవచ్చు.
![](https://cdn.codegym.cc/images/article/07bd1f49-716c-4226-8326-886e52968e41/1024.jpeg)
8.2 డీనార్మలైజేషన్ ఉదాహరణ
ప్రశ్నను అమలు చేయడం DBMSకి ఎంత సులభమో ఇప్పుడు మీరు విశ్లేషించవచ్చు, ఉదాహరణకు, ఈ క్రింది రకం: పిరోజ్కి LLC మరియు Vatrushki CJSC యొక్క క్లయింట్లకు ఈ కాలానికి పిండి విక్రయాల పరిమాణాన్ని నిర్ణయించడం.
సాధారణ లావాదేవీల డేటాబేస్లో:
SELECT
SUM(dl.qty) AS total qty, SUM(dl.price) AS total amount, c.name
FROM
docs d
INNER JOIN doc lines dl ON d.id doc = dl.id doc
INNER JOIN customers c ON d.id customer = c.id customer
INNER JOIN products p ON dl.id product = p.id product
WHERE
c.name IN (’Pirozhki LLC’, ’Vatrushki CJSC’) AND
p.name = ’Flour’ AND
d.date BETWEEN ’2014-01-01’ AND ’2014-02-01’
GROUP BY c.name
విశ్లేషణాత్మక డేటాబేస్లో:
SELECT
SUM(s.qty) AS total_qty, SUM(s.amount) AS total_amount, c.name
FROM
sales s
INNER JOIN customers c ON d.id_customer = c.id_customer
INNER JOIN products p ON dl.id_product = p.id_product
WHERE
c.name IN ('Pirozhki LLC', 'Vatrushki CJSC') AND
p.name = 'Flour' AND
s.date BETWEEN '2014-01-01' AND '2014-02-01'
GROUP BY c.name
రెండు టేబుల్ల డాక్యుమెంట్లు మరియు మిలియన్ల వరుసలతో వాటి కంపోజిషన్ల మధ్య భారీగా చేరడానికి బదులుగా, DBMS ఫాక్ట్ టేబుల్తో నేరుగా పనిని పొందుతుంది మరియు లైట్ చిన్న సహాయక పట్టికలతో కలుస్తుంది, మీరు ఐడెంటిఫైయర్లను తెలుసుకోవడం లేకుండా కూడా చేయవచ్చు.
SELECT
SUM(s.qty) AS total_qty, SUM(s.amount) AS total_amount, s.id_customer
FROM
sales s
WHERE
s.id_customer IN (1025, 20897) AND
s.id_product = 67294 AND
s.date BETWEEN '2014-01-01' AND '2014-02-01'
GROUP BY s.id_customer
"స్టార్" మరియు "స్నోఫ్లేక్" పథకాలకు తిరిగి వెళ్దాం. మొదటి చిత్రం యొక్క తెర వెనుక కస్టమర్ల పట్టికలు, వారి సమూహాలు, దుకాణాలు, విక్రేతలు మరియు, వాస్తవానికి, వస్తువులు ఉన్నాయి. డీనార్మలైజ్ చేయబడినప్పుడు, కొలతలు అని పిలువబడే ఈ పట్టికలు కూడా వాస్తవ పట్టికకు జోడించబడతాయి. వాస్తవ పట్టిక ఇతర కొలతలకు (రెండవ స్థాయి మరియు అంతకంటే ఎక్కువ కొలతలు) లింక్లను కలిగి ఉన్న డైమెన్షన్ పట్టికలను సూచిస్తే, అటువంటి స్కీమాను "స్నోఫ్లేక్" అంటారు.
![](https://cdn.codegym.cc/images/article/e81a6085-ffdc-4b0c-9645-cdd17b1c1691/1024.jpeg)
మీరు చూడగలిగినట్లుగా, క్లయింట్ సమూహాల ద్వారా ఫిల్టరింగ్ను కలిగి ఉన్న ప్రశ్నల కోసం, మీరు అదనపు కనెక్షన్ని కలిగి ఉండాలి.
SELECT sum(amount)
FROM sales s
INNER JOIN customers c ON s.id_customer = c.id_customer
WHERE c.id_customer_group IN (1, 2, 10, 55)
ఈ సందర్భంలో, డీనార్మలైజేషన్ కొనసాగుతుంది మరియు రెండవ-స్థాయి కోణాన్ని మొదటిదానికి వదిలివేయవచ్చు, తద్వారా వాస్తవ పట్టికను ప్రశ్నించడం సులభం అవుతుంది.
వాస్తవ పట్టిక రెండవ స్థాయిని కలిగి లేని కొలతలను మాత్రమే సూచించే స్కీమాను స్టార్ స్కీమా అంటారు. కొలత పట్టికల సంఖ్య నక్షత్రంలోని "కిరణాల" సంఖ్యకు అనుగుణంగా ఉంటుంది.
స్టార్ స్కీమా కొలతల క్రమానుగతాన్ని మరియు ఒకే ప్రశ్నలో సంబంధిత పట్టికలను చేరాల్సిన అవసరాన్ని పూర్తిగా తొలగిస్తుంది.
SELECT sum(amount)
FROM sales s
WHERE s.id_customer_group IN (1, 2, 10, 55)
![](https://cdn.codegym.cc/images/article/2abb3172-bf4e-41d9-b687-66c668783596/1024.jpeg)
డీనార్మలైజేషన్ యొక్క ప్రతికూలత ఎల్లప్పుడూ రిడెండెన్సీగా ఉంటుంది , ఇది లావాదేవీ మరియు విశ్లేషణాత్మక అనువర్తనాల్లో డేటాబేస్ పరిమాణంలో పెరుగుదలకు కారణమవుతుంది. "స్నోఫ్లేక్" ను "నక్షత్రం"గా మార్చడానికి పై ఉదాహరణలో సుమారుగా డెల్టాను గణిద్దాం.
ఒరాకిల్ వంటి కొన్ని DBMSలో, డేటాబేస్ స్కీమా నిర్వచనాల స్థాయిలో ప్రత్యేక పూర్ణాంకాల రకాలు లేవు, మీరు తప్పనిసరిగా సాధారణ బూలియన్ రకాన్ని ఉపయోగించాలి numeric(N)
, ఇక్కడ N అనేది నిల్వ చేయబడిన బిట్ల సంఖ్య. అటువంటి సంఖ్య యొక్క నిల్వ పరిమాణం భౌతిక డేటా నిల్వ కోసం డాక్యుమెంటేషన్లో ఇవ్వబడిన ప్రత్యేక సూత్రాన్ని ఉపయోగించి లెక్కించబడుతుంది మరియు ఒక నియమం వలె, ఇది "16 బిట్ పూర్ణాంకం" వంటి తక్కువ-స్థాయి రకాలను 1-3 బైట్లతో మించిపోయింది.
సేల్స్ టేబుల్ డేటా కంప్రెషన్ని ఉపయోగించదు మరియు దాదాపు 500 మిలియన్ అడ్డు వరుసలను కలిగి ఉందని అనుకుందాం మరియు కస్టమర్ గ్రూప్ల సంఖ్య దాదాపు 1000. ఈ సందర్భంలో, మేము 2 బైట్లను ఐడెంటిఫైయర్ రకంగా ఆక్రమించే చిన్న పూర్ణాంకాన్ని (షార్ట్, స్మాల్లింట్) ఉపయోగించవచ్చు id_customer_group
.
మా DBMS రెండు-బైట్ పూర్ణాంకాల రకానికి (ఉదాహరణకు, PostgreSQL, SQL సర్వర్, Sybase మరియు ఇతరాలు) మద్దతు ఇస్తుందని మేము ఊహిస్తాము. ఆపై సంబంధిత కాలమ్ను id_customer_group
సేల్స్ టేబుల్కి జోడించడం వలన దాని పరిమాణం కనీసం పెరుగుతుంది 500 000 000 * 2 = 1 000 000 000 byte ~ 1 GByte
.
8.3 డీనార్మలైజేషన్ ఎప్పుడు అవసరం?
డీనార్మలైజేషన్ ఉపయోగకరంగా ఉండే కొన్ని సాధారణ పరిస్థితులను చూద్దాం.
పెద్ద సంఖ్యలో పట్టిక చేరింది
పూర్తిగా సాధారణీకరించబడిన డేటాబేస్కు సంబంధించిన ప్రశ్నలలో, మీరు తరచుగా ఒక డజను లేదా అంతకంటే ఎక్కువ పట్టికలను చేరవలసి ఉంటుంది. మరియు ప్రతి కనెక్షన్ చాలా వనరు-ఇంటెన్సివ్ ఆపరేషన్. ఫలితంగా, ఇటువంటి అభ్యర్థనలు సర్వర్ వనరులను వినియోగిస్తాయి మరియు నెమ్మదిగా నిర్వహించబడతాయి.
అటువంటి పరిస్థితిలో, ఇది సహాయపడుతుంది:
- పట్టికల సంఖ్యను తగ్గించడం ద్వారా డీనార్మలైజేషన్. చాలా అరుదుగా మార్చబడిన (వారు తరచుగా చెప్పినట్లు, షరతులతో కూడిన స్థిరమైన లేదా సూచన) సమాచారం మరియు అర్థంతో దగ్గరి సంబంధం ఉన్న సమాచారాన్ని కలిగి ఉన్న చిన్న పరిమాణంలో ఉన్న అనేక పట్టికలలో ఒకటిగా కలపడం మంచిది.
- సాధారణంగా, మీరు పెద్ద సంఖ్యలో ప్రశ్నలలో ఐదు లేదా ఆరు కంటే ఎక్కువ పట్టికలలో చేరవలసి వస్తే, మీరు డేటాబేస్ను సాధారణీకరించడాన్ని పరిగణించాలి.
- పట్టికలలో ఒకదానికి అదనపు ఫీల్డ్ని జోడించడం ద్వారా డీనార్మలైజేషన్. ఈ సందర్భంలో, డేటా రిడెండెన్సీ కనిపిస్తుంది, డేటాబేస్ యొక్క సమగ్రతను నిర్వహించడానికి అదనపు చర్యలు అవసరం.
అంచనా విలువలు
తరచుగా, ప్రశ్నలు నెమ్మదిగా ఉంటాయి మరియు చాలా వనరులను వినియోగిస్తాయి, ఇందులో కొన్ని సంక్లిష్ట గణనలు నిర్వహించబడతాయి, ప్రత్యేకించి గ్రూపింగ్లు మరియు మొత్తం ఫంక్షన్లను (సమ్, మ్యాక్స్, మొదలైనవి) ఉపయోగిస్తున్నప్పుడు. తరచుగా ఉపయోగించే (మరియు గణించడం కష్టం) లెక్కించిన డేటాను కలిగి ఉన్న పట్టికకు 1-2 అదనపు నిలువు వరుసలను జోడించడం కొన్నిసార్లు అర్ధమే.
మీరు ప్రతి ఆర్డర్ యొక్క మొత్తం ధరను నిర్ణయించాలనుకుంటున్నారని అనుకుందాం. దీన్ని చేయడానికి, మీరు మొదట ప్రతి ఉత్పత్తి యొక్క ధరను నిర్ణయించాలి (ఫార్ములా "ఉత్పత్తి యూనిట్ల సంఖ్య" * "ఉత్పత్తి యొక్క యూనిట్ ధర" - తగ్గింపు ప్రకారం). ఆ తరువాత, మీరు ఆర్డర్ల ద్వారా ఖర్చులను సమూహపరచాలి.
ఈ ప్రశ్నను అమలు చేయడం చాలా క్లిష్టమైనది మరియు డేటాబేస్ పెద్ద సంఖ్యలో ఆర్డర్ల గురించి సమాచారాన్ని నిల్వ చేస్తే, చాలా సమయం పట్టవచ్చు. అటువంటి ప్రశ్నను అమలు చేయడానికి బదులుగా, మీరు ఆర్డర్ను ఉంచే దశలో దాని ధరను నిర్ణయించవచ్చు మరియు ఆర్డర్ల పట్టికలోని ప్రత్యేక కాలమ్లో నిల్వ చేయవచ్చు. ఈ సందర్భంలో, ఆశించిన ఫలితాన్ని పొందడానికి, ఈ కాలమ్ నుండి ముందుగా లెక్కించిన విలువలను సంగ్రహించడం సరిపోతుంది.
ముందుగా లెక్కించబడిన విలువలను కలిగి ఉన్న నిలువు వరుసను సృష్టించడం వలన ప్రశ్నను అమలు చేస్తున్నప్పుడు చాలా సమయం ఆదా అవుతుంది, కానీ మీరు ఆ కాలమ్లోని డేటాను సకాలంలో అప్డేట్ చేయడం అవసరం.
పొడవాటి అంచు
మేము పొడవైన ఫీల్డ్లను (బ్లాబ్, లాంగ్, మొదలైనవి) కలిగి ఉన్న డేటాబేస్లో పెద్ద పట్టికలను కలిగి ఉన్నట్లయితే, మేము పొడవైన ఫీల్డ్లను ప్రత్యేక పట్టికకు తరలించినట్లయితే అటువంటి పట్టికకు ప్రశ్నల అమలును తీవ్రంగా వేగవంతం చేయవచ్చు. మేము డేటాబేస్లో ఫోటోల కేటలాగ్ను సృష్టించాలని కోరుకుంటున్నాము, అలాగే ఫోటోలు బొట్టు ఫీల్డ్లలో (ప్రొఫెషనల్ క్వాలిటీ, హై రిజల్యూషన్ మరియు తగిన సైజు) నిల్వ చేయడం కూడా అవసరం. సాధారణీకరణ కోణం నుండి, క్రింది పట్టిక నిర్మాణం ఖచ్చితంగా సరైనది:
- ఫోటో ID
- రచయిత ID
- కెమెరా మోడల్ ID
- ఫోటో కూడా (బొట్టు ఫీల్డ్)
మరియు ఇప్పుడు ప్రశ్న ఎంతసేపు నడుస్తుందో ఊహించుకుందాం, ఏ రచయిత అయినా తీసిన ఫోటోల సంఖ్యను లెక్కించండి ...
అటువంటి పరిస్థితిలో సరైన పరిష్కారం (సాధారణీకరణ సూత్రాలను ఉల్లంఘించినప్పటికీ) కేవలం రెండు ఫీల్డ్లతో కూడిన మరొక పట్టికను సృష్టించడం - ఫోటో ID మరియు ఫోటోతో కూడిన బొట్టు ఫీల్డ్. అప్పుడు ప్రధాన పట్టిక నుండి ఎంపికలు (దీనిలో ఇకపై భారీ బొట్టు ఫీల్డ్ లేదు) తక్షణమే వెళ్తుంది, అయితే మనం ఫోటోను చూడాలనుకున్నప్పుడు, వేచి చూద్దాం ...
డీనార్మలైజేషన్ సమర్థించబడినప్పుడు ఎలా గుర్తించాలి?
8.4 డీనార్మలైజేషన్ యొక్క లాభాలు మరియు నష్టాలు
కొన్ని దశలు సమర్థించబడతాయో లేదో నిర్ణయించడానికి ఒక మార్గం ఖర్చులు మరియు సాధ్యమయ్యే ప్రయోజనాల పరంగా విశ్లేషణ నిర్వహించడం. డీనార్మలైజ్డ్ డేటా మోడల్ ధర ఎంత?
అవసరాలను నిర్ణయించండి (మేము ఏమి సాధించాలనుకుంటున్నాము) → డేటా అవసరాలను నిర్ణయించండి (మనం అనుసరించాల్సినవి) → ఈ అవసరాలను సంతృప్తిపరిచే కనీస దశను కనుగొనండి → అమలు ఖర్చులను లెక్కించండి → అమలు చేయండి.
డిస్క్ స్థలం, ఈ నిర్మాణాన్ని నిర్వహించడానికి అవసరమైన వనరులు మరియు ఈ ప్రక్రియను నిర్వహించడంలో సమయం ఆలస్యమైన కారణంగా కోల్పోయిన అవకాశాల వంటి భౌతిక అంశాలను ఖర్చులు కలిగి ఉంటాయి. డీనార్మలైజేషన్ కోసం మీరు చెల్లించాలి. డీనార్మలైజ్డ్ డేటాబేస్ డేటా రిడెండెన్సీని పెంచుతుంది, ఇది పనితీరును మెరుగుపరుస్తుంది కానీ సంబంధిత డేటాను నియంత్రించడానికి మరింత కృషి అవసరం. అప్లికేషన్లను సృష్టించే ప్రక్రియ మరింత కష్టమవుతుంది, ఎందుకంటే డేటా పునరావృతమవుతుంది మరియు ట్రాక్ చేయడం కష్టమవుతుంది. అదనంగా, రెఫరెన్షియల్ సమగ్రతను అమలు చేయడం సులభం కాదు - సంబంధిత డేటా వివిధ పట్టికలుగా విభజించబడింది.
ప్రయోజనాలు వేగవంతమైన ప్రశ్న పనితీరు మరియు వేగవంతమైన ప్రతిస్పందనను పొందగల సామర్థ్యాన్ని కలిగి ఉంటాయి. మీరు పెరిగిన నిర్గమాంశ, కస్టమర్ సంతృప్తి మరియు ఉత్పాదకత, అలాగే బాహ్య డెవలపర్ సాధనాలను మరింత సమర్థవంతంగా ఉపయోగించడం వంటి ఇతర ప్రయోజనాలను కూడా పొందవచ్చు.
అభ్యర్థన రేటు మరియు పనితీరు స్థిరత్వం
ఉదాహరణకు, ఒక ఎంటర్ప్రైజ్ ద్వారా ప్రతిరోజూ ఉత్పన్నమయ్యే 1,000 ప్రశ్నలలో 72% సారాంశ-స్థాయి ప్రశ్నలు, డ్రిల్-డౌన్ ప్రశ్నలు కాదు. సారాంశ పట్టికను ఉపయోగిస్తున్నప్పుడు, ప్రశ్నలు 4 నిమిషాలకు బదులుగా దాదాపు 6 సెకన్లలో అమలు చేయబడతాయి, ఫలితంగా 3,000 నిమిషాల తక్కువ ప్రాసెసింగ్ సమయం ఉంటుంది. ప్రతి వారం పివోట్ టేబుల్లను నిర్వహించడానికి 100 నిమిషాలు సర్దుబాటు చేసిన తర్వాత కూడా, వారానికి 2,500 నిమిషాలు ఆదా అవుతుంది, ఇది పివోట్ టేబుల్ను రూపొందించడాన్ని సమర్థిస్తుంది. కాలక్రమేణా, చాలా ప్రశ్నలు సారాంశ డేటాకు కాకుండా వివరణాత్మక డేటాకు పరిష్కరించబడవచ్చు. సారాంశం పట్టికను ఉపయోగించే తక్కువ ప్రశ్నలు, ఇతర ప్రక్రియలను ప్రభావితం చేయకుండా దాన్ని వదలడం సులభం.
మరియు…
ఆప్టిమైజేషన్లో తదుపరి దశను తీసుకోవాలా వద్దా అని నిర్ణయించేటప్పుడు పైన జాబితా చేయబడిన ప్రమాణాలు మాత్రమే పరిగణించబడవు. వ్యాపార ప్రాధాన్యతలు మరియు తుది వినియోగదారు అవసరాలతో సహా ఇతర అంశాలను పరిగణించాలి. అన్ని అభ్యర్థనలను కొన్ని సెకన్లలో పూర్తి చేయాలనుకునే వినియోగదారుల ఆవశ్యకత ద్వారా సిస్టమ్ ఆర్కిటెక్చర్ ఎలా ప్రభావితమవుతుందో సాంకేతిక దృక్కోణం నుండి వినియోగదారులు అర్థం చేసుకోవాలి. ఈ అవగాహనను సాధించడానికి సులభమైన మార్గం అటువంటి పట్టికలను రూపొందించడానికి మరియు నిర్వహించడానికి సంబంధించిన ఖర్చులను వివరించడం.
8.5 డీనార్మలైజేషన్ను ఎలా సమర్థవంతంగా అమలు చేయాలి.
వివరణాత్మక పట్టికలను సేవ్ చేయండి
వ్యాపారానికి ముఖ్యమైన డేటాబేస్ యొక్క సామర్థ్యాలను పరిమితం చేయకుండా ఉండటానికి, సహజీవనం యొక్క వ్యూహాన్ని అనుసరించడం అవసరం, భర్తీ చేయడం కాదు, అనగా లోతైన విశ్లేషణ కోసం వివరణాత్మక పట్టికలను ఉంచడం, వాటికి అసాధారణమైన నిర్మాణాలను జోడించడం. ఉదాహరణకు, హిట్ కౌంటర్. వ్యాపారం కోసం, మీరు వెబ్ పేజీకి వచ్చిన సందర్శనల సంఖ్యను తెలుసుకోవాలి. కానీ విశ్లేషణ కోసం (కాలం వారీగా, దేశం వారీగా...) మాకు చాలా వివరమైన డేటా అవసరం అవుతుంది - ప్రతి సందర్శన గురించి సమాచారంతో కూడిన పట్టిక.
ట్రిగ్గర్లను ఉపయోగించడం
integrity
డూప్లికేట్ డేటా యొక్క సమగ్రతను సంరక్షించడానికి డేటాబేస్ ట్రిగ్గర్లను ఉపయోగించడం ద్వారా డేటాబేస్ నిర్మాణాన్ని డీనార్మలైజ్ చేయడం మరియు సాధారణీకరణ ప్రయోజనాలను పొందడం సాధ్యమవుతుంది .
ఉదాహరణకు, లెక్కించబడిన ఫీల్డ్ను జోడించేటప్పుడు, లెక్కించబడిన ఫీల్డ్ ఆధారపడిన ప్రతి నిలువు వరుస, ఒకే నిల్వ చేయబడిన విధానాన్ని పిలిచే ట్రిగ్గర్తో వేలాడదీయబడుతుంది (ఇది ముఖ్యమైనది!), ఇది లెక్కించిన ఫీల్డ్కు అవసరమైన డేటాను వ్రాస్తుంది. లెక్కించబడిన ఫీల్డ్ ఆధారపడిన నిలువు వరుసలలో దేనినీ దాటవేయకుండా ఉండటం మాత్రమే అవసరం.
సాఫ్ట్వేర్ మద్దతు
మీరు అంతర్నిర్మిత ట్రిగ్గర్లు మరియు నిల్వ చేసిన విధానాలను ఉపయోగించకుంటే, అప్లికేషన్ డెవలపర్లు డీనార్మలైజ్ చేయబడిన డేటాబేస్లో డేటా యొక్క స్థిరత్వాన్ని నిర్ధారించడంలో జాగ్రత్త తీసుకోవాలి.
ట్రిగ్గర్లతో సారూప్యతతో, మార్చబడే ఫీల్డ్పై ఆధారపడిన అన్ని ఫీల్డ్లను అప్డేట్ చేసే ఒక ఫంక్షన్ ఉండాలి.
ముగింపులు
డీనార్మలైజ్ చేస్తున్నప్పుడు, డేటాబేస్ యొక్క వేగాన్ని పెంచడం మరియు అస్థిరమైన డేటా ప్రమాదాన్ని పెంచడం, ప్రోగ్రామర్లు వ్రాసే జీవితాన్ని సులభతరం చేయడం Select-s
మరియు డేటాబేస్ పాపులేషన్ మరియు డేటా అప్డేట్లను అందించే వారి పనిని క్లిష్టతరం చేయడం మధ్య సమతుల్యతను కాపాడుకోవడం చాలా ముఖ్యం. అందువల్ల, డేటాబేస్ను చాలా జాగ్రత్తగా, చాలా ఎంపికగా, అది అనివార్యమైన చోట మాత్రమే డీనార్మలైజ్ చేయడం అవసరం.
డీనార్మలైజేషన్ యొక్క లాభాలు మరియు నష్టాలను ముందుగానే లెక్కించడం అసాధ్యం అయితే, మొదట్లో సాధారణీకరించిన పట్టికలతో మోడల్ను అమలు చేయడం అవసరం, ఆపై మాత్రమే సమస్యాత్మక ప్రశ్నలను ఆప్టిమైజ్ చేయడానికి, డీనార్మలైజేషన్ చేయండి.
డీనార్మలైజేషన్ను క్రమంగా ప్రవేశపెట్టడం చాలా ముఖ్యం మరియు వివిధ టేబుల్ల నుండి సంబంధిత డేటాను పదేపదే పొందుతున్న సందర్భాల్లో మాత్రమే. గుర్తుంచుకోండి, డేటాను నకిలీ చేసేటప్పుడు, రికార్డుల సంఖ్య పెరుగుతుంది, కానీ రీడ్ల సంఖ్య తగ్గుతుంది. అనవసరమైన మొత్తం ఎంపికలను నివారించడానికి లెక్కించిన డేటాను నిలువు వరుసలలో నిల్వ చేయడం కూడా సౌకర్యంగా ఉంటుంది.
GO TO FULL VERSION