ការពឹងផ្អែកលើមុខងារពេញលេញគឺជាស្ថានភាព ធម្មតា នៃ មូលដ្ឋានទិន្នន័យ ដែលស្មើទៅនឹងបទដ្ឋានធម្មតានៃ ទម្រង់ធម្មតាទីពីរ (2NF) ។ សរុបសេចក្តីនេះមានន័យថាវាបំពេញនូវតម្រូវការនៃទម្រង់ធម្មតាទីមួយ (1NF) ហើយគុណលក្ខណៈមិនសំខាន់ទាំងអស់សុទ្ធតែពឹងផ្អែកលើមុខងារសំខាន់ៗ។
នេះមិនស្មុគស្មាញទេព្រោះវាអាចស្តាប់ឮ។ សូមក្រឡេកមើលរឿងនេះបន្ថែម។
សង្ខេបនៃទម្រង់ធម្មតាដំបូង
មុនពេលដែលមូលដ្ឋានទិន្នន័យមួយដែលអាចពឹងផ្អែកលើមុខងារទាំងស្រុងវាត្រូវតែបំពេញតាម ទម្រង់ធម្មតាទីមួយ ។
ទាំងអស់នេះមានន័យថាគុណលក្ខណៈនីមួយៗត្រូវមានតំលៃអាតូមតែមួយ។
ឧទាហរណ៍តារាងដូចខាងក្រោម មិន អនុលោមតាម 1NF ទេពីព្រោះបុគ្គលិក Tina ត្រូវបានភ្ជាប់ទៅទីតាំងពីរពួកគេទាំងពីរនៅក្នុងក្រឡាតែមួយ:
បុគ្គលិក | ទីកន្លែង |
---|---|
ចន | ទីក្រុង Los Angeles |
Tina | ឡូសអាន់ជឺឡេសឈីកូស៊ី |
ការអនុញ្ញាតការរចនានេះអាចប៉ះពាល់អវិជ្ជមានដល់ការធ្វើបច្ចុប្បន្នភាពទិន្នន័យឬធាតុ។ ដើម្បីធានាការអនុលោមតាម 1NF តម្រៀបតារាងឡើងវិញដូច្នេះគុណលក្ខណៈទាំងអស់ (ឬក្រឡាជួរឈរ) មានតម្លៃតែមួយ:
បុគ្គលិក | ទីកន្លែង |
---|---|
ចន | ទីក្រុង Los Angeles |
Tina | ទីក្រុង Los Angeles |
Tina | ឈីកាហ្គោ |
ប៉ុន្តែ 1NF នៅតែមិនគ្រប់គ្រាន់ដើម្បីចៀសវាងបញ្ហាជាមួយនឹងទិន្នន័យ។
របៀបដែល 2NF ធ្វើការដើម្បីធានានូវភាពអាស្រ័យពេញលេញ
ដើម្បីពឹងផ្អែកទាំងស្រុងគុណលក្ខណៈកូនសោដែលមិនមែនជាបេក្ខជនទាំងអស់ត្រូវតែអាស្រ័យលើកូនសោសំខាន់។ (ចងចាំគុណសម្បត្តិ កូនសោកូនសោ គឺជាកូនសោរ (ឧទាហរណ៍គ្រាប់ចុចចម្បងឬបរទេស) ដែលប្រើដើម្បីកំណត់អត្តសញ្ញាណទិន្នន័យមូលដ្ឋាន។
អ្នករចនាមូលដ្ឋានទិន្នន័យប្រើការកំណត់ដើម្បីពិពណ៌នាអំពីទំនាក់ទំនងដែលពឹងផ្អែករវាងគុណលក្ខណៈ:
ប្រសិនបើគុណលក្ខណៈ A កំណត់តម្លៃនៃ B នោះយើងសរសេរ A -> B - មានន័យថា B គឺពឹងផ្អែកលើ A. នៅក្នុងទំនាក់ទំនងនេះ A កំណត់តម្លៃនៃ B ខណៈពេល B ពឹងផ្អែកលើ A.
ឧទាហរណ៍នៅក្នុងតារាង បុគ្គលិករបស់បុគ្គលិក ដូចខាងក្រោម EmployeeID និង DeptID គឺជាកូនសោបេក្ខជន: EmployeeID គឺជាកូនសោសំខាន់របស់តារាងហើយ DeptID គឺជាកូនសោរបរទេស។
គុណលក្ខណៈណាមួយផ្សេងទៀត - ក្នុងករណីនេះ EmployeeName និង DeptName - ត្រូវតែពឹងផ្អែកលើកូនសោសំខាន់ដើម្បីទទួលបានតម្លៃរបស់វា។
EmployeeID | ឈ្មោះបុគ្គលិក | DeptID | DeptName |
---|---|---|---|
Emp1 | ចន | Dept001 | ហិរញ្ញវត្ថុ |
Emp2 | Tina | Dept003 | ការលក់ |
អាល់ប៊ុម | Carlos | Dept001 | ហិរញ្ញវត្ថុ |
ក្នុងករណីនេះតារាងមិនពឹងផ្អែកទាំងស្រុងទេពីព្រោះខណៈពេល EmployeeName ពឹងផ្អែកលើកូនសោសំខាន់ EmployeeID DeptName អាស្រ័យលើ DeptID ។ នេះហៅថា ការពឹងផ្អែកមួយផ្នែក ។
ដើម្បីធ្វើឱ្យតារាងនេះអនុលោមទៅ 2NF យើងត្រូវការបំបែកទិន្នន័យទៅជាតារាងពីរ:
EmployeeID | ឈ្មោះបុគ្គលិក | DeptID |
---|---|---|
Emp1 | ចន | Dept001 |
Emp2 | Tina | Dept003 |
អាល់ប៊ុម | Carlos | Dept001 |
យើងយកគុណលក្ខណៈ DeptName ចេញពីតារាង និយោជិក ហើយបង្កើតតារាងថ្មី:
DeptID | DeptName |
---|---|
Dept001 | ហិរញ្ញវត្ថុ |
Dept002 | ធនធានមនុស្ស |
Dept003 | ការលក់ |
ឥលូវនេះទំនាក់ទំនងរវាងតារាងគឺពឹងផ្អែកទាំងស្រុងឬក្នុង 2NF ។
ហេតុអ្វីការអាស្រ័យពេញលេញជាការសំខាន់?
ការពឹងផ្អែកទាំងស្រុងរវាងគុណលក្ខណៈមូលដ្ឋានទិន្នន័យជួយធានានូវភាពត្រឹមត្រូវនៃទិន្នន័យនិងជៀសវាងភាពមិនប្រក្រតីនៃទិន្នន័យ។
ឧទាហរណ៏, ពិចារណាតារាងនៅក្នុងផ្នែកខាងលើដែល adheres តែទៅ 1NF ។ នៅទីនេះវាគឺជាថ្មីម្តងទៀត:
បុគ្គលិក | ទីកន្លែង |
---|---|
ចន | ទីក្រុង Los Angeles |
Tina | ទីក្រុង Los Angeles |
Tina | ឈីកាហ្គោ |
Tina មានកំណត់ត្រាពីរ។ ប្រសិនបើយើងធ្វើបច្ចុប្បន្នភាពមួយដោយមិនដឹងថាមានពីរនោះលទ្ធផលនឹងមិនមានភាពមិនស៊ីគ្នាទេ។
ឬយ៉ាងម៉េចបើយើងចង់បន្ថែមបុគ្គលិកទៅតុនេះប៉ុន្តែយើងមិនទាន់ដឹងពីទីតាំងទេ? យើងអាចនឹងមិនអនុញ្ញាតឱ្យបុគ្គលិកថ្មីបន្ថែមទៀតទេប្រសិនបើគុណលក្ខណៈទីតាំងមិនអនុញ្ញាតតម្លៃ NULL ។
ភាពពឹងផ្អែកទាំងស្រុងមិនមែនជារូបភាពទាំងមូលទេទោះបីជាវាទាក់ទងទៅនឹងការធម្មតា។ អ្នកត្រូវប្រាកដថាមូលដ្ឋានទិន្នន័យរបស់អ្នកស្ថិតក្នុង ទម្រង់សាមញ្ញទីបី (3NF) ។