ទំនាក់ទំនងមួយទៅច្រើន នៅក្នុងមូលដ្ឋានទិន្នន័យមួយ កើតឡើងនៅពេលដែលកំណត់ត្រានីមួយៗក្នុងតារាង A អាចមានកំណត់ត្រាដែលបានភ្ជាប់ជាច្រើននៅក្នុងតារាង B ប៉ុន្តែកំណត់ត្រានីមួយ ៗ ក្នុងតារាង B អាចមានកំណត់ត្រាតែមួយប៉ុណ្ណោះនៅក្នុងតារាង A. ទំនាក់ទំនងមួយទៅច្រើននៅ មូលដ្ឋានទិន្នន័យគឺជាការរចនាមូលដ្ឋានទិន្នន័យទំនាក់ទំនងទូទៅបំផុតនិងជាបេះដូងនៃការរចនាល្អ។
ពិចារណាពីទំនាក់ទំនងរវាងគ្រូបង្រៀននិងវគ្គសិក្សាដែលពួកគេបង្រៀន។ គ្រូម្នាក់អាចបង្រៀនមុខវិជ្ជាជាច្រើនប៉ុន្តែវគ្គសិក្សានឹងមិនមានទំនាក់ទំនងដូចគ្នាជាមួយគ្រូទេ។
ដូច្នេះសម្រាប់កំណត់ត្រានិមួយៗនៅក្នុងតារាងគ្រូបង្រៀនអាចមានកំណត់ត្រាជាច្រើនក្នុងតារាងវគ្គសិក្សា។ នេះគឺជាទំនាក់ទំនងមួយទៅច្រើន: គ្រូម្នាក់ទៅវគ្គសិក្សាច្រើន។
ហេតុអ្វីការបង្កើតទំនាក់ទំនងមួយឬច្រើនគឺសំខាន់?
ដើម្បីតំណាងឱ្យទំនាក់ទំនងមួយទៅមួយច្រើនអ្នកត្រូវការតារាងយ៉ាងហោចណាស់ពីរ។ តោះមើលមូលហេតុ។
ប្រហែលជាយើងបានបង្កើតតារាងគ្រូបង្រៀនដែលយើងចង់កត់ត្រាឈ្មោះនិងវគ្គសិក្សាដែលបានបង្រៀន។ យើងអាចរចនាវាដូចនេះ:
Teacher_ID | ឈ្មោះអ្នកគ្រូ | វគ្គសិក្សា |
---|---|---|
Teacher_001 | កាម៉េន | ជីវវិទ្យា |
គ្រូបង្រៀន _002 | Veronica | គណិតវិទ្យា |
គ្រូបង្រៀន _003 | Jorge | អង់គ្លេស |
ចុះបើ Carmen បង្រៀនវគ្គពីរឬច្រើន? យើងមានជម្រើសពីរជាមួយនឹងការរចនានេះ។ យើងអាចបន្ថែមវាទៅកំណត់ត្រាដែលមានស្រាប់របស់កាម៉េនដូចនេះ:
Teacher_ID | ឈ្មោះគ្រូបង្រៀន | វគ្គសិក្សា |
---|---|---|
Teacher_001 | កាម៉េន | ជីវវិទ្យាគណិតវិទ្យា |
គ្រូបង្រៀន _002 | Veronica | គណិតវិទ្យា |
គ្រូបង្រៀន _003 | Jorge | អង់គ្លេស |
ការរចនាខាងលើទោះជាយ៉ាងណាគឺមិនអាចបត់បែនបាននិងអាចបណ្តាលឱ្យមានបញ្ហានៅពេលក្រោយពេលព្យាយាមបញ្ចូលកែសម្រួលឬលុបទិន្នន័យ។
វាធ្វើឱ្យពិបាកស្វែងរកទិន្នន័យ។ ការរចនានេះបំពានលើគោលការណ៍ទីមួយនៃការធម្មតានៃមូលដ្ឋានទិន្នន័យ ជាទម្រង់ធម្មតាទីមួយ (1NF) ដែលចែងថាក្រឡាតារាងនីមួយៗគួរតែមានបំណែកមួយដាច់ពីគ្នា។
ជម្រើសផ្សេងទៀតគឺគ្រាន់តែបន្ថែមកំណត់ត្រាទីពីរសម្រាប់ Carmen:
គ្រូ _ID | ឈ្មោះគ្រូបង្រៀន | វគ្គសិក្សា |
---|---|---|
Teacher_001 | កាម៉េន | ជីវវិទ្យា |
Teacher_001 | កាម៉េន | គណិតវិទ្យា |
គ្រូបង្រៀន _002 | Veronica | គណិតវិទ្យា |
គ្រូបង្រៀន _003 | Jorge | អង់គ្លេស |
នេះប្រកាន់ខ្ជាប់ទៅនឹង 1NF ប៉ុន្តែនៅតែជាការរចនាមូលដ្ឋានទិន្នន័យមិនល្អពីព្រោះវាបង្ហាញពីភាពលែងត្រូវការតទៅទៀតហើយអាចធ្វើអោយមានមូលដ្ឋានទិន្នន័យធំដាច់ខ្លាំងមិនចាំបាច់។ សំខាន់ជាងនេះទៅទៀតទិន្នន័យអាចនឹងមិនមានភាពស៊ីចង្វាក់គ្នា។ ជាឧទាហរណ៍ចុះបើឈ្មោះរបស់ខាម៉េនបានផ្លាស់ប្ដូរ? នរណាម្នាក់ធ្វើការជាមួយទិន្នន័យអាចនឹងធ្វើឱ្យទាន់សម័យឈ្មោះរបស់នាងនៅក្នុងកំណត់ត្រាមួយនិងបរាជ័យក្នុងការធ្វើបច្ចុប្បន្នភាពវានៅក្នុងកំណត់ត្រាទីពីរ។ ការរៀបចំនេះរំលោភលើទម្រង់ធម្មតាទី 2 (2NF) ដែលប្រកាន់ខ្ជាប់ទៅនឹង 1NF ហើយក៏ត្រូវជៀសវាងការលែងត្រូវការតទៅទៀតនៃកំណត់ត្រាច្រើនដោយការបែងចែកសំណុំរងនៃទិន្នន័យចូលទៅក្នុងតារាងច្រើននិងការបង្កើតទំនាក់ទំនងរវាងពួកគេ។
របៀបរៀបចំមូលដ្ឋានទិន្នន័យដោយមានទំនាក់ទំនងមួយទៅច្រើន
ដើម្បីអនុវត្តទំនាក់ទំនងមួយទៅច្រើននៅក្នុងតារាងគ្រូបង្រៀននិងវគ្គសិក្សាយើងបំបែកតុជាពីរហើយភ្ជាប់វាដោយប្រើ កូនសោរបរទេស ។
នៅទីនេះយើងបានលុបខ្ទង់វគ្គសិក្សានៅក្នុងតារាងគ្រូបង្រៀន:
គ្រូ _ID | ឈ្មោះគ្រូបង្រៀន |
---|---|
Teacher_001 | កាម៉េន |
គ្រូបង្រៀន _002 | Veronica |
គ្រូបង្រៀន _003 | Jorge |
ហើយនៅទីនេះគឺជាតារាងលំហាត់។ ចំណាំថាគន្លឹះបរទេសរបស់វា Teacher_ID ភ្ជាប់វគ្គសិក្សាទៅគ្រូបង្រៀននៅក្នុងតារាងគ្រូបង្រៀន:
វគ្គសិក្សា _ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | ជីវវិទ្យា | Teacher_001 |
វគ្គសិក្សា .002 | គណិតវិទ្យា | Teacher_001 |
វគ្គសិក្សា .003 | អង់គ្លេស | គ្រូបង្រៀន _003 |
យើងបានបង្កើតទំនាក់ទំនងរវាងតារាងគ្រូបង្រៀននិងតារាងសិក្សាដោយប្រើកូនសោរបរទេស។
នេះប្រាប់យើងថាជីវវិទ្យានិងគណិតវិទ្យាត្រូវបានបង្រៀនដោយ Carmen ហើយថា Jorge បង្រៀនភាសាអង់គ្លេស។
យើងអាចមើលឃើញពីរបៀបដែលការរចនានេះចៀសវាងការលែងត្រូវការតទៅទៀតដែលអនុញ្ញាតឱ្យគ្រូម្នាក់ៗបង្រៀនមុខវិជ្ជាជាច្រើននិងអនុវត្តទំនាក់ទំនងមួយទៅច្រើន។
មូលដ្ឋានទិន្នន័យក៏អាចអនុវត្តទំនាក់ទំនងមួយទៅមួយនិងទំនាក់ទំនងជាច្រើនទៅច្រើន។