ሙሉ ብቃት ያለው ጥገኝነት ከሁለተኛ መደበኛ (2 ኛ መደበኛ) መደበኛ (Normal Form) መደበኛ (Normal Form) ጋር እኩል ይሆናል. በአጭሩ ይህ ማለት የመጀመሪያው መደበኛ ፎርም (1NF) መስፈርቶችን ያሟላል ማለት ነው, እና ሁሉም ቁልፍ ያልሆኑ ቁልፍ ባህሪያቶች ሙሉ በሙሉ በጥገኛ ዋናው ቁልፍ ላይ ናቸው.
ይህ እንደ ውስብስብ አይሆንም. ይህንን በበለጠ ዝርዝር እንመልከት.
የመጀመሪያ መደበኛ ቅጽ
የውሂብ ጎታ ሙሉ በሙሉ በንብረት ላይ የተመሠረተ ሊሆን ቢችልም, በመጀመሪያ ደረጃ የመጀመሪያውን መደበኛ ቅጽ ማሟላት አለበት.
ይህ ማለት እያንዳንዱ እሴት አንድ ነጠላ የአቶሚክ እሴት መያዝ አለበት ማለት ነው.
ለምሳሌ, የሚከተለው ሰንጠረዥ ከ 1 NF ጋር አይጣጣምም ምክንያቱም ሠራተኛው ቲና ከሁለት ቦታዎች ጋር የተቆራኘ ስለሆነ ሁለቱም በነጠላ ሕዋስ:
ሠራተኛ | አካባቢ |
---|---|
ዮሐንስ | ሎስ አንጀለስ |
ቲና | ሎስ አንጀለስ, ቺካጎ |
ይህን ንድፍ መፍቀድ የውሂብ ዝማኔዎችን ወይም ግቤቶችን አሉታዊ ተጽዕኖ ሊያሳድር ይችላል. 1NF አፈጻጸሙን ለማረጋገጥ, ሁሉንም ሰንጠረዦች (ወይም የዓምድ ሕዋሶች) አንድ እሴት እንዲይዙ, ሠንጠረዡን እንደገና ያስተካክሉ:
ሠራተኛ | አካባቢ |
---|---|
ዮሐንስ | ሎስ አንጀለስ |
ቲና | ሎስ አንጀለስ |
ቲና | ቺካጎ |
ሆኖም ግን 1NF ከሂደቱ ጋር ችግር ላለመፍጠር በቂ አይደለም.
2NF ሙሉ ጥገኛነትን ለማረጋገጥ እንዴት ይሰራል
ሙሉ በሙሉ ጥገኛ ለመሆን ሁሉም እጩ ያልሆኑ ቁልፍ ባህሪያት በዋናው ቁልፍ ላይ የተመሰረቱ ናቸው. (ያስታውሱ, የእጩ እሴት ቁልፍ የሆነ ቁልፍ (ለምሳሌ ዋናው ወይም የውጭ ቁልፍ) የውሂብ ጎታ መረጃን ለይቶ ለማወቅ ይረዳል.
የውሂብ ጎታ ዲዛይኖች የጥራት ግንኙነቶችን ለመግለፅ ባህርይን ይጠቀማሉ;
የአብረሀራት A የ B ን ዋጋ ከወሰነው, ይሄ A -> B - ማለትም በ B ላይ የተመሰረተው በ A ላይ ሲሆን ጥገኛ ነው ማለት ነው. በዚህ ዝምድና ውስጥ, A የ B ን ዋጋ ይወስናል, በሌላነት ደግሞ ለ በ A ይወሰናል.
ለምሳሌ, በሚከተሉት የሠራተኛ ክፍል መምሪያዎች ውስጥ , EmployeeID እና DeptID ሁለቱም እጩ ቁልፎች ናቸው-EmployeeID የዲኤንዩ ዋና ቁልፍ ሲሆን DeptID የውጭ ቁልፍ ነው.
ሌላ ማንኛውም ባህርይ - በዚህ ጉዳይ ላይ EmployeeName እና DeptName - ዋጋውን ለማግኘት በዋናው ቁልፍ ላይ የተመሰረተ ነው.
EmployeeID | EmployeeName | DeptID | DeptName |
---|---|---|---|
Emp1 | ዮሐንስ | Dept001 | ፋይናንስ |
Emp2 | ቲና | Dept003 | ሽያጭ |
ኤም. ኤም | ካርሎስ | Dept001 | ፋይናንስ |
በዚህ ሁኔታ ሠንጠረዥ ሙሉ በሙሉ ጥገኛ አይደለም, ምክንያቱም ተቀጣሪው በሠራተኛው ቁልፍ ተቀጣሪ በሚሆንበት ጊዜ DeptName በ DeptID በኩል ይወሰናል. ይህ በከፊል ጥገኝነት ይባላል .
ይህንን ሠንጠረዥ ከ 2 NF ጋር ለማጣጣም, መረጃውን በሁለት ሰንጠረዦች መለየት ያስፈልገናል.
EmployeeID | EmployeeName | DeptID |
---|---|---|
Emp1 | ዮሐንስ | Dept001 |
Emp2 | ቲና | Dept003 |
ኤም. ኤም | ካርሎስ | Dept001 |
ከሰንጠረዡ ሰንጠረዥ የ DeptName ባህሪን እናስወግዳለን እና አዲስ የጠረጴዛ መምሪያዎችን እንፈጥራለን.
DeptID | DeptName |
---|---|
Dept001 | ፋይናንስ |
Dept002 | የሰው ሀይል አስተዳደር |
Dept003 | ሽያጭ |
አሁን በሰንጠረዦቹ መካከል ያለው ግንኙነት ሙሉ በሙሉ ጥገኛ ነው, ወይም 2NF.
ሙሉ በሙሉ ተፈላጊነት ለምን አስፈላጊ ነው
በዳታ የውሂብ ባህሪ ሙሉ ጥገኝነት የውሂብ መጥቀምን ያረጋግጣል እና የውሂብ ክፍተቶችን ያስወግዳል.
ለምሳሌ, 1NF ብቻ ስለያዘ ከላይ ባለው ክፍል ያለውን ሰንጠረዥ ተመልከቱ. እዚህ እንደገና ነው:
ሠራተኛ | አካባቢ |
---|---|
ዮሐንስ | ሎስ አንጀለስ |
ቲና | ሎስ አንጀለስ |
ቲና | ቺካጎ |
ቲና ሁለት ሪኮች አሏት. አንድ ሁለት መሆናቸውን ሳናስተውል ዝማኔ ካደረግን ውጤቱ ወጥነት የለውም.
ወይንም, አንድ ሰራተኛ ወደዚህ ሰንጠረዥ ለመጨመር ብንሞክር, ግን ቦታውን እስካሁን አላወቅንም? የአካባቢው አይነታ የ NULL እሴቶችን ካልፈቀደ አዲስ ተቀጣሪ ሊያክል ልንከለከል እንችል ይሆናል.
ሙሉ ህልውና ሙሉውን ስዕል አይደለም, ነገር ግን ከሂደቱ ጋር ሲነፃፀር. የርስዎ መሰረታዊ ዳታ በሶስተኛ መደበኛ ፎርም (3NF) ውስጥ መሆንዎን ማረጋገጥ አለብዎ.