ទំនាក់ទំនងមូលដ្ឋានទិន្នន័យ

ទំនាក់ទំនងមូលដ្ឋានទិន្នន័យគឺជាឆ្អឹងខ្នងនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនងទាំងអស់

ទំនាក់ទំនងត្រូវបានបង្កើតឡើងរវាង តារាងមូលដ្ឋានទិន្នន័យ ពីរនៅពេលតារាងមួយមានកូនសោបរទេសដែលយោងតាមកូនសោសំខាន់នៃតារាងមួយផ្សេងទៀត។ នេះគឺជាគំនិតមូលដ្ឋាននៅពីក្រោយមូលដ្ឋានទិន្នន័យទំនាក់ទំនងរយៈពេល។

របៀបដែលគន្លឹះបរទេសធ្វើការដើម្បីបង្កើតទំនាក់ទំនង

សូមពិនិត្យឡើងវិញនូវមូលដ្ឋានគ្រឹះនៃកូនសោបឋមនិងបរទេស។ កូនសោចម្បង កំណត់អត្តសញ្ញាណនីមួយៗនៅក្នុងតារាង។ វាជាប្រភេទ ពាក្យគន្លឹះបេក្ខជន ដែលជាទូទៅជួរឈរដំបូងនៅក្នុងតារាងនិងអាចត្រូវបានបង្កើតដោយទិន្នន័យដោយស្វ័យប្រវត្តិដើម្បីធានាថាវាមានតែមួយ។

គន្លឹះបរទេសគឺជាកូនសោបេក្ខជនមួយផ្សេងទៀត (មិនមែនជាកូនសោសំខាន់) ដែលត្រូវបានប្រើដើម្បីភ្ជាប់កំណត់ត្រាមួយទៅនឹងទិន្នន័យនៅក្នុងតារាងផ្សេងទៀត។

ជាឧទាហរណ៍សូមពិចារណាតារាងពីរនេះដែលបញ្ជាក់ថាគ្រូបង្រៀនណាបង្រៀនមុខវិជ្ជាណាមួយ។

នៅទីនេះកូនសោសំខាន់របស់តារាងវគ្គសិក្សាគឺ Course_ID ។ គន្លឹះបរទេសរបស់វាគឺ Teacher_ID:

វគ្គសិក្សា
វគ្គសិក្សា _ID Course_Name Teacher_ID
Course_001 ជីវវិទ្យា Teacher_001
វគ្គសិក្សា .002 គណិតវិទ្យា Teacher_001
វគ្គសិក្សា .003 អង់គ្លេស គ្រូបង្រៀន _003

អ្នកអាចមើលឃើញថាគន្លឹះបរទេសនៅក្នុងវគ្គសិក្សាផ្គូផ្គងនឹងកូនសោសំខាន់នៅគ្រូបង្រៀន:

គ្រូបង្រៀន
Teacher_ID ឈ្មោះអ្នកគ្រូ
Teacher_001 កាម៉េន
គ្រូបង្រៀន _002 Veronica
គ្រូបង្រៀន _003 Jorge

យើងអាចនិយាយបានថាគន្លឹះបរទេសរបស់ Teacher_ID បានជួយបង្កើត ទំនាក់ទំនង រវាងតុនិងថ្នាក់គ្រូបង្រៀន។

ប្រភេទនៃទំនាក់ទំនងមូលដ្ឋានទិន្នន័យ

ដោយប្រើកូនសោបរទេសឬគ្រាប់ចុចបេក្ខជនផ្សេងទៀតអ្នកអាចអនុវត្តទំនាក់ទំនងបីប្រភេទរវាងតារាង:

ប្រភេទមួយទៅមួយ : ប្រភេទនៃទំនាក់ទំនងនេះអនុញ្ញាតឱ្យមានកំណត់ត្រាតែមួយនៅផ្នែកម្ខាងនៃទំនាក់ទំនង។

កូនសោចម្បងទាក់ទងតែមួយកំណត់ត្រា - ឬគ្មាន - នៅក្នុងតារាងផ្សេងទៀត។ ជាឧទាហរណ៍ក្នុងអាពាហ៍ពិពាហ៍ប្ដីឬប្រពន្ធមានតែប្ដីប្រពន្ធម្នាក់ប៉ុណ្ណោះ។ ប្រភេទនៃទំនាក់ទំនងនេះអាចត្រូវបានអនុវត្តនៅក្នុងតារាងតែមួយហើយដូច្នេះមិនប្រើសោបរទេសទេ។

មួយទៅច្រើន : ទំនាក់ទំនងមួយទៅមួយច្រើនអនុញ្ញាតឱ្យកំណត់ត្រាតែមួយនៅក្នុងតារាងមួយដែលត្រូវបានទាក់ទងទៅនឹងកំណត់ត្រាច្រើននៅក្នុងតារាងផ្សេងទៀត។

ពិចារណាពីមុខជំនួញមួយជាមួយឃ្លាំងទិន្នន័យដែលមានតារាងអតិថិជននិងបញ្ជាទិញ។

អតិថិជនតែមួយអាចទិញការបញ្ជាទិញច្រើនប៉ុន្តែការបញ្ជាទិញតែមួយមិនអាចទាក់ទងជាមួយអតិថិជនច្រើននោះទេ។ ដូច្នេះតារាងបញ្ជាទិញនឹងមានកូនសោបរទេសដែលត្រូវគ្នានឹងកូនសោសំខាន់នៃតារាងអតិថិជនហើយតារាងអតិថិជននឹងមិនមានកូនសោបរទេសដែលចង្អុលទៅតារាងបញ្ជា។

