សំណុំបែបបទទីបី (3NF) គឺជាគោលការណ៍មូលដ្ឋានគ្រឹះមួយដែលគាំទ្រភាពសុចរិតនៃទិន្នន័យដោយស្ថាបនាតាម គោលការណ៍ធម្មតា នៃ មូលដ្ឋានទិន្នន័យដែល បានផ្តល់ដោយទម្រង់ធម្មតាទីមួយ (1NF) និងទម្រង់ធម្មតាទី 2 (2NF) ។
តម្រូវការទម្រង់ទីបីធម្មតា
មានតម្រូវការមូលដ្ឋានចំនួនពីរសម្រាប់មូលដ្ឋានទិន្នន័យមួយដែលស្ថិតនៅក្នុងសំណុំបែបបទធម្មតាទីបីគឺ:
- មូលដ្ឋានទិន្នន័យត្រូវតែបំពេញតាមតម្រូវការរបស់ 1NF និង 2NF ។
- ជួរឈរមូលដ្ឋានទិន្នន័យទាំងអស់ត្រូវតែអាស្រ័យលើ កូនសោសំខាន់ ដែលមានន័យថាតម្លៃរបស់ជួរឈរណាមួយអាចត្រូវបានយកចេញពីគ្រាប់ចុចចម្បងតែប៉ុណ្ណោះ។
អំពីភាពអាស្រ័យលើកូនសោសំខាន់
ចូរស្វែងយល់បន្ថែមទៀតនូវអ្វីដែលយើងចង់និយាយដោយការពិតដែលថាជួរឈរទាំងអស់ត្រូវតែអាស្រ័យលើកូនសោសំខាន់។
ប្រសិនបើតម្លៃរបស់ជួរឈរអាចត្រូវបានយកមកពីកូនសោបឋមនិងជួរឈរមួយផ្សេងទៀតនៅក្នុងតារាងវារំលោភលើ 3NF ។ ពិចារណាតារាងនិយោជិកដែលមានជួរឈរទាំងនេះ:
- EmployeeID
- នាមខ្លួន
- នាមត្រកូល
តើទាំង LastName និង FirstName ពឹងផ្អែកតែលើតម្លៃរបស់ EmployeeID ទេ? ល្អតើ LastName អាចពឹងពាក់លើ FirstName បានទេ? ទេពីព្រោះគ្មានអ្វីដែលជាប់ទាក់ទងនឹង LastName នឹងស្នើតម្លៃនៃ FirstName ។ តើ FirstName ពឹងផ្អែកលើ LastName ឬទេ? មិនមានម្តងទៀតទេព្រោះដូចគ្នានេះគឺជាការពិត: ទោះជាមាន LastName ណាមួយក៏ដោយក៏វាមិនអាចផ្តល់ព័ត៌មានជំនួយអំពីតម្លៃនៃ FirstName ។ ដូច្នេះតារាងនេះគឺ 3NF ត្រាប់តាម។
ប៉ុន្តែសូមពិចារណាតារាងរថយន្តនេះ:
- រថយន្ត
- ក្រុមហ៊ុនផលិត
- គំរូ
ក្រុមហ៊ុនផលិតនិងម៉ូដែលអាចទាញយកបានពីយានយន្ត - ប៉ុន្តែម៉ូដែលនេះក៏អាចទាញយកពីក្រុមហ៊ុនផលិតផងដែរព្រោះម៉ូដែលរថយន្តមួយត្រូវបានផលិតដោយក្រុមហ៊ុនផលិតតែប៉ុណ្ណោះ។ ការរៀបចំតារាងនេះគឺមិនអនុលោមតាម 3NF ហើយអាចបណ្តាលឱ្យមានភាពមិនប្រក្រតីនៃទិន្នន័យ។ ឧទាហរណ៍អ្នកអាចធ្វើបច្ចុប្បន្នភាពក្រុមហ៊ុនផលិតដោយមិនចាំបាច់ធ្វើបច្ចុប្បន្នភាពម៉ូដែលដោយណែនាំភាពមិនត្រឹមត្រូវ។
ដើម្បីធ្វើឱ្យវាអនុលោមយើងនឹងត្រូវការផ្លាស់ទីជួរឈរដែលអាស្រ័យបន្ថែមទៅតារាងផ្សេងទៀតហើយយោងវាដោយប្រើគ្រាប់ចុចបរទេស។ នេះនឹងមានលទ្ធផលនៅក្នុងតារាងពីរ:
តារាងរថយន្ត
នៅក្នុងតារាងខាងក្រោម ModelID គឺជាកូនសោបរទេសចំពោះតារាង គំរូ :
- រថយន្ត
- ក្រុមហ៊ុនផលិត
- ModelID
តារាងគំរូ
គំរូផែនទីថ្មីនេះនឹងបង្ហាញដល់អ្នកផលិត។ ប្រសិនបើអ្នកចង់ធ្វើបច្ចុប្បន្នភាពព័ត៌មានរថយន្តណាដែលជាក់លាក់ចំពោះម៉ូដែលមួយអ្នកនឹងធ្វើវានៅក្នុងតារាងនេះជាជាងនៅក្នុងតារាងរថយន្ត។
- ModelID
- ក្រុមហ៊ុនផលិត
- គំរូ
វាលដែលទទួលបានក្នុងគំរូ 3NF
តារាងមួយអាចមានវាលដែលចេញមក - មួយដែលត្រូវបានគណនាដោយផ្អែកលើជួរឈរផ្សេងៗនៅក្នុងតារាង។ ឧទាហរណ៍ពិចារណាតារាងនៃការបញ្ជាទិញធាតុក្រាហ្វិក:
- លេខលំដាប់
- លេខអតិថិជន
- តម្លៃឯកតា
- បរិមាណ
- សរុប
ការបំបែកចំនួនសរុបនៃអនុលោមភាព 3NF ពីព្រោះវាអាចត្រូវបានទាញយកដោយគុណតម្លៃឯកតាតាមបរិមាណជាជាងការពឹងផ្អែកទាំងស្រុងទៅលើគន្លឹះសំខាន់។ យើងត្រូវលុបវាចេញពីតុដើម្បីបំពេញតាមទម្រង់ធម្មតាទី 3 ។
តាមការពិតចាប់តាំងពីវាត្រូវបានចេញមកវាល្អប្រសើរមិនត្រូវរក្សាទុកវានៅក្នុងមូលដ្ឋានទិន្នន័យទេ។
យើងអាចគណនាវាបានយ៉ាងរហ័សនៅពេលដំណើរការសំនួរមូលដ្ឋានទិន្នន័យ។ ឧទាហរណ៍យើងប្រហែលជាធ្លាប់បានប្រើសំណួរនេះពីមុនដើម្បីទាញយកលេខនិងចំនួនលំដាប់។
SELECT OrderNumber, Total FROM WidgetOrdersឥឡូវនេះយើងអាចប្រើសំណួរដូចខាងក្រោម:
លេខរៀងលំដាប់លេខរៀងលេខគ្រឿង * បរិមាណ AS សរុបពី WidgetOrdersដើម្បីសម្រេចបានលទ្ធផលដូចគ្នាដោយមិនបំពានលើច្បាប់ធម្មតា។