ఇది సిరీస్ యొక్క మూడవ భాగం, ఐదు సాధారణ రూపాలు. మొదటి రెండు భాగాల (ట్యుటోరియల్స్) శీర్షికలు మొదటి సాధారణ రూపం, తరువాత రెండవ సాధారణ రూపం. సిరీస్ యొక్క ఈ భాగంలో, మూడవ సాధారణ రూపం వివరించబడింది.
వివరణ స్టోరీ లైన్ను అనుసరిస్తుంది: ఒక తండ్రి మరణించాడు మరియు అతని కొడుకు కోసం కొంత డబ్బు మిగిల్చాడు. కొడుకు డబ్బును కన్వీనియన్స్ స్టోర్లో పెట్టుబడి పెట్టాలని నిర్ణయించుకున్నాడు. కన్వీనియన్స్ స్టోర్, కన్వీనియన్స్ షాప్ అని కూడా పిలుస్తారు, ఇది చిన్న రిటైల్ వ్యాపారం, ఇది సరఫరాదారుల నుండి రోజువారీ వస్తువులను స్వీకరిస్తుంది మరియు వాటిని పొరుగున ఉన్న వ్యక్తిగత వినియోగదారులకు విక్రయిస్తుంది.
ఈ సమయంలో, దుకాణం ఇప్పటికే నిల్వ చేయబడింది మరియు కొన్ని అమ్మకాలు ఇప్పటికే చేయబడ్డాయి. వ్యాపారం యొక్క యజమాని అయిన కొడుకు, ఈ ట్యుటోరియల్లో క్లర్క్లుగా పిలువబడే కొంతమంది ఉద్యోగులు ఉన్నారు. ప్రొప్రైటర్ మరియు ఏ ఉద్యోగి అయినా ఉత్పత్తులను రికార్డ్ చేసిన తర్వాత సరఫరాలను స్వీకరించవచ్చు మరియు అమ్మకాలు చేయవచ్చు.
అయితే, దుకాణం ప్రారంభించే ముందు, సాధారణ ఫారమ్ల గురించి యాజమాన్యానికి లేదా ఉద్యోగులకు ఏమీ తెలియదు. కాబట్టి, వారు ప్రతిదీ ఒక టేబుల్ మరియు ఒక వ్యాయామ పుస్తకంలో లావాదేవీలుగా నమోదు చేసుకున్నారు. వారి వద్ద కంప్యూటర్ లేదు.
మీరు, రీడర్, ఈ ట్యుటోరియల్ సిరీస్లోని ఐదు భాగాలను పూర్తి చేసారు; మీరు ఇప్పుడు డేటాబేస్ డెవలపర్. సౌకర్యవంతమైన దుకాణం యొక్క యజమాని మీ స్నేహితుడు. మీరు రెండు రోజుల క్రితం దుకాణాన్ని సందర్శించి, దాని మొదటి సాధారణ రూపంలో టేబుల్ను తయారు చేయడంపై యజమాని మరియు క్లర్క్లకు శిక్షణ ఇచ్చారు. మీరు నిన్న దుకాణాన్ని కూడా సందర్శించారు మరియు మొదటి సాధారణ రూపం నుండి రెండవ సాధారణ రూపంలో పట్టికను ఎలా సృష్టించాలో వారికి శిక్షణ ఇచ్చారు.
ఈ రోజు, మీరు రెండవ సాధారణ రూపం నుండి మూడవ సాధారణ రూపంలో టేబుల్ను ఎలా ఉత్పత్తి చేయాలో వారికి శిక్షణ ఇవ్వడానికి సందర్శన కోసం దుకాణానికి వచ్చారు. ప్రస్తుతం వారి వద్ద ఉన్న అన్ని పట్టికలు రెండవ సాధారణ రూపంలో ఉన్నాయి. పట్టికలు (పేరు మరియు నిలువు వరుస శీర్షికల ద్వారా):
ఉత్పత్తులు(ఉత్పత్తి ID, వర్గం ID, ఉత్పత్తి)
వర్గాలు(కేటగిరీ ID, వర్గం)
అమ్మకాలు (సేల్ఐడి, కస్టమర్, ఉద్యోగి, తేదీ)
విక్రయ వివరాలు(సేల్ఐడి, ప్రొడక్ట్ఐడి, నంబర్సోల్డ్, అమ్మకపు ధర)
ఆర్డర్లు(ఆర్డర్ID, సరఫరాదారు, ఉద్యోగి, తేదీ)
ఆర్డర్ వివరాలు(orderID, productID, numberBought, pricePrice)
సింగిల్ లేదా కాంపోజిట్ కీలు అండర్లైన్ చేయబడ్డాయి.
మునుపటి రెండు రోజులలో బోధించిన వాటిని క్లుప్తీకరించిన తర్వాత మరియు మీరు ఏదైనా చేసే ముందు, యజమాని అడుగుతాడు:
“కస్టమర్లు మరియు ఉద్యోగుల కోసం ఫోన్ నంబర్లు, చిరునామాలు మొదలైనవాటి గురించి ఏమిటి?
ఉత్పత్తుల కోసం స్టాక్ పరిమాణం, రీఆర్డర్ స్థాయి మొదలైన వాటి గురించి ఏమిటి?
వారికి వారి స్వంత ప్రత్యేక పట్టికలు అవసరమా లేదా వాటిని ప్రస్తుత పట్టికలలో అమర్చాలా?'
మీరు, డేటాబేస్ డెవలపర్, సమాధానం:
“అభినందనలు, యజమాని! మీరు థర్డ్ నార్మల్ ఫారమ్ సమస్యను పరోక్షంగా పరిచయం చేసారు.
మీరు కొనసాగించండి.
ఇతర అవసరమైన నిలువు వరుసలు
ఇతర అవసరమైన నిలువు వరుసలు ముందుగా 1NF మరియు 2NFలో ఉన్న మునుపటి పట్టికలకు జోడించబడతాయి. మునుపటి నిలువు వరుస పేర్లు కొన్ని సవరించబడ్డాయి.
కనిష్టంగా, వర్గాల పట్టిక కింది నిలువు వరుసలను కలిగి ఉండాలి:
వర్గాలు(వర్గం ID, వర్గం పేరు, వివరణ)
వివరణ అనేది వర్గాన్ని వివరించే చిన్న పేరా. ఈ కేటగిరీల పట్టిక ఇప్పటికే 1NF, 2NF మరియు 3NFలో ఉంది. 3NF క్రింద వివరించబడింది:
కనిష్టంగా, ఉత్పత్తుల పట్టిక కింది నిలువు వరుసలను కలిగి ఉండాలి:
ఉత్పత్తులు (ఉత్పత్తి ID, వర్గం ID, సరఫరాదారు ID, ఉత్పత్తి పేరు, యూనిట్ ధర, పరిమాణంఇన్స్టాక్, రీఆర్డర్ స్థాయి)
ప్రతి ఉత్పత్తి విక్రయించబడుతున్నందున, ఉత్పత్తిని మళ్లీ ఆర్డర్ చేయవలసి వచ్చినప్పుడు ఉత్పత్తులు తక్కువ స్థాయికి (సంఖ్య) చేరుకుంటాయి, కాబట్టి కస్టమర్లు దుకాణానికి రాకూడదు మరియు ఉత్పత్తిని కలిగి ఉండకూడదు. అలా లేకపోవడం వ్యాపారానికి మంచిది కాదు. quantityInStock అనేది స్టాక్లో ఉన్న నిర్దిష్ట ఉత్పత్తి సంఖ్య. ఇందులో స్టోర్లో ఉన్నవి మరియు షెల్ఫ్లో ఉన్నవి ఉంటాయి.
వర్గం ID మరియు సరఫరాదారు ID విదేశీ కీలు. అందుకే వాటికి సింగిల్ అండర్లైన్కు బదులుగా డాష్ అండర్లైన్ ఉంటుంది. ఫారిన్ కీ క్రింద వివరించబడింది. శ్రేణి యొక్క మునుపటి భాగంలో (రెండవ సాధారణ ఫారమ్), కేటగిరీ ID అనేది ప్రాథమిక కీలో భాగంగా ఒకే అండర్లైన్తో ఎలా వచ్చింది అనే దాని కారణంగా. ఏదేమైనప్పటికీ, దిగువ వివరణ నుండి, కేటగిరీID విదేశీ కీ (డాష్ అండర్లైన్తో) అయి ఉండాలని స్పష్టంగా తెలుస్తుంది.
ఈ ఉత్పత్తుల పట్టిక ఇప్పటికే 1NF, 2NF మరియు 3NFలో ఉంది. దిగువ 3NFలో ఎందుకు ఉందో చూడండి:
కనిష్టంగా, SaleDetails పట్టిక కింది నిలువు వరుసలను కలిగి ఉండాలి:
విక్రయ వివరాలు(సేల్ఐడి, ప్రొడక్ట్ఐడి, యూనిట్ విక్రయ ధర, పరిమాణం, తగ్గింపు)
డిస్కౌంట్ విలువ చాలా వరకు సున్నాగా ఉంటుందని భావిస్తున్నారు. డిస్కౌంట్ అనేది దుకాణం కస్టమర్కు ఇచ్చే డిస్కౌంట్.
కనిష్టంగా, ఆర్డర్ వివరాల పట్టిక కింది నిలువు వరుసలను కలిగి ఉండాలి:
ఆర్డర్ వివరాలు(orderID, productID, unitCostPrice, పరిమాణం, తగ్గింపు)
డిస్కౌంట్ విలువ చాలా వరకు సున్నాగా ఉంటుందని భావిస్తున్నారు. ఇక్కడ డిస్కౌంట్ అనేది సరఫరాదారు దుకాణానికి ఇచ్చే డిస్కౌంట్.
దిగువన చూసినట్లుగా, ఉత్పత్తుల పట్టిక 2NF లేదా 3NFలో పరిగణించబడుతుంది. సేల్స్ మరియు ఆర్డర్ పట్టికలు 3NF సమస్యను కలిగి ఉన్నాయి. సమస్య మరియు పరిష్కారాన్ని వివరించడానికి సేల్స్ టేబుల్ మాత్రమే ఉపయోగించబడుతుంది. ఆర్డర్స్ టేబుల్ మరియు ప్రోడక్ట్స్ టేబుల్ కోసం 3NF ఇదే రీజనింగ్ను అనుసరిస్తాయి మరియు ఇప్పుడే కోట్ చేయబడతాయి.
నిలువు వరుసలను జోడించేటప్పుడు, విక్రయాల పట్టిక ఇలా ఉంటుంది:
విక్రయాలు(సేల్ఐడి, తేదీ విక్రయించిన కస్టమర్ పేరు, ఫోన్, చిరునామా, నగరం, ప్రాంతం, పోస్టల్ కోడ్, దేశం, ఉద్యోగి)
ఒరిజినల్ టేబుల్లోని కస్టమర్ కాలమ్ను ఏడు నిలువు వరుసలు భర్తీ చేశాయి. కస్టమర్లు పరిసరాల్లో ఉన్న వ్యక్తులు కాబట్టి, నగరం, ప్రాంతం(రాష్ట్రం), పోస్టల్కోడ్ మరియు దేశం కాలమ్ల సెల్లను ఈ కథనంలో ఖాళీగా ఉంచనప్పటికీ, వాటిని ఖాళీగా ఉంచవచ్చు.
1NF మరియు 2NF నియమాలు రెండూ ఉల్లంఘించబడనందున ఈ విక్రయాల పట్టిక ఇప్పటికీ 2NFలో ఉంది. అయితే, సేల్స్ టేబుల్ వరుసలో, కస్టమర్ (పేరు) ఏడు కస్టమర్ వరుస సెల్లతో భర్తీ చేయబడిందని గ్రహించాలి.
గమనిక: చిరునామా సెల్లో ఇంటి నంబర్, వీధి లేదా రహదారి పేరు మరియు పట్టణం పేరు ఉంటాయి, అన్నీ కామాలతో వేరు చేయబడ్డాయి. ఒక నగరాన్ని అనేక పట్టణాలతో రూపొందించినట్లుగా పరిగణించవచ్చు. కామాలు ఈ నిర్దిష్ట స్ట్రింగ్ భాగాలను వేరు చేసినప్పటికీ, అవి ఒక సెల్ విలువను ఏర్పరుస్తాయి మరియు మూడు సెల్ విలువలను కాదు.
ఉద్యోగి కాలమ్ను కూడా అలాంటి ఏడు నిలువు వరుసలతో భర్తీ చేయాలి. అయితే, బోధన సమయం మరియు స్థలాన్ని ఆదా చేయడానికి ఈ ట్యుటోరియల్లో అలా చేయలేదు. కాబట్టి, డేటాతో కూడిన సేల్స్ టేబుల్ ఇలా ఉండవచ్చు:
సేల్స్ టేబుల్ – 2NF – కస్టమర్ ID లేకుండా
డేటా రకం SaleID కాలమ్ అనేది పూర్ణాంకం లేదా మెరుగైనది, స్వీయ-పెంపు. డేట్సోల్డ్ కాలమ్ యొక్క డేటా రకం తేదీ మరియు సంఖ్య కాదు, ఎందుకంటే దానికి “/” అక్షరం ఉంది, అది అంకె కాదు. ఫోన్ కాలమ్తో సహా మిగిలిన నిలువు వరుసల డేటా రకం స్ట్రింగ్ (లేదా టెక్స్ట్). ఫోన్ విలువ '-' అక్షరాన్ని కలిగి ఉంది, ఇది అంకె కాదు.
ప్రతి అడ్డు వరుస కోసం, కస్టమర్ (పేరు), సిరీస్ యొక్క మునుపటి భాగంలో ఉన్నట్లుగా, ఏడు సెల్లతో భర్తీ చేయబడిందని, వాటిలో ఒకటి ఇప్పటికీ కస్టమర్ పేరు అని గమనించండి. కస్టమర్ డేటా ఒక ఎంటిటీ అని దీని అర్థం. ప్రస్తుతం, కస్టమర్-పేరు దాని ఇతర ఆరు డేటాను వరుసగా గుర్తిస్తుంది. ఈ పట్టిక ప్రోగ్రామ్ చేయబడితే, ప్రతి అడ్డు వరుసలోని కస్టమర్ ఎంటిటీని పూర్ణాంకంతో గుర్తించడం సౌకర్యంగా ఉంటుంది (ఆటో-ఇంక్రిమెంట్ కాదు). అలాంటప్పుడు, customerID కాలమ్ కస్టమర్ పేరుకు ముందు ఉండాలి. మునుపటి పట్టిక అవుతుంది:
సేల్స్ టేబుల్ – 2NF – కస్టమర్ ఐడితో
మూడు కస్టమర్ IDలు ఉన్నాయి: 1, 2 మరియు 3, 1 జాన్ స్మిత్కు ఐదు సార్లు, 2 జేమ్స్ టేలర్కు రెండు సార్లు మరియు 3 సుసాన్ రైట్కు ఒకసారి సంభవించాయి.
కొన్ని కస్టమర్ IDలు మరియు వారిపై ఆధారపడినవారు పునరావృతమవుతారని గమనించండి.
మూడవ సాధారణ ఫారమ్ కోసం నియమాలు
పట్టిక క్రింది నియమాలకు కట్టుబడి ఉంటే మూడవ సాధారణ రూపంలో ఉంటుంది:
- ఇది ఇప్పటికే రెండవ సాధారణ రూపంలో ఉండాలి.
- మరియు దానికి ట్రాన్సిటివ్ డిపెండెన్సీ ఉండకూడదు.
అప్పుడు క్లర్క్లలో ఒకరు (ఉద్యోగులు) 'ట్రాన్సిటివ్ డిపెండెన్సీ అంటే ఏమిటి?' అని అడుగుతాడు. మరియు మీరు, డేటాబేస్ డెవలపర్, “ఇది మంచి ప్రశ్న!” అని ప్రత్యుత్తరం ఇవ్వండి.
ట్రాన్సిటివ్ డిపెండెన్సీ
వరుసలో, SaleID వరుసలోని అన్ని విలువలను గుర్తిస్తుందనేది నిజం; అయితే, customerID దాని ఏడు డేటా విలువలను గుర్తిస్తుంది కానీ ఆ వరుసలో SaleID ద్వారా గుర్తించబడిన మిగిలిన విలువలను గుర్తించదు. మరో విధంగా చెప్పాలంటే, SaleID ప్రతి అడ్డు వరుసలోని పది సెల్ విలువలపై ఆధారపడి ఉంటుంది. అయితే, కస్టమర్ ID ఒకే వరుసలోని ఏడు సెల్ విలువలపై ఆధారపడి ఉంటుంది, అయితే కస్టమర్ ID SaleID మరియు SaleID ఆధారపడిన ఇతర విలువలపై ఆధారపడి ఉండదు.
custumerID కోసం ఇటువంటి డిపెండెన్సీ అనేది ట్రాన్సిటివ్ డిపెండెన్సీ. మరియు customerIDని ఫారిన్ కీ అని పిలుస్తారు మరియు ఈ ట్యుటోరియల్ సిరీస్, ది ఫైవ్ నార్మల్ ఫారమ్లలో డాష్ అండర్లైన్ చేయబడింది.
నాన్-ప్రైమ్ అట్రిబ్యూట్ (నాన్-ప్రైమరీ సెల్ వాల్యూ) ఇతర నాన్-ప్రైమ్ అట్రిబ్యూట్లపై ఆధారపడి ఉంటుందని అనుకుందాం మరియు ప్రశ్నలోని నాన్-ప్రైమ్ అట్రిబ్యూట్ (ఉదా., కస్టమర్ ID మరియు దాని డిపెండీలు) ప్రాథమిక కీ మరియు మిగిలిన సెల్పై ఆధారపడి ఉండదు. వరుసలో విలువలు. అప్పుడు అది ట్రాన్సిటివ్ డిపెండెన్సీ.
విదేశీ కీ మరియు దాని డిపెండీలతో మునుపటి సేల్స్ టేబుల్, అకౌంటింగ్ సమస్యలను (అనామాలిస్) కలిగిస్తుంది.
2NF నుండి 3NF వరకు విక్రయాల పట్టిక
విదేశీ కీ మరియు దాని డిపెండీల ద్వారా ఎదురయ్యే సమస్యను పరిష్కరించడానికి, పునరావృత్తులు లేకుండా కొత్త పట్టికను రూపొందించడానికి విదేశీ కీ మరియు దాని డిపెండీలను తీసివేయండి. అయితే, విదేశీ కీ ప్రాథమిక కీపై ఆధారపడకపోయినా, ప్రాథమిక కీ విదేశీ కీపై ఆధారపడి ఉంటుంది. కాబట్టి, విదేశీ కీ యొక్క కాపీ తప్పనిసరిగా పేరెంట్ టేబుల్లో ఉండాలి. కొత్త సేల్స్ టేబుల్, ఈ సమయంలో, 1NF, 2NF మరియు 3NF కంప్లైంట్; అది పేరెంట్ టేబుల్. మునుపటి సేల్స్ టేబుల్ నుండి కొత్త చైల్డ్ టేబుల్ కూడా 1NF, 2NF మరియు 3NF కంప్లైంట్. విదేశీ కీ మరియు దాని డిపెండీలతో కూడిన చైల్డ్ టేబుల్ పేరు కస్టమర్లు. సరైన పేరు కనుగొనబడకపోతే, విశ్లేషణలో ఏదో తప్పు జరిగింది. 3NFలో కొత్త సేల్స్ టేబుల్:
3NFలో తుది విక్రయాల పట్టిక
3NFలోని ఈ పట్టిక 2NFలో ఉన్న వరుసల సంఖ్యను కలిగి ఉంది కానీ తక్కువ నిలువు వరుసలను కలిగి ఉంటుంది.
3NFలో ఈ చివరి సేల్స్ టేబుల్ కోసం టేబుల్ సంజ్ఞామానం:
అమ్మకాలు (సేల్ఐడి, అమ్మిన తేదీ, కస్టమర్ ఐడి, ఎంప్లాయ్ ఐడి)
సేల్ID అనేది ఒకే అండర్లైన్తో కూడిన ప్రాథమిక కీ. customerID అనేది డాష్ అండర్లైన్తో కూడిన విదేశీ కీ. ఎంప్లాయ్ ఐడి అనేది డాష్ అండర్లైన్తో కూడిన ఫారిన్ కీ కూడా. 2NFలోని సేల్స్ టేబుల్లోని ఉద్యోగి పరిస్థితి, కస్టమర్ పరిస్థితి అదే విధంగా ఉందని గమనించండి. మరొక పట్టికను రూపొందించడానికి ఉద్యోగి ID మరియు దాని స్వంత డిపెండీలను తీసివేయాలి; ఉద్యోగి ID కాపీ మిగిలి ఉంది.
గమనిక: saleID, కస్టమర్ ID మరియు ఉద్యోగి ID మిశ్రమ కీని ఏర్పరచవు. saleID కస్టమర్ ID మరియు ఉద్యోగి IDపై ఆధారపడి ఉంటుంది.
సేల్ఐడి మరియు కస్టమర్ ఐడి మధ్య సంబంధం అనేకం నుండి ఒకటి.
3NFలో కస్టమర్ పట్టిక
ఈ పట్టిక 2NF సేల్స్ పట్టికలో 9 అడ్డు వరుసలకు బదులుగా మూడు వరుసలను కలిగి ఉంది. ఈ పట్టికలో, కస్టమర్ ID అనేది ప్రాథమిక కీ. ఇది సేల్స్ టేబుల్లోని విదేశీ కీ వలె ఉంటుంది, కానీ పునరావృత్తులు లేకుండా. సేల్స్ టేబుల్లోని ఫారిన్ కీ మరియు కస్టమర్ టేబుల్లోని ప్రైమరీ కీ రెండు టేబుల్లను లింక్ చేస్తాయి.
1NFని ఉల్లంఘించకుండా ఉండటానికి కస్టమర్ టేబుల్లోని పునరావృత వరుసలు తీసివేయబడ్డాయి.
రీడర్ చూడగలిగినట్లుగా, 3NFలో పట్టికను ఉంచడం పునరావృత వరుసల (రిడెండెన్సీ) సమస్యను కూడా పరిష్కరిస్తుంది.
కస్టమర్ల పట్టిక కోసం పట్టిక సంజ్ఞామానం:
కస్టమర్లు(కస్టమర్ ID, కస్టమర్ పేరు, ఫోన్, చిరునామా, నగరం, ప్రాంతం, పోస్ట్కోడ్, దేశం)
ఉత్పత్తుల పట్టిక మళ్లీ సందర్శించబడింది
సంజ్ఞామానం రూపంలో పైన ఇవ్వబడిన ఉత్పత్తుల పట్టిక:
ఉత్పత్తులు (ఉత్పత్తి ID, వర్గం ID, సరఫరాదారు ID, ఉత్పత్తి పేరు, యూనిట్ ధర, పరిమాణంఇన్స్టాక్, రీఆర్డర్ స్థాయి)
ఇక్కడ ప్రాథమిక కీ ఉత్పత్తి ID. వర్గం ID మరియు సరఫరాదారు ID విదేశీ కీలు. కస్టమర్ టేబుల్ మాదిరిగానే, కేటగిరీఐడి ప్రాథమిక కీ అయిన కేటగిరీల పట్టిక ఉంది మరియు సరఫరాదారు పట్టిక ఉంది, ఇక్కడ సప్లయర్ ఐడి ప్రాథమిక కీ.
యూనిట్ప్రైస్, క్వాంటిటీఇన్స్టాక్ మరియు రీఆర్డర్లెవెల్ కోసం సెల్ల విలువలు స్థిరంగా ఉంటే, ఉత్పత్తుల పట్టిక నిజంగా 3NFలో ఉంటుంది. ఈ విలువలు మారుతున్నట్లయితే, ఉత్పత్తుల పట్టిక 2NFలో ఉంటుంది. ట్యుటోరియల్ సిరీస్లోని ఈ భాగంలో, ఆ విలువలు కాలక్రమేణా స్థిరంగా ఉంటాయని భావించబడుతుంది.
అన్ని పట్టికలు
అన్ని పట్టికలు ఇప్పుడు 3NFలో ఉన్నాయి. అవి ఇలా చూపబడ్డాయి:
ఉద్యోగులు(ఉద్యోగి ID, పేరు, ఫోన్, చిరునామా, నగరం, ప్రాంతం, పోస్ట్కోడ్, దేశం, పుట్టిన తేదీ, అద్దె తేదీ, విడుదల తేదీ)
సరఫరాదారులు(సరఫరాదారు ID, పేరు, ఫోన్, చిరునామా, నగరం, ప్రాంతం, పోస్ట్కోడ్, దేశం)
ఉత్పత్తులు (ఉత్పత్తి ID, వర్గం ID, సరఫరాదారు ID, ఉత్పత్తి పేరు, యూనిట్ ధర, పరిమాణంఇన్స్టాక్, రీఆర్డర్ స్థాయి)
వర్గాలు(వర్గం ID, వర్గం పేరు, వివరణ)
అమ్మకాలు (సేల్ఐడి, అమ్మిన తేదీ, కస్టమర్ ఐడి, ఎంప్లాయ్ ఐడి)
విక్రయ వివరాలు(సేల్ఐడి, ప్రొడక్ట్ఐడి, నంబర్సోల్డ్, అమ్మకపు ధర)
కస్టమర్లు(కస్టమర్ ID, కస్టమర్ పేరు, ఫోన్, చిరునామా, నగరం, ప్రాంతం, పోస్ట్కోడ్, దేశం)
ఆర్డర్లు(ఆర్డర్ID, తేదీ అమ్మిన తేదీ, సరఫరాదారు ID, ఉద్యోగి ID)
ఆర్డర్ వివరాలు(orderID, productID, numberBought, pricePrice)
రిడెండెన్సీ మరియు అకౌంటింగ్ సమస్యలను (ఇన్సర్ట్, డిలీట్ మరియు అప్డేట్ నుండి క్రమరాహిత్యాలు) నిరోధించడానికి అనుభవం లేని వ్యక్తులు రూపొందించిన ఒక టేబుల్ నుండి తొమ్మిది వరకు ప్రొఫెషనల్ టేబుల్లు తయారు చేయబడ్డాయి. అనుభవం లేని పట్టిక మాత్రమే ఆర్థిక నష్టాలకు దారి తీస్తుంది.
సిబ్బందిని పరీక్షిస్తున్నారు
ఈ సమయంలో, యజమానితో సహా ఉద్యోగులందరూ 1NF, 2NF మరియు 3NFలను అర్థం చేసుకోవాలి. అయితే, వాటిని పరీక్షించాల్సి ఉంటుంది. యాజమాన్యంతో సహా అందరూ వేర్వేరు చోట్ల కూర్చుని పరీక్షను పూర్తి చేస్తారు. ఒక ప్రశ్నతో కూడిన పరీక్ష, ఒక గంట పడుతుంది మరియు ఇది క్రింది విధంగా ఉంటుంది:
ప్రశ్న: 1NF, 2NF మరియు 3NF కోసం నియమాలను ఉపయోగించి, పైన పేర్కొన్న తొమ్మిది పట్టికలు ఇప్పటికే మొదటి సాధారణ రూపంలో, రెండవ సాధారణ రూపంలో మరియు మూడవ సాధారణ రూపంలో ఉన్నాయని నిరూపించండి. వినియోగదారులు మరియు సరఫరాదారులు నిజమైన సంస్థలు కానవసరం లేదు. పట్టికల కోసం డేటా పట్టిక సంకేతాలను బ్యాకప్ చేయాలి.
వారు పరీక్షను పూర్తి చేస్తున్నప్పుడు, మీరు, డేటాబేస్ డెవలపర్గా, అల్పాహారం మరియు బీర్ తాగడానికి బయటకు వెళ్లి, ఒక గంట తర్వాత తిరిగి వెళ్లండి.
ద నియర్ అండ్ ఫార్ ఫ్యూచర్
డేటాబేస్ డెవలపర్ అయిన మీరు బయట ఉన్నప్పుడు, వారందరూ పరీక్షలో ఉత్తీర్ణులైతే వారికి ఎలాంటి సలహా ఇవ్వాలో కూడా మీరు పరిగణించండి.
అలాగే, మీరు వారికి శిక్షణ ఇస్తున్నప్పుడు, ఇప్పుడు వారు పరీక్షకు హాజరవుతున్నప్పుడు, కస్టమర్లు వచ్చి సేవలు అందించకుండా వెళ్లిపోతున్నారు. ఇది వ్యాపారానికి మంచిది కాదు మరియు డేటాబేస్ డెవలపర్ అయిన మీకు అది తెలుసు. కొంతమంది కస్టమర్లు పోటీదారుల దుకాణాలకు వెళ్లి తిరిగి రాకపోవచ్చు.
డేటాబేస్ డెవలపర్ అయిన మీ వయస్సు 30 సంవత్సరాలు. యజమాని, మీ స్నేహితుడిగా, కూడా 30 సంవత్సరాలు. గుమాస్తాలు (ఉద్యోగులు) 18 మరియు 24 సంవత్సరాల మధ్య వయస్సు కలిగి ఉంటారు. యాజమాన్యం కోసం పని చేయడానికి వారికి అవసరమైన అన్ని లక్షణాలు: ఆరోగ్యంగా ఉండటం, చదవడం మరియు వ్రాయడం, జోడించడం, తీసివేయడం, గుణించడం మరియు విభజించడం , మరియు కంప్యూటర్ మరియు ఇంటర్నెట్ని ఉపయోగించగలగాలి.
పట్టిక 3NFలో ఉన్నప్పుడు, డేటాబేస్ నుండి చాలా దుర్బలత్వాలు తీసివేయబడతాయి. అనేక వాణిజ్య డేటాబేస్లు 3NF కంటే ఎక్కువగా ఉండవు మరియు సంస్థలు లేదా కంపెనీలు సౌకర్యవంతంగా ఉంటాయి.
కాబట్టి, వారందరూ పరీక్షలో ఉత్తీర్ణులైతే, మీరు వెళ్లి పని కొనసాగించమని గుమాస్తాలను అడుగుతారు. మీరు వారి జీతాలలో కొంత భాగాన్ని ఆదా చేసుకోమని కూడా వారికి సలహా ఇస్తారు, తద్వారా వారు తమ సౌకర్యాల దుకాణాలను కలిగి ఉంటారు. మీరు 4NF మరియు 5NFలో యజమానికి మాత్రమే శిక్షణ ఇవ్వడానికి రేపు కొనసాగుతారు. 4NF మరియు 5NF జ్ఞానంతో, తెలిసిన అన్ని దుర్బలత్వాలు తొలగించబడతాయి.
మూల్యాంకనం
ఒక గంట తర్వాత, మీరు, డేటాబేస్ డెవలపర్, తిరిగి రండి. మీరు వారి స్క్రిప్ట్లను గుర్తించండి. అద్భుతమైన వార్త యొక్క భాగం! యజమానితో సహా వారందరికీ 100% ప్రతి ఉంది. హుర్రే! అది అద్భుతమైనది!
కాబట్టి మీ అందరికీ అభినందనలు: ఉపాధ్యాయులు మరియు విద్యార్థులు.
ఈ ట్యుటోరియల్లో ముగించడం తప్ప మరేమీ లేదు.
ముగింపు
పట్టిక కింది నియమాలలో దేనినీ ఉల్లంఘించనట్లయితే, మొదటి సాధారణ రూపంలో ఉంటుంది:
- పట్టికలోని అన్ని నిలువు వరుసలు ప్రత్యేక శీర్షిక పేర్లను కలిగి ఉండాలి.
- ప్రతి సెల్ తప్పనిసరిగా ఒకే విలువను కలిగి ఉండాలి.
- నిలువు వరుసలో నిల్వ చేయబడిన విలువలు ఒకే రకంగా ఉండాలి.
- వరుసలు ప్రత్యేకంగా ఉండాలి.
- నిలువు వరుసలు లేదా వరుసల క్రమం పట్టింపు లేదు.
కింది నియమాలలో దేనినీ ఉల్లంఘించనట్లయితే, పట్టిక రెండవ సాధారణ రూపంలో ఉంటుంది:
- పట్టిక ఇప్పటికే మొదటి సాధారణ రూపంలో ఉండాలి.
- పాక్షిక పరాధీనత ఉండకూడదు.
పట్టిక కింది నియమాలలో దేనినీ ఉల్లంఘించనట్లయితే, మూడవ సాధారణ రూపంలో ఉంటుంది:
- ఇది ఇప్పటికే రెండవ సాధారణ రూపంలో ఉండాలి.
- మరియు దానికి ట్రాన్సిటివ్ డిపెండెన్సీ ఉండకూడదు.
మీరు, డేటాబేస్ డెవలపర్, వారు తగినంత నేర్చుకున్నారని క్లర్క్లకు చెప్పండి. మీరు సలహాలు అందించి, డిఫాల్ట్గా తమ స్టేషన్లలో ఉండమని మరియు పనికి తిరిగి రావాలని వారిని అడగండి.
4NF మరియు 5NFలో శిక్షణ కోసం రేపు అతని కార్యాలయంలో జరగడానికి మీరు యజమానితో మాత్రమే అపాయింట్మెంట్ని సెట్ చేసారు.