የመረጃ ቋት ግንኙነት ምንድን ነው?

ዝርዝር ሁኔታ:

የመረጃ ቋት ግንኙነት ምንድን ነው?
የመረጃ ቋት ግንኙነት ምንድን ነው?
Anonim

ግንኙነቱ በሁለት የመረጃ ቋት ሰንጠረዦች መካከል የሚመሰረተው አንዱ ሠንጠረዥ የሌላውን ሠንጠረዥ ዋና ቁልፍ የሚጠቅስ የውጭ አገር ቁልፍ ሲጠቀም ነው። ይህ ተዛማጅ ዳታቤዝ ከሚለው ቃል በስተጀርባ ያለው መሰረታዊ ፅንሰ-ሀሳብ ነው።

ግንኙነት ለመመስረት የውጭ ቁልፍ እንዴት እንደሚሰራ

አንድ ዋና ቁልፍ በሰንጠረዡ ውስጥ ያለውን እያንዳንዱን መዝገብ በተለየ ሁኔታ ይለያል። ብዙውን ጊዜ በሰንጠረዥ ውስጥ የመጀመሪያው አምድ የሆነ የእጩ ቁልፍ አይነት ሲሆን ልዩ መሆኑን ለማረጋገጥ በመረጃ ቋቱ በራስ-ሰር ሊመነጭ ይችላል። የውጪ ቁልፍ ሌላ የእጩ ቁልፍ ነው (ዋናው ቁልፍ አይደለም) መዝገብ ከሌላ ሰንጠረዥ ጋር ለማገናኘት የሚያገለግል።

ለምሳሌ፣ የትኛው መምህር የትኛውን ኮርስ እንደሚያስተምር የሚለዩትን እነዚህን ሁለት ሰንጠረዦች አስቡባቸው። እዚህ የኮርስ ሰንጠረዥ ዋና ቁልፍ Course_ID ነው። የውጪ ቁልፉ Teacher_ID ነው፡

ኮርስ_ID የኮርስ_ስም የመምህር_መታወቂያ
ኮርስ_001 ባዮሎጂ መምህር_001
ኮርስ_002 ሒሳብ መምህር_002
ኮርስ_003 እንግሊዘኛ መምህር_003

በኮርሶች ውስጥ ያለው የውጪ ቁልፍ በመምህራን ውስጥ ካለው ዋና ቁልፍ ጋር እንደሚዛመድ ማየት ይችላሉ፡

የመምህር_መታወቂያ የመምህር_ስም
መምህር_001 ካርመን
መምህር_002 ቬሮኒካ
መምህር_003 ጆርጅ

የመምህር_መታወቂያ የውጪ ቁልፍ በኮርሶቹ እና በመምህራን ጠረጴዛዎች መካከል ግንኙነት ለመመስረት ረድቷል ማለት እንችላለን።

Image
Image

የመረጃ ቋት ግንኙነት ዓይነቶች

የውጭ ቁልፎችን ወይም ሌሎች የእጩ ቁልፎችን በመጠቀም በጠረጴዛዎች መካከል ሶስት አይነት ግንኙነቶችን መተግበር ይችላሉ፡

አንድ-ለአንድ

ይህ ዓይነቱ ግንኙነት በእያንዳንዱ የግንኙነቱ ክፍል ላይ አንድ መዝገብ ብቻ ይፈቅዳል። ዋናው ቁልፍ በሌላ ሠንጠረዥ ውስጥ ከአንድ መዝገብ (ወይም ምንም) ጋር ብቻ ይዛመዳል። ለምሳሌ, በትዳር ውስጥ እያንዳንዱ የትዳር ጓደኛ አንድ ሌላ የትዳር ጓደኛ ብቻ ነው ያለው. ይህ ዓይነቱ ግንኙነት በአንድ ጠረጴዛ ውስጥ ሊተገበር ስለሚችል የውጭ ቁልፍ አይጠቀምም።

ከአንድ-ለብዙ

የአንድ ለአንድ ግንኙነት በአንድ ሠንጠረዥ ውስጥ ያለ አንድ ሪከርድ በሌላ ሠንጠረዥ ውስጥ ከበርካታ መዝገቦች ጋር እንዲዛመድ ያስችለዋል። የደንበኞች እና የትዕዛዝ ሠንጠረዦች ያለው የውሂብ ጎታ ያለው ንግድ ያስቡበት።

