មិនថាអ្នកកំពុងធ្វើការជាមួយមូលដ្ឋានទិន្ន័យដែលផ្ទុកទិន្នន័យរាប់រយឬកំណត់ត្រារាប់លានការរចនាមូលដ្ឋានទិន្នន័យត្រឹមត្រូវតែងតែសំខាន់។ វាមិនត្រឹមតែអាចទាញយកព័ត៌មានបានកាន់តែងាយស្រួលនោះទេវាថែមទាំងងាយស្រួលក្នុងការពង្រីកមូលដ្ឋានទិន្នន័យនាពេលអនាគតផងដែរ។ ជាអកុសលវាងាយស្រួលក្នុងការធ្លាក់ចូលអន្ទាក់មួយចំនួនដែលអាចធ្វើឱ្យរឿងពិបាកក្នុងពេលអនាគត។
មានសៀវភៅទាំងស្រុងដែលសរសេរលើប្រធានបទនៃការធ្វើមូលដ្ឋានទិន្នន័យជាធម្មតាប៉ុន្តែប្រសិនបើអ្នកគ្រាន់តែជៀសវាងកំហុសឆ្គងទាំងនេះអ្នកនឹងមានផ្លូវត្រឹមត្រូវក្នុងការរចនាមូលដ្ឋានទិន្នន័យល្អ។
កំហុសក្នុងមូលដ្ឋានទិន្នន័យ # 1: ធ្វើម្តងទៀតវាលក្នុងតារាងមួយ
ក្បួនមូលដ្ឋាននៃមេដៃសម្រាប់ការរចនាមូលដ្ឋានទិន្នន័យល្អគឺដើម្បីទទួលស្គាល់ការធ្វើឡើងវិញទិន្នន័យនិងដើម្បីដាក់ជួរឈរទាំងនោះឡើងវិញនៅក្នុងតារាងរបស់ពួកគេផ្ទាល់។ ធ្វើម្តងទៀតវាលនៅក្នុងតារាងមួយជារឿងធម្មតាសម្រាប់អ្នកដែលមកពីពិភពនៃសៀវភៅបញ្ជីប៉ុន្តែខណៈពេលដែលសៀវភៅបញ្ជីមានលំអៀងទៅនឹងការរចនាដោយរចនាមូលដ្ឋានទិន្នន័យគួរមានទំនាក់ទំនង។ វាដូចជាចូលពី 2D ទៅ 3D ។
សំណាងល្អវាលដោះដែលងាយស្រួលមើល។ សូមក្រឡេកមើលតារាងនេះ:
លេខសម្គាល់លំដាប់ | ផលិតផល 1 | ផលិតផល 2 | ផលិតផល 3 |
1 | Teddy Bears | សណ្តែកចាលី | |
2 | សណ្តែកចាលី |
តើមានអ្វីកើតឡើងនៅពេលបញ្ជាមានផលិតផល 4? យើងចាំបាច់ត្រូវបន្ថែមវាលមួយផ្សេងទៀតទៅក្នុងតារាងដើម្បីគាំទ្រដល់ផលិតផលជាងបី។ ហើយប្រសិនបើយើងបានបង្កើតកម្មវិធីអតិថិជនមួយនៅជុំវិញតុដើម្បីជួយយើងក្នុងទិន្នន័យបញ្ចូលយើងប្រហែលជាត្រូវកែប្រែវាជាមួយវាលផលិតផលថ្មី។ ហើយតើយើងរកឃើញការបញ្ជាទិញទាំងអស់ជាមួយ Jellybeans តាមរបៀបណា? យើងនឹងត្រូវបង្ខំសួររាល់វាលផលិតផលក្នុងតារាងជាមួយសេចក្តីថ្លែងការណ៍ SQL មួយដែលអាចមើលទៅដូចជា: SELECT * FROM ផលិតផល WHERE ផលិតផល = 'សណ្តែកចាន' ឬផលិតផល 2 = 'ក្លែងក្លាយសណ្តែក' ឬផលិតផល 3 = 'សណ្តែកចេលី' ។
ជំនួសឱ្យការមានតារាងតែមួយដែលផ្ទុកព័ត៌មានទាំងអស់ជាមួយគ្នាយើងគួរតែមានតារាងបីដែលនីមួយៗផ្ទុកព័ត៌មានខុស ៗ គ្នា។ នៅក្នុងឧទាហរណ៍នេះយើងចង់បានតារាងបញ្ជាទិញជាមួយនឹងព័ត៌មានអំពីលំដាប់ខ្លួនឯងតារាងផលិតផលជាមួយនឹងផលិតផលរបស់យើងទាំងអស់និងឧបករណ៍ Tablet ផលិតផល Orders ដែលភ្ជាប់ផលិតផលទៅតាមលំដាប់។
លេខសម្គាល់លំដាប់ | លេខសម្គាល់អតិថិជន | កាលបរិច្ឆេទបញ្ជាទិញ | សរុប |
1 | 7 | 1/24/17 | 19.99 |
2 | 9 | 1/25/17 | 24.99 |
ផលិតផល ID | ផលិតផល | រាប់ |
1 | Teddy Bears | 1 |
2 | សណ្តែកចាលី | 100 |
ProductOrderID | ផលិតផល ID | លេខសម្គាល់លំដាប់ |
101 | 1 | 1 |
102 | 2 | 1 |
សូមកត់សម្គាល់ពីរបៀបដែលតារាងនីមួយៗមានវាលអត្តសញ្ញាណតែមួយគត់របស់វា។ នេះគឺជាកូនសោសំខាន់។ យើងភ្ជាប់តារាងដោយប្រើគ្រាប់ចុចសំខាន់ជាគន្លឹះបរទេសនៅក្នុងតារាងផ្សេងទៀត។ អានបន្ថែមអំពីកូនសោសំខាន់និងកូនសោបរទេស។
ការក្លែងបន្លំមូលដ្ឋានទិន្នន័យ # 2: បង្កប់តារាងក្នុងតារាង
នេះគឺជាកំហុសធម្មតាមួយទៀតប៉ុន្តែវាមិនតែងតែមានលក្ខណៈចង្អៀតទេ។ នៅពេលរចនាមូលដ្ឋានទិន្នន័យអ្នកចង់ធ្វើឱ្យប្រាកដថាទិន្នន័យទាំងអស់នៅក្នុងតារាងមួយទាក់ទងនឹងខ្លួនវា។ វាដូចជាការលេងល្បែងរបស់កូនក្មេងអំពីការមើលអ្វីខុសគ្នា។ ប្រសិនបើអ្នកមានចេកស្ទីលប៊ឺសនិងហ្វេសប៊ុកទូរទស្សន៍អាចជាកន្លែងផ្សេង។
នៅលើបន្ទាត់ដូចគ្នានេះដែរប្រសិនបើអ្នកមានតារាងនៃអ្នកលក់ព័ត៌មានទាំងអស់នៅក្នុងតារាងនោះគួរតែទាក់ទងជាពិសេសទៅនឹងអ្នកលក់នោះ។ ព័ត៌មានបន្ថែមណាមួយដែលមិនមានតែមួយគត់ចំពោះអ្នកលក់នោះអាចជាកន្លែងផ្សេងទៀតនៅក្នុងមូលដ្ឋានទិន្នន័យរបស់អ្នក។
SalesID | ដំបូង | ចុងក្រោយ | អាសយដ្ឋាន | លេខទូរសព្ទ | ការិយាល័យ | លេខការិយាល័យ |
1 | ស | Elliot | 118 Main St, Austin, TX | (215) 555-5858 | ទីក្រុងអូស្ទីន | (212) 421-2412 |
2 | Alice | ស្មី | 504 ផ្លូវ 2, ញូវយ៉ក, ញូវយ៉ក | (211) 122-1821 | ញូវយ៉ក (ខាងកើត) | (211) 855-4541 |
3 | Joe | ព្រះសហគមន៍កាតូលិក | 428 Aker St, Austin, TX | (215) 545-5545 | ទីក្រុងអូស្ទីន | (212) 421-2412 |
ខណៈពេលដែលតារាងនេះអាចនឹងមើលទៅដូចជាវាត្រូវបានទាក់ទងទាំងអស់ទៅអ្នកលក់បុគ្គលវាពិតជាមានតារាងដែលបានបង្កប់នៅក្នុងតារាង។ សូមកត់សម្គាល់ពីរបៀបដែល Office និង OfficeNumber ធ្វើម្តងទៀតជាមួយ "Austin Downtown" ។ ចុះបើលេខទូរស័ព្ទការិយាល័យមានការប្រែប្រួល? អ្នកចាំបាច់ត្រូវធ្វើបច្ចុប្បន្នភាពសំណុំទិន្នន័យទាំងមូលសម្រាប់តែការផ្លាស់ប្តូរព័ត៌មានតែមួយគត់ដែលមិនមែនជារឿងល្អទេ។ វាលទាំងនេះគួរតែត្រូវបានផ្លាស់ទីទៅតារាងផ្ទាល់ខ្លួនរបស់ពួកគេ។
SalesID | ដំបូង | ចុងក្រោយ | អាសយដ្ឋាន | លេខទូរសព្ទ | OfficeID |
1 | ស | Elliot | 118 Main St, Austin, TX | (215) 555-5858 | 1 |
2 | Alice | ស្មី | 504 ផ្លូវ 2, ញូវយ៉ក, ញូវយ៉ក | (211) 122-1821 | 2 |
3 | Joe | ព្រះសហគមន៍កាតូលិក | 428 Aker St, Austin, TX | (215) 545-5545 | 1 |
OfficeID | ការិយាល័យ | លេខការិយាល័យ |
1 | ទីក្រុងអូស្ទីន | (212) 421-2412 |
2 | ញូវយ៉ក (ខាងកើត) | (211) 855-4541 |
ប្រភេទនៃការរចនានេះក៏ផ្តល់ឱ្យអ្នកនូវសមត្ថភាពក្នុងការបន្ថែមព័ត៌មានបន្ថែមទៅតុការិយាល័យដោយមិនបង្កើតសុបិន្តអាក្រក់នៅកន្លែងលក់ដូរ។ ស្រមៃមើលថាតើមានការងារប៉ុន្មានដែលត្រូវធ្វើដោយគ្រាន់តែតាមដានអាស័យដ្ឋានផ្លូវទីក្រុងរដ្ឋលេខកូដប្រៃសណីយ៍ប្រសិនបើគ្រប់ព័ត៌មានទាំងអស់នោះស្ថិតនៅក្នុងតារាងបុគ្គលិកលក់ដូរ!
ការក្លែងបន្លំមូលដ្ឋានទិន្នន័យ # 3: ការបញ្ចូលពត៌មានពីរឬច្រើនទៅក្នុងវាលតែមួយ
ការបង្កប់ព័ត៌មានការិយាល័យទៅក្នុងតារាងបុគ្គលិកផ្នែកលក់មិនមែនជាបញ្ហាតែមួយគត់ជាមួយប្រព័ន្ធទិន្នន័យនោះទេ។ វាលអាសយដ្ឋានមានផ្ទុកព័ត៌មានចំនួនបី: អាស័យដ្ឋានផ្លូវទីក្រុងនិងរដ្ឋ។ វាលនីមួយៗនៅក្នុងឃ្លាំងទិន្នន័យគួរតែផ្ទុកតែព័ត៌មានមួយដុំប៉ុណ្ណោះ។ នៅពេលអ្នកមានពត៌មានជាច្រើននៅក្នុងវាលតែមួយវាអាចពិបាកក្នុងការសួរមូលដ្ឋានទិន្នន័យសម្រាប់ព័ត៌មាន។
ឧទាហរណ៏, អ្វីដែលប្រសិនបើយើងចង់រត់សំណួរនៅលើមនុស្សទាំងអស់ការលក់ពីអូស្ទីន? យើងនឹងត្រូវស្វែងរកក្នុងវាលអាសយដ្ឋានដែលមិនត្រឹមតែប្រសិទ្ធភាពប៉ុន្តែអាចត្រឡប់ព័ត៌មានអាក្រក់។ យ៉ាងណាមិញតើមានអ្វីកើតឡើងបើសិនជាមាននរណាម្នាក់រស់នៅលើផ្លូវ Austin នៅ Portland, Oregon?
នេះជាអ្វីដែលតារាងគួរមាន:
SalesID | ដំបូង | ចុងក្រោយ | អាសយដ្ឋាន 1 | អាសយដ្ឋាន 2 | ទីក្រុង | រដ្ឋ | ហ្ស៊ីប | ទូរស័ព្ទ |
1 | ស | Elliot | 118 ផ្លូវមេ | អូស្ទីន | TX | 78720 | 2155555858 | |
2 | Alice | ស្មី | 504 ផ្លូវទី 2 | ញូវយ៉ក | ញូវយ៉ក | 10022 | 2111221821 | |
3 | Joe | ព្រះសហគមន៍កាតូលិក | 428 Aker St | Apt 304 | អូស្ទីន | TX | 78716 | 2155455545 |
មានរឿងមួយចំនួនដែលត្រូវកត់សម្គាល់នៅទីនេះ។ ទីមួយ "អាស័យដ្ឋានទី 1" និង "អាស័យដ្ឋានទី 2" ហាក់ដូចជាធ្លាក់នៅក្រោមកំហុសច្រឡំ។
ទោះយ៉ាងណាក៏ដោយក្នុងករណីនេះពួកគេសំដៅទៅលើបំណែកដាច់ដោយឡែកនៃទិន្នន័យដែលទាក់ទងដោយផ្ទាល់ទៅនឹងការលក់មនុស្សជាជាងក្រុមទិន្នន័យដែលត្រូវនិយាយឡើងវិញដែលគួរចូលក្នុងតារាងរបស់ខ្លួន។
ដូចគ្នានេះផងដែរដោយសារតែកំហុសឆ្គងមួយដើម្បីចៀសវាងសូមកត់សម្គាល់ពីរបៀបដែលការធ្វើទ្រង់ទ្រាយសំរាប់លេខទូរស័ព្ទត្រូវបានដកចេញពីតុ។ អ្នកគួរជៀសវាងការរក្សាទុកទ្រង់ទ្រាយនៃវាលនៅពេលដែលអាចធ្វើទៅបាន។ ក្នុងករណីមានលេខទូរស័ព្ទមានវិធីជាច្រើនដែលអ្នកសរសេរលេខទូរស័ព្ទ: 215-555-5858 ឬ (215) 555-5858 ។ នេះនឹងធ្វើឱ្យការស្វែងរកអ្នកលក់តាមលេខទូរស័ព្ទរបស់ពួកគេឬធ្វើការស្វែងរកអ្នកលក់នៅក្នុងកូដតំបន់ដូចគ្នាកាន់តែលំបាក។
ការក្លែងបន្លំមូលដ្ឋានទិន្នន័យ # 4: មិនប្រើកូនសោសំខាន់
ក្នុងករណីភាគច្រើនអ្នកនឹងចង់ប្រើលេខបង្កើនស្វ័យប្រវត្តិឬលេខដែលបានបង្កើតមួយចំនួនផ្សេងទៀតឬអក្សរក្រមលេខសម្រាប់កូនសោសំខាន់របស់អ្នក។ អ្នកគួរតែជៀសវាងការប្រើប្រាស់ព័ត៌មានពិតប្រាកដណាមួយសម្រាប់កូនសោសំខាន់ទោះបីជាវាមើលទៅហាក់ដូចជាវាបង្កើតអត្តសញ្ញាណដ៏ល្អក៏ដោយ។
ឧទាហរណ៍យើងម្នាក់ៗមានលេខសន្តិសុខសង្គមរបស់យើងម្នាក់ៗដូច្នេះការប្រើលេខសន្តិសុខសង្គមសម្រាប់ទិន្នន័យនិយោជិតអាចជាគំនិតល្អ។ ប៉ុន្តែទោះជាកម្រក៏ដោយក៏វាអាចមានសម្រាប់លេខសន្តិសុខសង្គមដើម្បីផ្លាស់ប្តូរហើយយើងក៏មិនចង់ឱ្យគន្លឹះសំខាន់របស់យើងផ្លាស់ប្តូរដែរ។
ហើយនោះគឺជាបញ្ហាជាមួយការប្រើប្រាស់ព័ត៌មានពិតប្រាកដដែលជាតម្លៃគន្លឹះ។ វាអាចផ្លាស់ប្តូរបាន។
ការក្លែងបន្លំមូលដ្ឋានទិន្នន័យ # 5: មិនប្រើអនុសញ្ញាដាក់ឈ្មោះ
នេះប្រហែលជាមិនមែនជាកិច្ចព្រមព្រៀងធំទេនៅពេលអ្នកចាប់ផ្តើមបង្កើតមូលដ្ឋានទិន្នន័យរបស់អ្នកប៉ុន្តែនៅពេលដែលអ្នកទៅដល់ចំណុចនៃការសរសេរសំណួរប្រឆាំងនឹងមូលដ្ឋានទិន្នន័យដើម្បីទាញយកព័ត៌មាននោះការមានអនុសញ្ញាដាក់ឈ្មោះនឹងជួយនៅពេលអ្នកទន្ទេញឈ្មោះវាល។
គ្រាន់តែស្រមៃថាតើដំណើរការនេះកាន់តែពិបាកជាងបើឈ្មោះត្រូវបានរក្សាទុកជា FirstName, LastName ក្នុងតារាងមួយនិងឈ្មោះដំបូង, ឈ្មោះចុងក្រោយនៅក្នុងតារាងផ្សេងទៀត។
អនុសញ្ញាការដាក់ឈ្មោះដែលមានប្រជាប្រិយភាពបំផុតទាំងពីរកំពុងធ្វើឱ្យអក្សរដំបូងនៃពាក្យទាំងអស់នៅក្នុងវាលឬបំបែកពាក្យដោយប្រើសញ្ញាគូសក្រោម។ អ្នកក៏អាចឃើញអ្នកអភិវឌ្ឍន៍ខ្លះសរសេរអក្សរដំបូងនៃពាក្យទាំងអស់លើកលែងតែពាក្យដំបូង: firstName, lastName ។
អ្នកក៏នឹងចង់សម្រេចចិត្តប្រើឈ្មោះតារាងឬឈ្មោះតារាងពហុវចនៈដែរ។ តើវាជាតារាងលំដាប់ឬតារាងបញ្ជាទិញឬ? តើវាជាតុអតិថិជនឬតារាងអតិថិជនទេ? ជាថ្មីម្តងទៀតអ្នកមិនចង់ជាប់ជាមួយតារាងលំដាប់និងតារាងអតិថិជនទេ។
អនុសញ្ញាដាក់ឈ្មោះដែលអ្នកជ្រើសរើសមិនមែនជាការសំខាន់ដូចដំណើរការនៃការជ្រើសរើសនិងជាប់នឹងអនុសញ្ញានៃការដាក់ឈ្មោះនោះទេ។
កំហុសមូលដ្ឋានទិន្នន័យ # 6: ការបង្កើតលិបិក្រមមិនត្រឹមត្រូវ
ការបង្កើតលិបិក្រមគឺជារឿងដែលពិបាកបំផុតដើម្បីទទួលបានជាពិសេសសម្រាប់អ្នកបង្កើតទិន្នន័យថ្មី។ កូនសោសំខាន់ៗនិងគ្រាប់ចុចបរទេសត្រូវតែដាក់លិបិក្រម។ ទាំងនេះគឺជាអ្វីដែលភ្ជាប់តារាងជាមួយគ្នាដូច្នេះដោយគ្មានលិបិក្រមអ្នកនឹងឃើញលទ្ធផលតិចតួចចេញពីមូលដ្ឋានទិន្នន័យរបស់អ្នក។
ប៉ុន្តែអ្វីដែលត្រូវបានគេខកខានជាញឹកញាប់គឺវាលផ្សេងទៀត។ ទាំងនេះគឺជាវាល "WHERE" ។ ប្រសិនបើអ្នកចង់បង្រួមការស្វែងរករបស់អ្នកដោយប្រើវាលមួយនៅក្នុងឃ្លា WHERE អ្នកចង់គិតអំពីការដាក់លិបិក្រមនៅលើវាលនោះ។ ទោះជាយ៉ាងណាក៏ដោយអ្នកមិនចង់ធ្វើតារាងលិបិក្រមយ៉ាងហួសហេតុដែលអាចប៉ះពាល់ដល់ការអនុវត្តផងដែរ។
តើធ្វើដូចម្តេចដើម្បីសម្រេចចិត្ត? នេះគឺជាផ្នែកមួយនៃសិល្បៈនៃការរចនាមូលដ្ឋានទិន្នន័យ។ មិនមានដែនកំណត់រឹងមាំលើចំនួនលិបិក្រមដែលអ្នកគួរដាក់នៅលើតារាងទេ។ ជាចម្បងអ្នកចង់លិបិក្រមវាលដែលត្រូវបានប្រើជាញឹកញាប់នៅក្នុងឃ្លា WHERE ។ អានបន្ថែមអំពីការបង្កើតលិបិក្រមរបស់អ្នកឱ្យបានត្រឹមត្រូវ។