1.1 పరిచయం
డేటాబేస్ రూపకల్పన అనేది జావా ప్రాజెక్ట్ యొక్క ఆర్కిటెక్చర్ రూపకల్పనకు కొంతవరకు సమానంగా ఉంటుంది. మీరు మొత్తం డేటాను రెండు పట్టికలలో ఉంచవచ్చు లేదా మీరు స్కీమాలు మరియు డజన్ల కొద్దీ పట్టికల నుండి అందమైన డేటా నిర్మాణాన్ని రూపొందించవచ్చు.
డేటాబేస్ రూపకల్పన చేసేటప్పుడు డెవలపర్ సాధారణంగా ఎదుర్కొనే పనులు ఇక్కడ ఉన్నాయి:
- అవసరమైన సమాచారం మొత్తం డేటాబేస్లో నిల్వ చేయబడిందని నిర్ధారిస్తుంది.
- అవసరమైన అన్ని అభ్యర్థనలపై డేటాను పొందే అవకాశాన్ని నిర్ధారించడం.
- డేటా యొక్క రిడెండెన్సీ మరియు డూప్లికేషన్ను తగ్గించడం.
- డేటాబేస్ సమగ్రతను నిర్ధారించడం
- డేటా యాక్సెస్ వేగం ఆప్టిమైజేషన్
గుర్తుంచుకోవలసిన ప్రధాన విషయం ఏమిటంటే, మీరు ఆదర్శవంతమైన డేటాబేస్ నిర్మాణాన్ని చేయలేరు, ఎందుకంటే. ఇది, మీ కోడ్ లాగా, నిరంతరం మారుతుంది. మీ డేటాబేస్ నిర్మాణాన్ని రూపొందించేటప్పుడు మీరు గుర్తుంచుకోవలసిన మూడు విషయాలు ఉన్నాయి:
- నిర్మాణం తగినంతగా ఉండాలి.
- ఎదుటివారికి అర్థమయ్యేలా ప్రతిదానిలో లాజిక్ ఉండాలి.
- అకాల ఆప్టిమైజేషన్ అన్ని చెడులకు మూలం.
మీరు ప్రపంచంలోని అత్యుత్తమ డేటాబేస్ నిర్మాణాన్ని తయారు చేయవలసిన అవసరం లేదు . ఆమె ఇంకా మారుతుంది. మీ డేటాబేస్ నిర్మాణంలో 20 మార్పుల తర్వాత, దాన్ని గుర్తించడం చాలా సులభం అని నిర్ధారించుకోవడం మీ పని.
మీ పని యొక్క మొదటి సంవత్సరాల్లో చాలా మటుకు, మొదటి నుండి బేస్ రూపకల్పన చేయడానికి ఎవరూ మిమ్మల్ని విశ్వసించరు. మీరు ఇప్పటికే ఉన్న స్కీమాకు మార్పులు చేస్తున్నారు. ఇది ఏ సూత్రాల ఆధారంగా ఏర్పాటు చేయబడిందో అర్థం చేసుకోవడానికి మరియు వాటికి కట్టుబడి ఉండటానికి మీరు ప్రయత్నించాలి . వారి చార్టర్తో, వారు వేరొకరి ఆశ్రమంలోకి ఎక్కరు.
అవసరమైనంత వరకు డేటాబేస్ను ఆప్టిమైజ్ చేయవద్దు . పట్టికలో కేవలం రెండు వందల వరుసలు మాత్రమే ఉన్నట్లయితే, చాలా మటుకు DBMS దానిని మెమరీలో ఉంచుతుంది మరియు దానికి సంబంధించిన ప్రశ్నలను కాష్ చేస్తుంది.
మరోవైపు, మీరు ముఖ్యమైన అభ్యర్థనల పనిని పదుల లేదా వందల సార్లు వేగవంతం చేయగలరు. మరియు మీరు దీన్ని ఎలా చేయాలో తెలుసుకుంటే మంచిది. మొదటి సంవత్సరంలో ఉన్నత పాఠశాలలో వారు ఎలా చెబుతారు? "నీకు స్కూల్లో నేర్పించినవన్నీ మర్చిపో..."
డేటాబేస్ సాధారణీకరణ అంటే ఏమిటో మీకు తెలిస్తే, నేను మిమ్మల్ని సంతోషపెట్టడానికి తొందరపడతాను, మీ పనిలో మీరు డీ-నార్మలైజేషన్తో ఎక్కువగా వ్యవహరిస్తారు . ప్రాజెక్ట్ యొక్క అభయారణ్యాలకు డేటాబేస్ వేగం కంటే ముఖ్యమైనది ఏదీ లేదు. మరియు, డేటాబేస్ నుండి డేటా ఎంపికను వేగవంతం చేయడానికి, మీరు 200 (!) పట్టికలను ఒకటిగా (భయంకరమైన రిడెండెన్సీతో) కలపాలి, మీరు దీన్ని చేయాల్సి ఉంటుంది.
1.2 లైబ్రరీ డిజైన్
సబ్జెక్ట్ ఏరియాలో కొంచెం డైవ్ చేద్దాం మరియు సాధారణ పుస్తక లైబ్రరీ వలె సరళమైనదాన్ని ఉపయోగించి డేటాబేస్ డిజైన్ గురించి ఆలోచించండి.
ఏదైనా లైబ్రరీ యొక్క ప్రధాన పని బుక్ ఫండ్ యొక్క ప్రాసెసింగ్. సిస్టమ్ వినియోగదారుల యొక్క మూడు ప్రధాన సమూహాలను వేరు చేయడం సులభం: రీడర్, లైబ్రేరియన్, అడ్మినిస్ట్రేటర్ . ప్రతి కార్యకలాపం వినియోగ కేసు రేఖాచిత్రంలో చూపబడింది.
![](https://cdn.codegym.cc/images/article/ce739b07-800a-4e3c-a436-b40d3c54ea1d/512.jpeg)
ఇప్పటికే ఇప్పుడు, భవిష్యత్ డేటాబేస్ యొక్క కొన్ని ఎంటిటీలు మరియు సంబంధాలను వేరు చేయవచ్చు:
![](https://cdn.codegym.cc/images/article/b7373320-28d3-4fd8-9b62-a75c6102299f/1024.jpeg)
ఈ విధానంతో, పుస్తకంతో రీడర్ను ఎలా కనెక్ట్ చేయాలో స్పష్టంగా లేదు (పాఠకుడికి “జారీ / రిసెప్షన్” సంబంధంలో అవగాహన లేదు. పుస్తకానికి అనేక కాపీలు ఉంటే, అది చాలా మంది పాఠకులకు జారీ చేయబడుతుంది. కూడా పుస్తకాన్ని ఒక కాపీగా అర్థం చేసుకున్నట్లయితే, ప్రస్తుత పాఠకుల పుస్తకాల పట్టికలో సేవ్ చేసినప్పుడు, ఈ పుస్తకాన్ని ఇంతకు ముందు ఎవరు (మరియు ఎన్ని సార్లు) తీసుకున్నారు అనే దాని గురించి సమాచారాన్ని పొందడం అసాధ్యం.
పరిష్కారం ఒక అదనపు ఎంటిటీని పరిచయం చేయడం కావచ్చు - పుస్తకాన్ని జారీ చేయడానికి ఒక కార్డు. పుస్తకాన్ని పాఠకుడికి జారీ చేసినప్పుడు, ఒక కార్డు సృష్టించబడుతుంది మరియు పుస్తకాన్ని అందజేసినప్పుడు, సంబంధిత గుర్తు దానిపై ఉంచబడుతుంది. ఈ కార్డుల సహాయంతో, ప్రతి వినియోగదారు యొక్క అప్పులు నిర్ణయించబడతాయి మరియు పుస్తకాల వినియోగంపై గణాంకాలు లెక్కించబడతాయి. రీడర్ ద్వారా సాహిత్యాన్ని బుక్ చేస్తున్నప్పుడు, ఒక కార్డ్ కూడా ప్రారంభించబడుతుంది; బుక్ చేసిన సాహిత్యాన్ని పాఠకుడు నిర్దిష్ట వ్యవధిలో తీసుకోకపోతే, కార్డ్ నాశనం అవుతుంది. పాఠకుడు బుక్ చేసుకోగలిగే పుస్తకాల సంఖ్యపై పరిమితి ఉంది.
సాహిత్యాన్ని ఎంచుకున్నప్పుడు, రచయిత, శీర్షిక, ప్రచురణ సంవత్సరం ద్వారా శోధన ఫలితాలను ఫిల్టర్ చేయగల సామర్థ్యంతో వినియోగదారు సాహిత్య కేటలాగ్ను వీక్షిస్తారు.
లైబ్రరీలోని అన్ని పుస్తకాల కోసం గణాంకాలను లెక్కించడం సాధ్యపడుతుంది, అయితే నిర్దిష్ట కాలానికి పుస్తకం యొక్క జారీ చేయబడిన కాపీల సంఖ్య. మీరు గణన నిర్వహించబడే కనీస పుస్తక సందర్భాల సంఖ్యను కూడా సెట్ చేయవచ్చు. ఈ గణాంకాల ఆధారంగా, ఉపయోగించని పుస్తకాలు లైబ్రరీ నుండి వ్రాయబడతాయి.
సబ్జెక్ట్ ప్రాంతం యొక్క క్రింది ప్రధాన అంశాలను వేరు చేయవచ్చు:
- వినియోగదారు (లైబ్రేరియన్లు మరియు నిర్వాహకులు);
- రీడర్;
- పఠన గది;
- పుస్తకం;
- పుస్తకం జారీ కార్డు;
- బుక్ బుకింగ్ కార్డ్.
డేటాబేస్ యొక్క సవరించిన ER-రేఖాచిత్రం చిత్రంలో చూపబడింది.
![](https://cdn.codegym.cc/images/article/af26b62d-dd9e-4713-be71-3f4fc10c5379/1024.jpeg)
మూర్తి 1లో చూపిన వినియోగ సందర్భాల ప్రకారం, డేటాబేస్ కింది ప్రశ్నలను అమలు చేయాలి (సమగ్ర జాబితా కాదు):
- పేర్కొన్న షరతులకు సరిపోయే పుస్తకాలను ప్రదర్శించండి;
- సమయానికి మూసివేయబడని పుస్తకాలను జారీ చేయడానికి కార్డులను కలిగి ఉన్న వినియోగదారులను ప్రదర్శించండి (లైబ్రేరియన్ రుణగ్రహీతల కోసం చూస్తున్నాడు);
- సకాలంలో మూసివేయబడని అందించిన వినియోగదారు పుస్తక రుణ కార్డులకు అనుగుణంగా ఉన్న అన్ని పుస్తకాలను ప్రదర్శించండి (వినియోగదారు కొత్త పుస్తకాల కోసం లైబ్రరీకి వచ్చారు - అతను రుణగ్రహీతనా అని మీరు చూడాలి మరియు దాని గురించి అతనికి తెలియజేయాలి);
- N సెకన్ల క్రితం సృష్టించబడిన అన్ని బుకింగ్ కార్డ్లను తొలగించండి;
- పేర్కొన్న వినియోగదారు యొక్క అన్క్లోజ్డ్ బుక్ రిజర్వేషన్ కార్డ్లకు సంబంధించిన అన్ని పుస్తకాలను ప్రదర్శించండి (రీడర్ పుస్తకాలను ఆర్డర్ చేసి, వాటి కోసం లైబ్రరీకి వచ్చారు - లైబ్రేరియన్ దానిని ఇవ్వడానికి ఈ జాబితాను పొందాలి).
1.3 స్కీమా నిర్మాణం
డేటా స్కీమాను రూపొందించడానికి, మీరు ముందుగా ER రేఖాచిత్రాన్ని ఎంటిటీల వివరాలతో అనుబంధించాలి (దీన్ని మెరుగుపరచండి). కొన్నిసార్లు, అదే సమయంలో, ER రేఖాచిత్రాన్ని నిర్మించడంలో లోపాలను కనుగొనడం సాధ్యమవుతుంది - ఈ పనిలో, పుస్తకాన్ని లైబ్రరీ హాల్తో “ఏదో ఒకవిధంగా” కనెక్ట్ చేయాల్సిన అవసరం ఉందని కనుగొనబడింది.
పుస్తకంలో అవసరమైన "హాల్ నంబర్"ని ఉంచడం ద్వారా ఇది చేయవచ్చు, అయితే, ఈ విధానంతో, అదే పుస్తకాన్ని అనేక సార్లు డేటాబేస్లో వివరించవలసి ఉంటుంది (ఇది వేర్వేరు హాళ్లలో సంభవిస్తే). అదనపు ఎంటిటీ "బుక్ ప్లేస్మెంట్"ని పరిచయం చేయడం మరింత సరైన విధానం. ఫిగర్ అదనపు ఎంటిటీ మరియు ప్రాప్లతో కూడిన ER రేఖాచిత్రాన్ని చూపుతుంది.
![](https://cdn.codegym.cc/images/article/e0d1296a-18db-464c-88ac-c6f6a33c661b/1024.jpeg)
పై ER రేఖాచిత్రం ప్రధాన పట్టికలు, సంబంధాలు మరియు లక్షణాలను ప్రతిబింబిస్తుంది; దాని ఆధారంగా, మీరు డేటాబేస్ నమూనాను రూపొందించవచ్చు. ER రేఖాచిత్రానికి ప్రమాణం లేదు, కానీ అనేక సంజ్ఞామానాలు ఉన్నాయి (చెన్, IDEFIX, మార్టిన్, మొదలైనవి), కానీ డొమైన్ మోడల్కు ప్రామాణికం లేదా సంజ్ఞామానాలు కనుగొనబడలేదు. అయితే, అటువంటి రేఖాచిత్రాన్ని నిర్మించే సమయంలో, కీలకమైన ఫీల్డ్లు (బాహ్య మరియు అంతర్గత) తప్పనిసరిగా హైలైట్ చేయబడతాయి, కొన్నిసార్లు సూచికలు మరియు డేటా రకాలు.
ఈ సందర్భంలో, కింది రేఖాచిత్రంలో:
- లింక్ల కోసం, మార్టిన్ సంజ్ఞామానం ("కాకి అడుగులు" ఉపయోగించబడుతుంది);
- పట్టికలు 3 విభాగాలుగా విభజించబడిన దీర్ఘ చతురస్రాలుగా చూపబడ్డాయి:
- పట్టిక పేరు;
- అంతర్గత కీలు (మార్కర్తో గుర్తించబడ్డాయి);
- మిగిలిన ఫీల్డ్లు, తప్పనిసరి వాటిని మార్కర్తో గుర్తు పెట్టాలి.
ఈ నమూనాను అభివృద్ధి చేస్తున్నప్పుడు, లైబ్రేరియన్ల పట్టికతో నిర్వాహకుల పట్టికలో చేరాలనే కోరిక ఉంది - అయితే వినియోగదారుల పట్టికను జోడించండి:
- నిర్వాహకుడు నిర్దిష్ట గదితో అనుబంధించబడలేదు (మీరు సంబంధిత ఫీల్డ్ను శూన్య విలువలతో పూరించాలి);
- ఇది బహుశా యాక్సెస్ హక్కుల పంపిణీని క్లిష్టతరం చేస్తుంది - ఇప్పుడు డేటాబేస్ అడ్మినిస్ట్రేటర్ (ప్రత్యేక DBMS ప్యానెల్ ద్వారా పని చేసే మరియు అభివృద్ధి చేయబడుతున్న సిస్టమ్లో ఖాతా లేని) మాత్రమే నిర్వాహకుల పట్టికకు ప్రాప్యతను కలిగి ఉన్నారు. అయినప్పటికీ, పట్టికలలో చేరినప్పుడు, వినియోగదారు ప్రశ్నలకు కొత్త పట్టికకు ప్రాప్యత అవసరం.
ఈ రేఖాచిత్రాన్ని నిర్మిస్తున్నప్పుడు, ER రేఖాచిత్రంలో లోపం కనుగొనబడింది మరియు సరిదిద్దబడింది - librarians_rooms
లైబ్రేరియన్లు మరియు హాళ్లను ఏకం చేసే పట్టిక జోడించబడింది. ఇది అవసరం ఎందుకంటే ఒక లైబ్రేరియన్ అనేక గదులలో పని చేయవచ్చు, కానీ అనేక మంది లైబ్రేరియన్లు ఒకే గదిలో పని చేయవచ్చు.
డేటాబేస్లను రూపొందిస్తున్నప్పుడు, మీరు కనీసం పై ఉదాహరణ వలె తర్కించగలగాలి. మీరు విజయం సాధించారని మీరు అనుకుంటే, మరింత ముందుకు వెళ్దాం: ఇంకా ఎక్కువ సిద్ధాంతం.
GO TO FULL VERSION