ការបង្កើតមូលដ្ឋានទិន្នន័យនិងតារាងក្នុង SQL

ការបង្កើតមូលដ្ឋានទិន្នន័យ

តើអ្នកត្រៀមខ្លួនរួចរាល់ហើយដើម្បីចាប់ផ្តើមបង្កើតមូលដ្ឋានទិន្នន័យនិងតុជាមួយ ភាសាសំណួររចនាសម្ព័ន្ធ ? នៅក្នុងអត្ថបទនេះយើងស្វែងយល់ពី ដំណើរការនៃការបង្កើតតារាង ដោយដៃជាមួយ CREATE TABLE និង CREATE TABLE commands ។ ប្រសិនបើអ្នកជាអ្នកប្រើប្រាស់ SQL ថ្មីអ្នកអាចពិនិត្យអត្ថបទ SQL Base របស់យើងជាមុនសិន។

តម្រូវការអាជីវកម្ម

មុនពេលយើងអង្គុយនៅលើក្តារចុចយើងត្រូវប្រាកដថាយើងមានការយល់ដឹងច្បាស់លាស់អំពីតម្រូវការរបស់អតិថិជន។ តើអ្វីជាវិធីល្អបំផុតដើម្បីទទួលបានការយល់ដឹងនេះ? និយាយទៅកាន់អតិថិជន, ជាការពិតណាស់! បន្ទាប់ពីអង្គុយជាមួយនាយកធនធានមនុស្សរបស់ XYZ យើងបានដឹងថាពួកគេគឺជាក្រុមហ៊ុនលក់គ្រឿងអេឡិចត្រូនិចហើយមានចំណាប់អារម្មណ៍ជាចម្បងក្នុងការតាមដានព័ត៌មានអំពីបុគ្គលិកផ្នែកលក់របស់ពួកគេ។

XYZ Corporation បែងចែកកម្លាំងលក់របស់ពួកគេទៅក្នុងតំបន់ភាគខាងកើតនិងភាគខាងលិចដែលនីមួយៗត្រូវបានបែងចែកទៅជាដែនដីជាច្រើនដែលគ្របដណ្តប់ដោយតំណាងផ្នែកលក់។ នាយកដ្ឋានធនធានមនុស្សចង់តាមដានទឹកដីដែលគ្របដណ្តប់ដោយនិយោជិកនីមួយៗក៏ដូចជាព័ត៌មានប្រាក់ខែនិងរចនាសម្ព័នគ្រប់គ្រងរបស់បុគ្គលិកនីមួយៗ។ ដើម្បីបំពេញតាមតម្រូវការទាំងនេះយើងបានបង្កើតមូលដ្ឋានទិន្នន័យមួយដែលមានតារាងចំនួនបីដែលបង្ហាញនៅក្នុង ដ្យាក្រាមទំនាក់ទំនងអង្គភាព នៅលើទំព័រនេះ។

ការជ្រើសរើសវេទិកាមូលដ្ឋានទិន្នន័យ

យើងបានសម្រេចចិត្តប្រើ ប្រព័ន្ធគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ (ឬ DBMS) ដែលត្រូវបានបង្កើតឡើងលើភាសាសំណួររចនាសម្ព័ន្ធ (SQL) ។ ដូច្នេះរាល់ពាក្យបញ្ជាមូលដ្ឋានទិន្នន័យនិងតារាងរបស់យើងទាំងអស់គួរតែត្រូវបានសរសេរជាមួយ SQL SQL ស្តង់ដា។

ក្នុងនាមជាអត្ថប្រយោជន៍បន្ថែមមួយដោយប្រើ ANSI-compliant SQL នឹងធានាថាពាក្យបញ្ជាទាំងនេះនឹងដំណើរការលើ DBMS ដែលគាំទ្រ ស្តង់ដារ SQL រួមទាំង Oracle និង Microsoft SQL Server ។ ប្រសិនបើអ្នកមិនបានជ្រើសវេទិកាសម្រាប់មូលដ្ឋានទិន្នន័យរបស់អ្នកនៅឡើយទេជម្រើសអត្ថបទ មូលដ្ឋានទិន្នន័យនឹង ដើរតាមអ្នក។

ការបង្កើតមូលដ្ឋានទិន្នន័យ

