ទំនាក់ទំនងមូលដ្ឋានទិន្នន័យគឺជាឆ្អឹងខ្នងនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនងទាំងអស់
ទំនាក់ទំនងត្រូវបានបង្កើតឡើងរវាង តារាងមូលដ្ឋានទិន្នន័យ ពីរនៅពេលតារាងមួយមានកូនសោបរទេសដែលយោងតាមកូនសោសំខាន់នៃតារាងមួយផ្សេងទៀត។ នេះគឺជាគំនិតមូលដ្ឋាននៅពីក្រោយមូលដ្ឋានទិន្នន័យទំនាក់ទំនងរយៈពេល។
របៀបដែលគន្លឹះបរទេសធ្វើការដើម្បីបង្កើតទំនាក់ទំនង
សូមពិនិត្យឡើងវិញនូវមូលដ្ឋានគ្រឹះនៃកូនសោបឋមនិងបរទេស។ កូនសោចម្បង កំណត់អត្តសញ្ញាណនីមួយៗនៅក្នុងតារាង។ វាជាប្រភេទ ពាក្យគន្លឹះបេក្ខជន ដែលជាទូទៅជួរឈរដំបូងនៅក្នុងតារាងនិងអាចត្រូវបានបង្កើតដោយទិន្នន័យដោយស្វ័យប្រវត្តិដើម្បីធានាថាវាមានតែមួយ។
គន្លឹះបរទេសគឺជាកូនសោបេក្ខជនមួយផ្សេងទៀត (មិនមែនជាកូនសោសំខាន់) ដែលត្រូវបានប្រើដើម្បីភ្ជាប់កំណត់ត្រាមួយទៅនឹងទិន្នន័យនៅក្នុងតារាងផ្សេងទៀត។
ជាឧទាហរណ៍សូមពិចារណាតារាងពីរនេះដែលបញ្ជាក់ថាគ្រូបង្រៀនណាបង្រៀនមុខវិជ្ជាណាមួយ។
នៅទីនេះកូនសោសំខាន់របស់តារាងវគ្គសិក្សាគឺ 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 | អង់គ្លេស |
នេះនៅតែជាការរចនាទន់ខ្សោយដែលបង្ហាញពីភាពស្មុគស្មាញដែលមិនចាំបាច់និងអ្វីដែលគេហៅថា ការបញ្ចូលទិន្នន័យខុសធម្មតា ដែលមានន័យថាវាអាចរួមចំណែកដល់ទិន្នន័យមិនជាប់លាប់។
ឧទាហរណ៍ប្រសិនបើគ្រូបង្រៀនមានកំណត់ត្រាជាច្រើនតើត្រូវធ្វើយ៉ាងណាប្រសិនបើត្រូវកែតំរូវទិន្នន័យខ្លះប៉ុន្ដែអ្នកដែលធ្វើការកែប្រែទិន្នន័យមិនដឹងថាមានកំណត់ត្រាច្រើនទេ? តារាងនេះនឹងមានទិន្នន័យផ្សេងគ្នាសម្រាប់បុគ្គលដូចគ្នាដោយគ្មានវិធីច្បាស់លាស់ណាមួយដើម្បីសម្គាល់វាឬជៀសវាងវា។
ការបញ្ឈប់តារាងនេះទៅជាតារាងពីរគឺគ្រូបង្រៀននិងវគ្គសិក្សា (ដូចបានបង្ហាញខាងលើ) បង្កើតឱ្យមានទំនាក់ទំនងត្រឹមត្រូវរវាងទិន្នន័យហើយដូច្នេះវាអាចជួយធានាឱ្យមានភាពស៊ីសង្វាក់ទិន្នន័យនិងភាពត្រឹមត្រូវ។