ច្រើនទៅច្រើន : នេះគឺជាទំនាក់ទំនងស្មុគស្មាញដែលកំណត់ត្រាជាច្រើននៅក្នុងតារាងអាចភ្ជាប់ទៅកំណត់ត្រាជាច្រើននៅក្នុងតារាងផ្សេងទៀត។ ឧទាហរណ៍អាជីវកម្មរបស់យើងប្រហែលជាត្រូវការមិនត្រឹមតែតារាងអតិថិជននិងបញ្ជាទិញនោះទេប៉ុន្តែវាក៏ត្រូវការតារាងផលិតផលផងដែរ។

ជាថ្មីម្តងទៀតទំនាក់ទំនងរវាងអតិថិជននិងតារាងបញ្ជាទិញគឺជាលេខមួយទៅច្រើនប៉ុន្តែពិចារណាលើទំនាក់ទំនងរវាងតារាងបញ្ជាទិញនិងផលិតផល។ ការបញ្ជាទិញអាចមានផលិតផលច្រើនហើយផលិតផលមួយអាចត្រូវបានភ្ជាប់ទៅនឹងការបញ្ជាទិញជាច្រើន: អតិថិជនជាច្រើនអាចដាក់បញ្ជាទិញដែលមានផលិតផលដូចគ្នា។ ប្រភេទនៃទំនាក់ទំនងនេះតម្រូវឱ្យមានយ៉ាងហោចណាស់បីតុ។

តើអ្វីជាទំនាក់ទំនងតាមមូលដ្ឋានទិន្នន័យ?

ការបង្កើតទំនាក់ទំនងស្របគ្នារវាងតារាងមូលដ្ឋានទិន្នន័យជួយធានានូវភាពត្រឹមត្រូវនៃទិន្នន័យដែលរួមចំណែកដល់ការធ្វើឱ្យមានមូលដ្ឋានទិន្នន័យ។ ឧទាហរណ៍ប្រសិនបើយើងមិនបានភ្ជាប់តារាងណាមួយតាមរយៈកូនសោរបរទេសទេហើយគ្រាន់តែបញ្ចូលទិន្នន័យនៅតុនិងវគ្គគ្រូបង្រៀនដូចជា:

គ្រូបង្រៀននិងវគ្គសិក្សា
Teacher_ID ឈ្មោះអ្នកគ្រូ វគ្គសិក្សា
Teacher_001 កាម៉េន ជីវវិទ្យាគណិតវិទ្យា
គ្រូបង្រៀន _002 Veronica គណិតវិទ្យា
គ្រូបង្រៀន _003 Jorge អង់គ្លេស

ការរចនានេះគឺមិនអាចបត់បែនបាននិងបំពានលើគោលការណ៍ដំបូងនៃការធម្មតានៃមូលដ្ឋានទិន្នន័យ, ទម្រង់ធម្មតាទីមួយ (1NF), ដែលចែងថាក្រឡាតារាងនីមួយៗគួរតែមានបំណែកមួយដាច់ពីគ្នា។

ឬប្រហែលជាយើងបានសម្រេចចិត្តបន្ថែមកំណត់ត្រាជាលើកទី 2 ឱ្យ Carmen ដើម្បីអនុវត្ត 1NF:

គ្រូបង្រៀននិងវគ្គសិក្សា
Teacher_ID ឈ្មោះអ្នកគ្រូ វគ្គសិក្សា
Teacher_001 កាម៉េន ជីវវិទ្យា
Teacher_001 កាម៉េន គណិតវិទ្យា
គ្រូបង្រៀន _002 Veronica គណិតវិទ្យា
គ្រូបង្រៀន _003 Jorge អង់គ្លេស

នេះនៅតែជាការរចនាទន់ខ្សោយដែលបង្ហាញពីភាពស្មុគស្មាញដែលមិនចាំបាច់និងអ្វីដែលគេហៅថា ការបញ្ចូលទិន្នន័យខុសធម្មតា ដែលមានន័យថាវាអាចរួមចំណែកដល់ទិន្នន័យមិនជាប់លាប់។

ឧទាហរណ៍ប្រសិនបើគ្រូបង្រៀនមានកំណត់ត្រាជាច្រើនតើត្រូវធ្វើយ៉ាងណាប្រសិនបើត្រូវកែតំរូវទិន្នន័យខ្លះប៉ុន្ដែអ្នកដែលធ្វើការកែប្រែទិន្នន័យមិនដឹងថាមានកំណត់ត្រាច្រើនទេ? តារាងនេះនឹងមានទិន្នន័យផ្សេងគ្នាសម្រាប់បុគ្គលដូចគ្នាដោយគ្មានវិធីច្បាស់លាស់ណាមួយដើម្បីសម្គាល់វាឬជៀសវាងវា។

ការបញ្ឈប់តារាងនេះទៅជាតារាងពីរគឺគ្រូបង្រៀននិងវគ្គសិក្សា (ដូចបានបង្ហាញខាងលើ) បង្កើតឱ្យមានទំនាក់ទំនងត្រឹមត្រូវរវាងទិន្នន័យហើយដូច្នេះវាអាចជួយធានាឱ្យមានភាពស៊ីសង្វាក់ទិន្នន័យនិងភាពត្រឹមត្រូវ។