ជំហានដំបូងរបស់យើងគឺបង្កើតមូលដ្ឋានទិន្នន័យដោយខ្លួនឯង។ ប្រព័ន្ធគ្រប់គ្រងមូលដ្ឋានទិន្នន័យជាច្រើនផ្ដល់ជម្រើសស៊េរីដើម្បីធ្វើឱ្យប៉ារ៉ាម៉ែត្រមូលដ្ឋានទិន្នន័យតាមបំណងនៅក្នុងជំហាននេះប៉ុន្តែមូលដ្ឋានទិន្នន័យរបស់យើងអនុញ្ញាតតែការបង្កើតមូលដ្ឋានទិន្នន័យធម្មតាប៉ុណ្ណោះ។ ដូចគ្នានឹងពាក្យបញ្ជាទាំងអស់របស់យើងដែរអ្នកអាចនឹងពិគ្រោះឯកសារសម្រាប់ DBMS របស់អ្នកដើម្បីកំណត់ថាតើប៉ារ៉ាម៉ែត្រកម្រិតខ្ពស់ណាដែលត្រូវបានគាំទ្រដោយប្រព័ន្ធជាក់លាក់របស់អ្នកបំពេញតាមតម្រូវការរបស់អ្នក។ តោះប្រើពាក្យបញ្ជា CREATE DATABASE ដើម្បីបង្កើតមូលដ្ឋានទិន្នន័យរបស់យើង:

បង្កើតបុគ្គលិកទិន្នន័យ

សូមកត់សម្គាល់នូវអក្សរធំដែលត្រូវបានប្រើនៅក្នុងឧទាហរណ៍ខាងលើ។ វាជាការអនុវត្តជាទូទៅក្នុងចំណោមអ្នកសរសេរកម្មវិធី SQL ដើម្បីប្រើអក្សរធំទាំងអស់សម្រាប់ពាក្យគន្លឹះ SQL ដូចជា "CREATE" និង "ទិន្នន័យ" ខណៈពេលដែលប្រើអក្សរតូចទាំងអស់សម្រាប់ឈ្មោះដែលកំណត់ដោយអ្នកប្រើដូចជាឈ្មោះមូលដ្ឋានទិន្នន័យ "បុគ្គលិក" ។ អនុសញ្ញាទាំងនេះផ្តល់នូវភាពងាយស្រួលក្នុងការអាន។

បន្តអានមេរៀននេះនៅពេលយើងបង្កើតតារាងសម្រាប់មូលដ្ឋានទិន្នន័យរបស់យើង។

រៀនបន្ថែមទៀត

ប្រសិនបើអ្នកចង់រៀនបន្ថែមទៀតអំពី ភាសាសំណួរដែលមានរចនាសម្ព័ន្ធ សូមអាន សេចក្តីផ្តើមទៅ SQL ឬចុះឈ្មោះចូលរៀនអ៊ីម៉ែលរៀន SQL ដោយឥតគិតថ្លៃរបស់យើង។

ឥឡូវយើងបានរចនានិងបង្កើតមូលដ្ឋានទិន្នន័យរបស់យើងហើយយើងត្រៀមរួចរាល់ក្នុងការបង្កើតតារាងបីដែលបានប្រើដើម្បីរក្សាទុកទិន្នន័យបុគ្គលិករបស់ក្រុមហ៊ុន XYZ Corporation ។ យើងនឹងអនុវត្តតារាងដែលយើងបានរចនាឡើងនៅផ្នែកមុននៃការបង្រៀននេះ។

បង្កើតតារាងទីមួយរបស់យើង

តារាងទីមួយរបស់យើងមានទិន្នន័យផ្ទាល់ខ្លួនសម្រាប់និយោជិកនីមួយៗនៃក្រុមហ៊ុនរបស់យើង។ យើងត្រូវបញ្ចូលឈ្មោះបុគ្គលិកប្រាក់ខែ ID និងអ្នកគ្រប់គ្រង។ វាជាការអនុវត្តការរចនាដ៏ល្អដើម្បីបំបែកនាមត្រកូលនិងនាមខ្លួនជាវាលដាច់ដោយឡែកដើម្បីងាយស្រួលក្នុងការស្វែងរកទិន្នន័យនិងការតម្រៀបនៅថ្ងៃអនាគត។ ដូចគ្នានេះផងដែរ, យើងនឹងតាមដានអ្នកគ្រប់គ្រងរបស់និយោជិតនីមួយៗដោយបញ្ចូលការយោងទៅលេខសម្គាល់បុគ្គលិករបស់អ្នកគ្រប់គ្រងម្នាក់ៗនៅក្នុងកំណត់ត្រានិយោជិតនីមួយៗ។ ដំបូងចូរយើងមើលតារាងបុគ្គលិកដែលចង់បាន។