አንድ ደንበኛ ብዙ ትዕዛዞችን መግዛት ይችላል፣ነገር ግን አንድ ትዕዛዝ ከብዙ ደንበኞች ጋር ሊገናኝ አልቻለም። ስለዚህ የትዕዛዝ ሠንጠረዡ ከደንበኞች ሠንጠረዥ ዋና ቁልፍ ጋር የሚዛመድ የውጭ ቁልፍ ይይዛል፣ የደንበኞች ጠረጴዛ ደግሞ ወደ የትዕዛዝ ጠረጴዛው የሚያመለክት የውጭ ቁልፍ አይኖረውም።

ከብዙ-ለብዙ

ይህ በሠንጠረዥ ውስጥ ያሉ ብዙ መዝገቦች በሌላ ሠንጠረዥ ውስጥ ካሉ ብዙ መዝገቦች ጋር የሚያገናኙበት ውስብስብ ግንኙነት ነው። ለምሳሌ፣ የእኛ ንግድ ምናልባት የደንበኞች እና የትዕዛዝ ሠንጠረዦችን ይፈልጋል፣ እና እንዲሁም የምርት ሠንጠረዥ ያስፈልገዋል።

እንደገና፣ በደንበኞች እና በትእዛዞች ሰንጠረዥ መካከል ያለው ግንኙነት አንድ ለአንድ ነው፣ነገር ግን በትእዛዞች እና ምርቶች ሰንጠረዥ መካከል ያለውን ግንኙነት አስቡበት። ትዕዛዙ ብዙ ምርቶችን ሊይዝ ይችላል፣ እና ብዙ ደንበኞች አንዳንድ ተመሳሳይ ምርቶችን የያዘ ትእዛዝ ስለሚያቀርቡ ምርቱ ከበርካታ ትዕዛዞች ጋር ሊገናኝ ይችላል። የዚህ አይነት ግንኙነት ቢያንስ ሶስት ሰንጠረዦችን ይፈልጋል።

የመረጃ ቋት ግንኙነቶች ለምን አስፈላጊ ናቸው?

በመረጃ ቋት ሰንጠረዦች መካከል ወጥነት ያለው ግንኙነት መፍጠር የውሂብን ትክክለኛነት ለማረጋገጥ ይረዳል፣ ይህም ለዳታቤዝ መደበኛነት አስተዋፅዖ ያደርጋል። ለምሳሌ፣ ምንም ሰንጠረዦችን በባዕድ ቁልፍ ካላገናኘን እና በምትኩ በኮርሶች እና መምህራን ሰንጠረዦች ውስጥ ያለውን መረጃ ካጣመርን ምን ይሆናል፡-

የመምህር_መታወቂያ የመምህር_ስም ኮርስ
መምህር_001 ካርመን ባዮሎጂ፣ ሂሳብ
መምህር_002 ቬሮኒካ ሒሳብ
መምህር_003 ጆርጅ እንግሊዘኛ

ይህ ንድፍ የማይለዋወጥ እና የመጀመሪያውን የዳታቤዝ መደበኛ መደበኛ መርህ ይጥሳል፣ First Normal Form፣ ይህም እያንዳንዱ የጠረጴዛ ሕዋስ አንድ ነጠላ እና የተለየ ውሂብ መያዝ አለበት።

ወይም ምናልባት 1NF፡ን ለማስፈጸም ለካርመን ሁለተኛ ሪከርድ ለመጨመር ወስነን ይሆናል።

የመምህር_መታወቂያ የመምህር_ስም ኮርስ
መምህር_001 ካርመን ባዮሎጂ
መምህር_001 ካርመን ሒሳብ
መምህር_002 ቬሮኒካ ሒሳብ
መምህር_003 ጆርጅ እንግሊዘኛ

ይህ አሁንም ደካማ ንድፍ ነው፣ አላስፈላጊ ብዜት እና ዳታ ማስገቢያ anomalies የሚባለውን ያስተዋውቃል፣ ይህ ማለት ወጥነት ለሌለው ውሂብ አስተዋፅዖ ሊያደርግ ይችላል።ለምሳሌ, አንድ አስተማሪ ብዙ መዝገቦች ካሉት, አንዳንድ መረጃዎች መታረም ቢያስፈልግ, ነገር ግን የውሂብ አርትዖቱን የሚያከናውን ሰው ብዙ መዝገቦች እንዳሉ ካላወቀስ? ሠንጠረዡ ከዚያ ለመለየት ወይም ለማስወገድ ምንም ግልጽ መንገድ ከሌለ ለተመሳሳይ ግለሰብ የተለየ ውሂብ ይይዛል።

ይህን ሠንጠረዥ በሁለት ጠረጴዛዎች ማለትም መምህራን እና ኮርሶች መስበር በመረጃው መካከል ተገቢውን ግንኙነት ስለሚፈጥር የውሂብ ወጥነት እና ትክክለኛነት ለማረጋገጥ ይረዳል።

የሚመከር: