ភាពពឹងផ្អែកពេញមុខងារក្នុងមូលដ្ឋានទិន្នន័យធម្មតា

ការពឹងផ្អែកលើមុខងារពេញលេញគឺជាស្ថានភាព ធម្មតា នៃ មូលដ្ឋានទិន្នន័យ ដែលស្មើទៅនឹងបទដ្ឋានធម្មតានៃ ទម្រង់ធម្មតាទីពីរ (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) ។