របាយការណ៍ដើម្បីកំណត់ហាងលក់លេខសម្គាល់អ្នកគ្រប់គ្រង។ ពីកំណត់ត្រាគំរូដែលបានបង្ហាញយើងអាចកំណត់ថា Sue Scampi គឺជាអ្នកគ្រប់គ្រងទាំង Tom Kendall និង John Smith ។ ទោះបីជាយ៉ាងណាក៏ដោយមិនមានព័ត៌មាននៅក្នុងឃ្លាំងទិន្ន័យលើអ្នកគ្រប់គ្រងរបស់ Sue ដូចដែលបានបង្ហាញ ដោយធាតុ NULL នៅក្នុងជួររបស់នាង។

ឥឡូវយើងអាចប្រើ SQL ដើម្បីបង្កើតតារាងក្នុងមូលដ្ឋានទិន្នន័យបុគ្គលិករបស់យើង។ មុនពេលយើងធ្វើដូច្នេះត្រូវប្រាកដថាយើងស្ថិតក្នុងមូលដ្ឋានទិន្នន័យត្រឹមត្រូវដោយចេញនូវពាក្យបញ្ជា USE:

ប្រើបុគ្គលិក

ជាជម្រើស "បុគ្គលិកការិយាល័យទិន្នន័យ" ។ ពាក្យបញ្ជានឹងអនុវត្តមុខងារដូចគ្នា។ ឥឡូវយើងអាចមើលពាក្យបញ្ជា SQL ដែលត្រូវបានប្រើដើម្បីបង្កើតតារាងបុគ្គលិករបស់យើង:

បង្កើត បុគ្គលិកនិយោជិក តារាង (employeeid INTEGER NOT NULL, នាមត្រកូល VARCHAR (25) NOT NULL, firstname VARCHAR (25) NOT NULL, reportsto INTEGER NULL);

ដូចគ្នានឹងឧទាហរណ៍ខាងលើសូមកត់សម្គាល់ថាអនុសញ្ញានៃកម្មវិធីសរសេរថាយើងប្រើអក្សរធំទាំងអស់សម្រាប់ពាក្យគន្លឹះ SQL និងអក្សរតូចសម្រាប់ជួរឈរនិងតារាងអ្នកប្រើដែលបានដាក់ឈ្មោះ។ ពាក្យបញ្ជាខាងលើហាក់ដូចជាយល់ច្រឡំនៅពេលដំបូងប៉ុន្តែមានរចនាសម្ព័ន្ធសាមញ្ញមួយនៅពីក្រោយវា។ នេះជាទិដ្ឋភាពទូទៅមួយដែលអាចបញ្ជាក់ពីរឿងបន្តិចបន្តួច:

បង្កើតតារាង table_name (attribute_name ប្រភេទទិន្នន័យ, ... , attribate_name ប្រភេទទិន្នន័យ);

គុណលក្ខណៈនិងប្រភេទទិន្នន័យ

នៅក្នុងឧទាហរណ៍មុនឈ្មោះតារាងនេះគឺជាបុគ្គលិកហើយយើងមានគុណលក្ខណៈចំនួនបួនគឺ: employeeid, lastname, firstname និង reportsto ។ ប្រភេទទិន្នន័យចង្អុលបង្ហាញពីប្រភេទព័ត៌មានដែលយើងចង់រក្សាទុកនៅក្នុងវាលនីមួយៗ។ លេខសម្គាល់បុគ្គលិកគឺជាលេខគត់ធម្មតាដូច្នេះយើងនឹងប្រើប្រភេទទិន្នន័យ INTEGER សម្រាប់ទាំងផ្នែកនិយោជិកនិងវាលរបាយការណ៍។ ឈ្មោះនិយោជិតនឹងជាខ្សែអក្សរនៃប្រវែងអថេរហើយយើងមិនរំពឹងថាបុគ្គលិកណាដែលមានឈ្មោះដំបូងឬចុងក្រោយបង្អស់លើសពី 25 តួអក្សរនោះទេ។ ដូច្នេះយើងនឹងប្រើប្រភេទ VARCHAR (25) សម្រាប់វាលទាំងនេះ។

