កុំព្យូទ័រ, ការសរសេរកម្មវិធី
ប្រតិបត្តិករ SQL មួយខាងក្នុងចូលរួម: ឧទាហរណ៍នៃវាក្យសម្ព័ន្ធនិងលក្ខណៈពិសេស
ការអភិវឌ្ឍមូលដ្ឋានទិន្នន័យណាមួយរួមបញ្ចូលទាំងការមិនត្រឹមតែការបង្កើតនិងការបំពេញនៃតារាងដែលមានពជាច្រើនប៉ុន្តែថែមទាំងការងារបន្ថែមទៀតជាមួយទិន្នន័យ។ ដើម្បីអនុវត្តឱ្យបានត្រឹមត្រូវភាពខុសគ្នានៃភារកិច្ចមួយនៅជម្រើសនៃទិន្នន័យពីតារាងនិងការរាយការណ៍ប្រើជ្រើសការរចនាស្តង់ដារ។
ទៅយកទិន្នន័យពីតារាង
ប្រសិនបើយើងពិចារណាបញ្ហានៃការជ្រើសរើសនៃទិន្នន័យឬការសាងសង់របាយការណ៍មួយដែលអ្នកអាចកំណត់កម្រិតនៃភាពស្មុគស្មាញនៃប្រតិបត្ដិការនេះ។ តាមក្បួនមួយនៅពេលដែលការដោះស្រាយជាមួយនឹងធ្ងន់ធ្ងរ (បើយោងតាមបរិមាណ) មូលដ្ឋានទិន្នន័យដែលត្រូវបានបង្កើតឡើងជាឧទាហរណ៍នៅក្នុងហាងលក់អនឡាញឬក្រុមហ៊ុនធំ, ការជ្រើសរើសទិន្នន័យមិនត្រូវបានកំណត់ទៅក្នុងតារាងតែមួយ។ តាមក្បួនមួយ, គំរូអាចមានពីមួយចំនួនធំដោយស្មើភាពនៃតារាងមិនបានតភ្ជាប់តែប៉ុណ្ណោះទេប៉ុន្តែរួមគ្នាផងដែរសំណួរ / អនុសំណួរដែលធ្វើឱ្យអ្នកសរសេរកម្មវិធីអាស្រ័យលើភារកិច្ចរបស់ខ្លួន។ ចំពោះគំរូនៃតារាងមួយអាចប្រើរចនាសម្ព័ន្ធសាមញ្ញបំផុត:
| ជ្រើស * ពីបុគ្គល |
ដែលជាកន្លែងដែលបុគ្គល - ឈ្មោះនៃតារាងដែលអ្នកចង់ធ្វើឱ្យការទៅប្រមូលយកទិន្នន័យ។
ប្រសិនបើមាន, ទោះជាយ៉ាងណាអ្នកនឹងចាំបាច់ត្រូវជ្រើសទិន្នន័យពីតារាងច្រើនមួយនៃការរចនាម៉ូដមានលក្ខណៈស្តង់ដាដែលអាចត្រូវបានប្រើដើម្បីចូលរួមតុជាច្រើន។
តភ្ជាប់វិធីសាស្រ្តតុបន្ថែមទៀត
ប្រសិនបើយើងពិចារណាប្រើប្រាស់នៃរចនាសម្ព័ន្ធបែបនេះនៅកំរិតបឋមសិក្សានោះយើងអាចបែងចែកយន្តការដូចខាងក្រោមដើម្បីតភ្ជាប់ដែលបានទាមទារសម្រាប់តារាងគំរូគឺ:
- ប្រតិបត្តិករខាងក្នុងចូលរួម។
- ខាងឆ្វេងចូលរួមឬ, វាគឺជាវិធីសាស្រ្តថតទីពីរចូលរួមខាងក្រៅឆ្វេង។
- កាកបាទចូលរួម។
- ចូលរួមពេញ។
ការប្រើប្រាស់ប្រតិបត្តិករដើម្បីចូលរួមតុនៅក្នុងការអនុវត្ត, អ្នកអាចរៀនបានដោយពិចារណាលើការប្រើប្រាស់នៃសេចក្តីថ្លែងការណ៍ SQL នេះ - ខាងក្នុងចូលរួម។ ឧទាហរណ៍នៃការប្រើប្រាស់របស់ខ្លួនអាចនឹងមានដូចខាងក្រោម:
ជ្រើស * ពីបុគ្គល ខាងក្នុងចូលរួមផ្នែករងលើ Su_Person = Pe_ID |
SQL មួយភាសានិងការចូលរួមម៉ុងចូលរួមជាមួយប្រតិបត្តិករអាចត្រូវបានប្រើមិនត្រឹមតែសម្រាប់ការរួមបញ្ចូលគ្នារវាងតារាងពីរឬច្រើនប៉ុណ្ណោះទេប៉ុន្តែដើម្បីតភ្ជាប់សំណួររងផ្សេងទៀតដែលសម្របសម្រួលយ៉ាងខ្លាំងដល់ការងាររបស់អ្នកគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ, និងជាច្បាប់មួយយ៉ាងសំខាន់អាចបង្កើនល្បឿនការអនុវត្តជាក់លាក់, រចនាសម្ព័ន្ធសំណួរស្មុគស្មាញ។
រួមបញ្ចូលគ្នារវាងទិន្នន័យក្នុងបន្ទាត់តុដោយបន្ទាត់
ប្រសិនបើយើងពិចារណាលើការតភ្ជាប់នៃការមួយចំនួនធំនៃសំណួររងនិងទិន្នន័យចូលទៅក្នុងបន្ទាត់តារាងតែមួយដោយបន្ទាត់ដែលអ្នកអាចប្រើសហភាពប្រតិបត្តិករនិងសហភាពទាំងអស់។
ការប្រើប្រាស់នៃរចនាសម្ព័ន្ធទាំងនេះនឹងពឹងផ្អែកលើអ្នកអភិវឌ្ឍន៍ដើម្បីកំណត់គោលបំណងនិងលទ្ធផលដែលគាត់ចង់សម្រេចបាននៅទីបញ្ចប់។
សង្ខេបខាងប្រតិបត្តិករចូលរួម
ក្នុងករណីជាច្រើន, ដើម្បីបញ្ចូលគ្នានូវតារាងដែលនៅក្នុងភាសា SQL មួយច្រើនដែលបានប្រើដោយខាងចូលរួមប្រតិបត្តិករ។ ការរៀបរាប់ខាងចូលរួមក្នុង SQL គឺជាការងាយស្រួលណាស់ក្នុងការយល់ពីអ្នកសរសេរកម្មវិធីជាមធ្យមដែលត្រូវបានទើបតែចាប់ផ្តើមយល់មូលដ្ឋានទិន្នន័យ។ ប្រសិនបើយើងពិចារណាការពន្យល់អំពីយន្តការនៃការងារនៃរចនាសម្ព័ន្ធនេះយើងទទួលបានរូបភាពដូចខាងក្រោម។ ប្រតិបត្តិករតក្កទាំងមូលត្រូវបានសាងសង់ឡើងនៅលើការឆ្លងកាត់ព្រំដែននិងលទ្ធភាពនៃគំរូតែទិន្នន័យដែលមាននៅក្នុងគ្នានៃតារាងដែលបានរួមបញ្ចូលក្នុងសំណួរនេះ។
ប្រសិនបើយើងសម្លឹងមើលទៅលើប្រភេទនៃការងារនេះនៅក្នុងលក្ខខណ្ឌនៃការបកស្រាយក្រាហ្វិកយើងទទួលបាន SQL មួយខាងក្នុងចូលរួមរចនាសម្ព័ន្ធរបស់ប្រតិបត្តិករ, ឧទាហរណ៍នៃការដែលអាចត្រូវបានបង្ហាញដោយគម្រោងដូចខាងក្រោម:
ឧទាហរណ៍យើងមានតុពីរបានបង្ហាញគំនូរបំព្រួញនៅក្នុងតួលេខនេះ។ ពួកគេបាននៅក្នុងវេនមានចំនួនខុសគ្នានៃធាតុ។ នៅក្នុងការគ្នានៃតារាងមានវាលដែលត្រូវបានទាក់ទង។ ប្រសិនបើយើងព្យាយាមពន្យល់ពីការងាររបស់ប្រតិបត្តិករនៅលើមូលដ្ឋាននៃគំនូរដែលជាលទ្ធផលបានត្រឡប់មកវិញនឹងមានសំណុំនៃទិន្នន័យពីតារាងពីរ, ដែលជាកន្លែងដែលបន្ទប់នេះគឺជាវាលទាក់ទងស្របពេល។ គ្រាន់តែដាក់សំណួរត្រឡប់តែកំណត់ត្រាទាំងនោះ (នៅក្នុងចំនួនតារាងពីរនាក់) ដែលមានទិន្នន័យនៅក្នុងតារាងលេខមួយ។
វាក្យសម្ព័ន្ធនៃខាងក្នុងនេះចូលរួម
ដូចដែលបានរៀបរាប់ពីមុន, ប្រតិបត្តិករខាងក្នុងបានចូលរួម, ឈ្មោះ, វាក្យសម្ព័ន្ធរបស់ខ្លួនសាមញ្ញធម្មតា។ សម្រាប់អង្គការនៃទំនាក់ទំនងរវាងតារាងនៅក្នុងគំរូទោលនេះនឹងគ្រប់គ្រាន់ក្នុងការចងចាំនិងប្រើដ្យាក្រាមគំនូរបំព្រួញដូចខាងក្រោមនៃការសាងសង់ប្រតិបត្តិករដែលត្រូវបានចែងនៅក្នុងបន្ទាត់តែមួយនៃកម្មវិធី SQL មួយកូដដូចជា:
- ខាងក្នុងចូលរួម [ឈ្មោះតារាង] នៅលើ [វាលកូនសោនៃតារាងដែលភ្ជាប់] = [វាលកូនសោ pluggable នៃតារាង] ។
សម្រាប់ការប្រាស្រ័យទាក់ទងក្នុងសេចក្តីថ្លែងការណ៍នេះគឺត្រូវបានគេប្រើជាសំខាន់កូនសោតុ។ តាមក្បួនមួយនៅក្នុងក្រុមនៃតារាងដែលទុកអំពីបុគ្គលិក, កាលពីមុនបានរៀបរាប់បុគ្គលរងនិងមានកំណត់ត្រាស្រដៀងគ្នាយ៉ាងហោចណាស់មួយ។ ដូច្នេះយកមួយកាន់តែខិតជិតមើលទៅប្រតិបត្តិករ SQL មួយខាងក្នុងចូលរួមឧទាហរណ៍មួយនៃការដែលត្រូវបានបង្ហាញមុនបន្តិច។
ការរៀបរាប់គំរូនិងការតភ្ជាប់ទៅតារាងគំរូអូឌីយ៉ូ
យើងមានតារាងបុគ្គលមួយដែលរក្សាទុកអំពីបុគ្គលិកទាំងអស់ដែលកំពុងធ្វើការនៅក្នុងក្រុមហ៊ុននេះ។ គ្រាន់តែចំណាំថាការចុចគ្រាប់ចុចមេនៃតារាងគឺជាវាលមួយ - Pe_ID ។ គ្រាន់តែនៅលើវាហើយនឹងទៅបាច់មួយ។
នេះជាផ្នែករងនឹងរក្សាទុកតារាងទីពីរការិយាល័យអំពីបុគ្គលិកធ្វើការនៅក្នុងនោះ។ នាងបាននៅក្នុងវេនត្រូវបានតភ្ជាប់តាមរយៈតារាងបុគ្គលវាល Su_Person ។ តើនេះមានន័យយ៉ាងណា? ដោយផ្អែកលើគ្រោងការណ៍ទិន្នន័យអាចត្រូវបាននិយាយថានៅក្នុងតារាងសម្រាប់កំណត់ត្រាគ្រឿងគ្នានៅក្នុង "បុគ្គលិក" តារាងនឹងត្រូវបានអំពីនាយកដ្ឋានក្នុងការដែលពួកគេធ្វើការ។ វាគឺសម្រាប់ការទំនាក់ទំនងនេះហើយនឹងធ្វើការជាប្រតិបត្តិករខាងក្នុងចូលរួម។
ចំពោះការប្រើប្រាស់វិចារណញាណបន្ថែមទៀតនៃការពិចារណាប្រតិបត្តិករ SQL មួយនៅខាងក្នុងរបស់ចូលរួម (ឧទហរណ៍នៃការប្រើប្រាស់របស់ខ្លួនសម្រាប់មួយឬពីរតារាង) ។ ប្រសិនបើយើងពិចារណាឧទាហរណ៍នៃតារាងដូចគ្នានេះ, នោះគឺសាមញ្ញណាស់:
ជ្រើស * ពីបុគ្គល ខាងក្នុងចូលរួមផ្នែករងលើ Su_Person = Pe_ID |
គំរូតភ្ជាប់តារាងពីរនិង subquery
ប្រតិបត្តិករ SQL មួយខាងក្នុងចូលរួម, ឧទាហរណ៍នៃការដែលជាការប្រើប្រាស់ក្នុងការទាញយកទិន្នន័យពីតារាងច្រើនអាចត្រូវបានរៀបចំនៅក្នុងលក្ខណៈខាងលើនេះវាកំពុងធ្វើការលើផលវិបាកតិចតួចនៃគោលការណ៍។ ដើម្បីឱ្យស្មុគស្មាញភារកិច្ចនៃតារាងទាំងពីរ។ ឧទាហរណ៍យើងមានតារាងឆ្ងាយដែលផ្ទុកអំពីនាយកដ្ឋានទាំងអស់នៅក្នុងការគ្នានៃការបែកបាក់នេះ។ ក្នុងតារាងនេះបានកត់ត្រាចំនួនការបែងចែកនិងចំនួនបុគ្គលិក, ហើយត្រូវបានបំពេញបន្ថែមដោយឈ្មោះនៃទិន្នន័យគំរូនៃនាយកដ្ឋាននីមួយ។ ការសម្លឹងឆ្ពោះទៅមុខវាគឺមានតំលៃនិយាយថាអ្នកអាចប្រើវិធីសាស្រ្តចំនួនពីរដើម្បីដោះស្រាយបញ្ហានេះ។
វិធីទីមួយគឺដើម្បីភ្ជាប់តារាងនាយកដ្ឋានដើម្បីយកសំណាក។ រៀបចំសំណើក្នុងករណីនេះអាចនឹងមានដូចខាងក្រោម:
ជ្រើស Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name ពីបុគ្គល ខាងក្នុងចូលរួមផ្នែករងលើ Su_Person = Pe_ID ខាងក្នុងចូលរួមចាកចេញនៅលើ Su_Depart = Dep_ID និង Pe_Depart = Dep_ID |
វិធីសាស្រ្តទីពីរនៃការដោះស្រាយបញ្ហានោះ - គឺការប្រើ subquery ក្នុងដែលមិនទិន្នន័យទាំងអស់នេះនឹងត្រូវបានជ្រើសពីតារាងនាយកដ្ឋានប៉ុន្តែបានតែចាំបាច់។ នេះគឺជាការផ្ទុយទៅនឹងវិធីសាស្រ្តជាលើកដំបូង, វានឹងកាត់បន្ថយពេលវេលានៃសំណើនេះ។
ជ្រើស Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name ពីបុគ្គល ខាងក្នុងចូលរួមផ្នែករងលើ Su_Person = Pe_ID ខាងក្នុងចូលរួម (ជ្រើស Dep_ID, Dep_Name, Pe_Depart ពីចាកចេញ) ដូចជាក្រុមហ៊ុន T នៅលើ Su_Depart = Dep_ID និង Pe_Depart = Dep_ID |
វាគឺមានតំលៃកត់សម្គាល់ថាការរៀបចំបែបនេះមិនអាចបង្កើនល្បឿនការស្នើរសុំការងារ។ ពេលខ្លះមានករណីនេះគឺជាពេលដែលវាគឺជាការចាំបាច់ក្នុងការប្រើទិន្នន័យគំរូមួយបន្ថែមទៀតចូលទៅក្នុងតារាងបណ្តោះអាសន្នមួយដែល (ប្រសិនបើទំហំធំពេក) ហើយបន្ទាប់មកវាត្រូវបានរួមបញ្ចូលគ្នាជាមួយគំរូសំខាន់។
ឧទាហរណ៍នៃការប្រើប្រាស់ខាងចូលរួមប្រតិបត្តិករដើម្បីសំណាកពីមួយចំនួនធំនៃតុ
ការសាងសង់នេះពាក់ព័ន្ធនឹងការប្រើប្រាស់នៃសំណួរស្មុគស្មាញសម្រាប់បរិមាណច្រើនជាគំរូមួយនៃតារាងទិន្នន័យនិង subqueries interconnected ។ តម្រូវការទាំងនេះអាចបំពេញវាក្យសម្ពន្ធចូលរួមខាង SQL មួយ។ ឧទាហរណ៍នៃការប្រើប្រាស់ប្រតិបត្តិករក្នុងករណីនេះអាចត្រូវបានមានភាពស្មុគស្មាញមិនត្រឹមតែគំរូនៃកន្លែងផ្ទុកច្រើន, ប៉ុន្តែដែរជាមួយនឹងមួយចំនួនធំ subqueries ក្នុង។ សម្រាប់ជាឧទាហរណ៍បេតុង, អ្នកអាចយកទិន្នន័យពីគំរូនៃការតុប្រព័ន្ធ (SQL មួយខាងចូលរួមជាមួយសេចក្តីថ្លែងការណ៍) ។ ឧទាហរណ៍ - 3 នៃតារាងនេះ - នៅក្នុងករណីនេះនឹងមានរចនាសម្ព័ន្ធស្មុគ្រស្មាញជាមួយ។
ក្នុងករណីនេះបានតភ្ជាប់ (តារាងបឋម) និងលក្ខខណ្ឌជ្រើសរើសទិន្នន័យជាច្រើនបានណែនាំបន្ថែមទៀតចំនួនបី។
នៅពេលដែលប្រើខាងក្នុងបានចូលរួមជាមួយប្រតិបត្តិករគួរតែចងចាំថាការស្មុគ្រស្មាញច្រើនសំណួរនេះយូរជាងនេះវានឹងត្រូវបានអនុវត្ត, ដូច្នេះអ្នកគួររកវិធីដើម្បីអនុវត្តបានច្រើនយ៉ាងឆាប់រហ័សនិងដោះស្រាយបញ្ហានេះ។
សេចក្តីសន្និដ្ឋាន
នៅទីបញ្ចប់ខ្ញុំចង់និយាយរឿងមួយ: ធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ - វាមិនមែនជារឿងដែលពិបាកបំផុតក្នុងការសរសេរកម្មវិធី, ដូច្នេះប្រសិនបើអ្នកចង់ឱ្យមនុស្សគ្រប់រូបនឹងអាចទទួលបានចំនេះដឹងដើម្បីកសាងមូលដ្ឋានទិន្នន័យនិងលើសម៉ោង, ទទួលបានបទពិសោធន៍, អ្នកទទួលបានដើម្បីធ្វើការជាមួយពួកគេនៅលើកម្រិតជំនាញវិជ្ជាជីវៈមួយ ។
Similar articles
Trending Now