ទំនាក់ទំនងមួយទៅច្រើននៅក្នុងមូលដ្ឋានទិន្នន័យ

ទំនាក់ទំនងមួយទៅច្រើន នៅក្នុងមូលដ្ឋានទិន្នន័យមួយ កើតឡើងនៅពេលដែលកំណត់ត្រានីមួយៗក្នុងតារាង 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 បង្រៀនភាសាអង់គ្លេស។

យើងអាចមើលឃើញពីរបៀបដែលការរចនានេះចៀសវាងការលែងត្រូវការតទៅទៀតដែលអនុញ្ញាតឱ្យគ្រូម្នាក់ៗបង្រៀនមុខវិជ្ជាជាច្រើននិងអនុវត្តទំនាក់ទំនងមួយទៅច្រើន។

មូលដ្ឋានទិន្នន័យក៏អាចអនុវត្តទំនាក់ទំនងមួយទៅមួយនិងទំនាក់ទំនងជាច្រើនទៅច្រើន។