តម្លៃ NULL

យើងក៏អាចបញ្ជាក់ទាំង NULL ឬ NOT NULL នៅក្នុងវាលជម្រើសនៃសេចក្តីថ្លែងការណ៍ CREATE ។ នេះគ្រាន់តែប្រាប់មូលដ្ឋានទិន្នន័យថាតើតម្លៃ NULL (ឬទទេ) ត្រូវបានអនុញ្ញាតសម្រាប់គុណលក្ខណៈនោះនៅពេលបន្ថែមជួរដេកទៅមូលដ្ឋានទិន្នន័យ។ នៅក្នុងឧទាហរណ៍របស់យើងនាយកដ្ឋានធនធានមនុស្សតម្រូវថាលេខសម្គាល់បុគ្គលិកនិងឈ្មោះពេញត្រូវបានរក្សាទុកសម្រាប់បុគ្គលិកម្នាក់ៗ។ ទោះជាយ៉ាងណាក៏ដោយមិនមែននិយោជិកគ្រប់រូបសុទ្ធតែមានអ្នកគ្រប់គ្រងម្នាក់ - ប្រធាននាយកប្រតិបត្តិរាយការណ៍ទៅអ្នកណាម្នាក់ទេ! - ដូច្នេះយើងអនុញ្ញាតឱ្យធាតុ NULL នៅក្នុងវាលនោះ។ ចំណាំថា NULL ជាតម្លៃលំនាំដើមហើយការបោះបង់ជម្រើសនេះនឹងអនុញ្ញាតឱ្យតម្លៃ NULL ទាំងស្រុងសម្រាប់គុណលក្ខណៈ។

ការបង្កើតតារាងដែលនៅសល់

ឥឡូវនេះសូមក្រឡេកមើលតារាងទឹកដី។ ពីមើលយ៉ាងរហ័សនូវទិន្នន័យនេះវាបង្ហាញថាយើងត្រូវរក្សាទុកខ្សែអក្សរចំនួនគត់និងអថេរចំនួនពីរ។ ដូចគ្នានឹងឧទាហរណ៍មុនរបស់យើងយើងមិនរំពឹងថាលេខសម្គាល់តំបន់នឹងប្រើប្រាស់ច្រើនជាង 25 តួអក្សរទេ។ ទោះយ៉ាងណាក៏ដោយខ្លះនៃទឹកដីរបស់យើងមានឈ្មោះយូរជាងនេះដូច្នេះយើងនឹងពង្រីកប្រវែងនៃគុណលក្ខណៈ 40 តួ។ តោះមើល SQL ដែលត្រូវគ្នា:

បង្កើតដែនដី (ទឹកដីមិនសមាមាត្រ, ទឹកដីពិពណ៌នា VARCHAR (40) មិនមែន NULL, តំបន់ VARCHAR (25) មិនមែនជា NULL);

ចុងបញ្ចប់យើងនឹងប្រើតារាង EmployeeTerritories ដើម្បីរក្សាទំនាក់ទំនងរវាងនិយោជិកនិងដែនដី។ ព័ត៌មានលម្អិតស្តីពីនិយោជិតនិងទឹកដីនីមួយៗត្រូវបានរក្សាទុកនៅក្នុងតារាងពីរមុនរបស់យើង។ ដូច្នេះយើងគ្រាន់តែត្រូវការទុកលេខអត្តសញ្ញាណចំនួនគត់ 2 នៅក្នុងតារាងនេះ។ ប្រសិនបើយើងត្រូវការពង្រីកព័ត៌មាននេះយើងអាចប្រើ JOIN នៅក្នុងពាក្យបញ្ជាជ្រើសរើសទិន្នន័យរបស់យើងដើម្បីទទួលបានព័ត៌មានពីតារាងច្រើន។ វិធីសាស្ដ្ររក្សាទុកទិន្នន័យជួយកាត់បន្ថយការលែងត្រូវការក្នុងមូលដ្ឋានទិន្នន័យរបស់យើងនិងធានានូវការប្រើប្រាស់ចន្លោះប្រហោងនៅលើដ្រាយផ្ទុករបស់យើង។ យើងនឹងគ្របដណ្តប់ពាក្យបញ្ជា JOIN ក្នុងជម្រៅក្នុងការបង្រៀននាពេលអនាគត។ នេះគឺជាកូដ SQL ដើម្បីអនុវត្តតារាងចុងក្រោយរបស់យើង:

បង្កើតតារាងនិយោជិកបុគ្គលិក (និយោជិកមិនរួមបញ្ចូល NULL, ដែនដីមិនសមាមាត្រ)

យន្តការ SQL ផ្ដល់ដើម្បីផ្លាស់ប្តូររចនាសម្ព័ន្ធនៃមូលដ្ឋានទិន្នន័យបន្ទាប់ពីការបង្កើត

ប្រសិនបើអ្នកឆ្លាតវៃជាពិសេសនាពេលបច្ចុប្បន្ននេះអ្នកប្រហែលជាបានកត់សម្គាល់ឃើញថាយើងបានលុបចោលនូវតម្រូវការនៃការរចនាមួយដោយចៃដន្យនៅពេលអនុវត្តតារាងមូលដ្ឋានទិន្នន័យរបស់យើង។ នាយកធនធានមនុស្សរបស់ក្រុមហ៊ុន XYZ Corporation បានស្នើសុំឱ្យទិន្នន័យនេះតាមដានព័ត៌មានប្រាក់ខែរបស់និយោជិកហើយយើងបានធ្វេសប្រហែសក្នុងការផ្តល់ព័ត៌មាននេះនៅក្នុង តារាងមូលដ្ឋានទិន្នន័យដែល យើងបានបង្កើត។

ទោះយ៉ាងណាក៏ដោយអ្វីៗទាំងអស់មិនបាត់បង់ទេ។ យើងអាចប្រើពាក្យបញ្ជា ALTER TABLE ដើម្បីបន្ថែមគុណលក្ខណៈនេះទៅមូលដ្ឋានទិន្នន័យដែលមានស្រាប់របស់យើង។ យើងចង់រក្សាទុកប្រាក់ខែជាតម្លៃចំនួនគត់។ វាក្យសម្ព័ន្ធគឺស្រដៀងគ្នាទៅនឹងពាក្យបញ្ជា CREATE TABLE នៅត្រង់នេះ:

និយោជិក ALTER TABLE បន្ថែមប្រាក់ខែ INTEGER NULL;

ចំណាំថាយើងបានបញ្ជាក់ថាតម្លៃ NULL ត្រូវបានអនុញ្ញាតសម្រាប់គុណលក្ខណៈនេះ។ ក្នុងករណីជាច្រើនមិនមានជម្រើសទេនៅពេលបន្ថែមជួរឈរមួយទៅតារាងដែលមានស្រាប់។ នេះគឺដោយសារតែតារាងដែលមានជួរដេកដែលគ្មានធាតុសម្រាប់គុណលក្ខណៈនេះ។ ដូច្នេះ DBMS បញ្ចូល តម្លៃ NULL ដោយស្វ័យប្រវត្តិដើម្បីបំពេញការចាត់ទុកជាមោឃៈ។

ហើយនោះបានបញ្ចប់ការរកមើលរបស់យើងនៅមូលដ្ឋានទិន្នន័យ SQL និងដំណើរការបង្កើតតារាង។ ពិនិត្យឡើងវិញជាញឹកញាប់ សម្រាប់ការដំឡើងថ្មី នៅក្នុងស៊េរីបង្រៀន SQL របស់យើង។ ប្រសិនបើអ្នកចង់រំលឹកអ៊ីម៉ែលនៅពេលអត្ថបទថ្មីត្រូវបានបន្ថែមទៅគេហទំព័រអំពីមូលដ្ឋានទិន្នន័យសូមប្រាកដថាចុះឈ្មោះជាវព្រឹត្តិប័ត្រព័ត៌មានរបស់យើង!