![]() |
|---|
| ការធ្វើការជាមួយទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យទំនាក់ទំនង - Sketchnote by @nitya |
ការសម្រួលភាព អ្នកប្រហែលជាបានប្រើប្រាស់សន្លឹកគណនា (spreadsheet) នៅអតីតកាលដើម្បីផ្ទុកព័ត៌មាន។ អ្នកមានជួរនិងកូឡាំ, ដែលជួរនោះមានព័ត៌មាន (ឬទិន្នន័យ), ហើយកូឡាំពិពណ៌នាព័ត៌មាន (ដែលម្តងម្កាលហៅថាmetadata)។ មូលដ្ឋានទិន្នន័យទំនាក់ទំនងត្រូវបានបង្កើតឡើងលើគ្រឹះស្នូលនេះនៃកូឡាំនិងជួរនៅក្នុងតារាង, អនុញ្ញាតឱ្យអ្នកមានព័ត៌មានចែកចាយក្នុងតារាងច្រើន។ នេះអនុញ្ញាតឱ្យអ្នកធ្វើការជាមួយទិន្នន័យផ្ទាល់ខ្លួនស្មុគស្មាញជាងនេះ, ជៀសវាងការបញ្ចេញចម្លង, ហើយមានភាពអាចបត់បែនក្នុងវិធីដែលអ្នកស្វែងរកទិន្នន័យ។ យើងមកស្វែងយល់ពីគំនិតនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនង។
មូលដ្ឋានទិន្នន័យទំនាក់ទំនងមាននៅចម្បងតារាង។ ដូចជា spreadsheet, តារាងគឺជាការប្រមូលផ្តុំកូឡាំនិងជួរ។ ជួរមានទិន្នន័យឬព័ត៌មានដែលយើងចង់ធ្វើការ ជាឧទាហរណ៍ឈ្មោះទីក្រុងឬបរិមាណភ្លៀងធ្លាក់។ កូឡាំពិពណ៌នាទិន្នន័យដែលពួកគេផ្ទុក។
យើងចាប់ផ្តើមស្វែងយល់ដោយបង្កើតតារាងដើម្បីផ្ទុកព័ត៌មានអំពីទីក្រុង។ យើងអាចចាប់ផ្តើមជាមួយឈ្មោះនិងប្រទេសរបស់ពួកវា។ អ្នកអាចផ្ទុកវានៅក្នុងតារាងដូចខាងក្រោម៖
| ទីក្រុង | ប្រទេស |
|---|---|
| តូគ្យូ | ជប៉ុន |
| អាតឡានតា | សហរដ្ឋអាមេរិក |
| អូខ្លិន | នូវហ្សេឡង់ |
សម្គាល់ថា ឈ្មោះកូឡាំ ទីក្រុង, ប្រទេស និង ប្រជាជន ពិពណ៌នាទិន្នន័យដែលបានផ្ទុក ហើយជួរមួយៗមានព័ត៌មានអំពីទីក្រុងមួយ។
ប្រហែលជាតារាងខាងលើមើលទៅស្គាល់ស្រដៀងគ្នា ។ យើងចាប់ផ្តើមបន្ថែមទិន្នន័យបន្ថែមទៅទៅមូលដ្ឋានទិន្នន័យកំពុង៖ ភ្លៀងប្រចាំឆ្នាំ (ជា មីល្លីម៉ែត្រ)។ យើងនឹងផ្តោតទៅលើឆ្នាំ 2018, 2019 និង 2020។ ប្រសិនបើយើងបន្ថែមវាសម្រាប់តូគ្យូ វាអាចរួមទាំងដូចខាងក្រោម៖
| ទីក្រុង | ប្រទេស | ឆ្នាំ | បរិមាណ |
|---|---|---|---|
| តូគ្យូ | ជប៉ុន | 2020 | 1690 |
| តូគ្យូ | ជប៉ុន | 2019 | 1874 |
| តូគ្យូ | ជប៉ុន | 2018 | 1445 |
តើអ្នកចាប់អារម្មណ៍អ្វីខ្លះពីតារាងរបស់យើង? អ្នកប្រហែលជាមើលឃើញថាយើងកំពុងចម្លងឈ្មោះនិងប្រទេសរបស់ទីក្រុងម្ដងម្កាល។ ថ្លៃឈ្នួលផ្ទុកអាចបង្កេីតការចំណាយខ្លាំង ហើយវាមិនចាំបាច់ត្រូវមានចម្លងមួយចំនួនទេ។ ជាពិសេស តូគ្យូមានឈ្មោះតែម្ដងដែលយើងចាប់អារម្មណ៍។
ល្អហើយ ក្រោយមកយើងសាកល្បងរឿងផ្សេងទៀត។ យើងបន្ថែមកូឡាំថ្មីសម្រាប់គ្រប់ឆ្នាំៗ៖
| ទីក្រុង | ប្រទេស | 2018 | 2019 | 2020 |
|---|---|---|---|---|
| តូគ្យូ | ជប៉ុន | 1445 | 1874 | 1690 |
| អាតឡានតា | សហរដ្ឋអាមេរិក | 1779 | 1111 | 1683 |
| អូខ្លិន | នូវហ្សេឡង់ | 1386 | 942 | 1176 |
បើទោះបីជាវាមិនបានចម្លងជួរផ្ទាល់, វាក៏បញ្ចូលបញ្ហាផ្សេងទៀតផងដែរ។ យើងត្រូវតែផ្លាស់ប្តូររចនាសម្ព័ន្ធតារាងរបស់យើងគ្រប់ពេលវេលាមានឆ្នាំថ្មីមួយ។ ហើយនៅពេលទិន្នន័យរីកចម្រើន ការមានឆ្នាំជាកូឡាំនឹងធ្វើឱ្យការទាញយកនិងគណនាតម្លៃកាន់តែពិបាក។
នេះហើយជាទីតាំងដែលយើងត្រូវតារាងច្រើននិងទំនាក់ទំនងរវាងពួកវា។ ដោយបំបែកទិន្នន័យយើងអាចជៀសវាងការបញ្ចេញចម្លង ហើយមានភាពបត់បែនក្នុងរបៀបធ្វើការជាមួយទិន្នន័យរបស់យើង។
មកវិញទៅទិន្នន័យរបស់យើង ហើយសម្រេចចិត្តថាអ្នកចង់បំបែកវាយ៉ាងដូចម្តេច។ យើងដឹងថាយើងចង់ផ្ទុកឈ្មោះនិងប្រទេសសម្រាប់ទីក្រុងរបស់យើង, ដូច្នេះវានឹងដំណើរការល្អនៅក្នុងតារាងមួយ។
| ទីក្រុង | ប្រទេស |
|---|---|
| តូគ្យូ | ជប៉ុន |
| អាតឡានតា | សហរដ្ឋអាមេរិក |
| អូខ្លិន | នូវហ្សេឡង់ |
មុននឹងបង្កើតតារាងបន្ទាប់, យើងត្រូវសម្រេចយ៉ាងដូចម្តេចក្នុងការរកឃើញទំនាក់ទំនងជាមួយពួកវា។ យើងត្រូវការសម្ភារណាមួយហៅថា អត្តសញ្ញាណ, ID ឬ (ក្នុងពាក្យបច្ចេកទេសរបស់មូលដ្ឋានទិន្នន័យ) គន្លឹះដើម(primary key)។ គន្លឹះដើមគឺតម្លៃមួយដែលប្រើសម្រាប់កំណត់ជួរតែមួយពិសេសក្នុងតារាងមួយ។ ខណៈដែលវាអាចផ្អែកលើតម្លៃក្នុងខ្លួនវា (យើងអាចប្រើឈ្មោះទីក្រុងបានឧទាហរណ៍), វាគួរតែជាលេខឬក៏សម្គាល់ផ្សេងទៀតជាច្រើនតែម្ដង។ យើងមិនចង់ឲ្យ id ផ្លាស់ប្តូរអ្វីៗទៀតព្រោះវានឹងបំបែកទំនាក់ទំនង។ អ្នកនឹងងាយស្រួលឃើញក្នុងករណីភាគច្រើនគន្លឹះដើមឬid ទៀងទាត់ជាលេខបង្កើតដោយស្វ័យប្រវត្តិ។
✅ គន្លឹះដើម តែងតែត្រូវបានចាត់ទុកថា ជា PK
| city_id | ទីក្រុង | ប្រទេស |
|---|---|---|
| 1 | តូគ្យូ | ជប៉ុន |
| 2 | អាតឡានតា | សហរដ្ឋអាមេរិក |
| 3 | អូខ្លិន | នូវហ្សេឡង់ |
✅ អ្នកនឹងសម្គាល់ថាយើងប្រើពាក្យ "id" និង "primary key" ជាប្រភេទប្រេះប្រា ប្រជុំក្នុងមេរៀននេះ។ គំនិតនៅទីនេះយកទៅប្រើបានជាមួយ DataFrames ដែលអ្នកនឹងស្វែងយល់បន្តិចក្រោយ។ DataFrames មិនប្រើពាក្យ "primary key" ផ្ទាល់ទេ ប៉ុន្តែអ្នកនឹងមើលឃើញម៉េចវាប្រព្រឹត្តទៅដូចគ្នា។
ជាមួយតារាងទីក្រុង, យើងចាប់ផ្តើមផ្ទុកភ្លៀង។ បើវាមានការចម្លងព័ត៌មានពេញលេញអំពីទីក្រុង ត្រូវប្រើ id។ យើងត្រូវប្រាកដថាតារាងថ្មីក៏មានកូឡាំ id ផងដែរ ពីព្រោះតារាងទាំងអស់គួរតែមាន id ឬ primary key។
| rainfall_id | city_id | ឆ្នាំ | បរិមាណ |
|---|---|---|---|
| 1 | 1 | 2018 | 1445 |
| 2 | 1 | 2019 | 1874 |
| 3 | 1 | 2020 | 1690 |
| 4 | 2 | 2018 | 1779 |
| 5 | 2 | 2019 | 1111 |
| 6 | 2 | 2020 | 1683 |
| 7 | 3 | 2018 | 1386 |
| 8 | 3 | 2019 | 942 |
| 9 | 3 | 2020 | 1176 |
សម្គាល់កូឡាំ city_id ក្នុងតារាងថ្មី rainfall។ កូឡាំនេះមានតម្លៃដែលយោងទៅរក ID ក្នុងតារាង cities។ ក្នុងពាក្យបច្ចេកវិទ្យាទិន្នន័យទំនាក់ទំនង វាហៅថា foreign key; វាជាគន្លឹះដើមពីតារាងផ្សេងមួយ។ អ្នកអាចគិតថាវាជាការយោង ឬគោលបំណងមួយ។ city_id 1 យោងទៅ Tokyo។
Note
foreign key តែងតែត្រូវបានចាត់ទុកថា ជា FK
ដោយមានទិន្នន័យបំបែកជា ២ តារាង អ្នកអាចចាប់អារម្មណ៍ថានឹងទាញយកវាយ៉ាងដូចម្តេច។ ប្រសិនបើយើងប្រើមូលដ្ឋានទិន្នន័យទំនាក់ទំនងដូចជា MySQL, SQL Server ឬ Oracle, យើងអាចប្រើភាសាមួយហៅថា Structured Query Language ឬ SQL។ SQL (មួយចំនួនហៅថា sequel) គឺជាភាសាមាត្រយោងសម្រាប់ទាញយកនិងកែប្រែទិន្នន័យក្នុងមូលដ្ឋានទិន្នន័យទំនាក់ទំនង។
មកទាញយកទិន្នន័យ អ្នកប្រើការបញ្ជា SELECT។ ដើមគេ, អ្នក ជ្រើសរើស កូឡាំដែលអ្នកចង់មើល ពី តារាងដែលវាផ្ទុកជុំវិញ។ ប្រសិនបើអ្នកចង់បង្ហាញតែឈ្មោះទីក្រុង អ្នកអាចប្រើដូចខាងក្រោម៖
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- AucklandSELECT គឺជាកន្លែងអ្នករាប់បញ្ជីកូឡាំ ហើយ FROM គឺជាកន្លែងបញ្ជីតារាង។
Note
សំណុំបែបបទ SQL មិនប្រកាន់ខណ្ឌពុម្ពអក្សរទេ មានន័យថា select និង SELECT មានន័យដូចគ្នា។ ទោះយ៉ាងណា, ផ្អែកទៅលើប្រភេទមូលដ្ឋានទិន្នន័យ អ្នកប្រហែលជាអាចមានករណីកូឡាំនិងតារាងមានករណីពុម្ពអក្សរកំណត់។ ដូច្នេះ ជាការអនុវត្តល្អបំផុត ក្នុងការគ្រប់អ្នកវាយកូដគួរតែប្រើរបៀបរៀបចំធំលើពាក្យគន្លឹះSQL ។
សំណួរខាងលើនឹងបង្ហាញទីក្រុងទាំងអស់។ ដូច្នេះគិតថា យើងត្រូវបង្ហាញតែទីក្រុងដែលនៅក្នុង New Zealand។ យើងត្រូវការសំរាប់តម្រងមួយ។ ពាក្យ SQL សម្រាប់នេះគឺ WHERE, ឬ "នៅកន្លែងដែលអ្វីមួយពិត។"
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Aucklandរហូតមកដល់ពេលនេះយើងបានទាញយកទិន្នន័យពីតារាងតែមួយ។ ឥឡូវនេះយើងចង់ដង្ហើយទិន្នន័យពីទាំងពីរ cities និង rainfall។ វាត្រូវបានអនុវត្តដោយ joining ពួកវារួមគ្នា។ អ្នកមានការបង្កើតចំណុចភ្ជាប់រវាងតារាងពីរនៅកន្លែងណាមួយ ហើយភ្ជាប់តម្លៃពីកូឡាំមួយពីតារាងមួយទៅកូឡាំពីតារាងមួយទៀត។
នៅក្នុងឧទាហរណ៍លំហូរយើងយួរយកកូឡាំ city_id នៅក្នុង rainfall ជាមួយកូឡាំ city_id នៅក្នុង cities។ វានឹងភ្ជាប់តម្លៃភ្លៀងជាមួយទីក្រុងពាក់ព័ន្ធរបស់វា។ ប្រភេទ join ដែលយើងនឹងធ្វើហៅថា inner join, មានន័យថាបើជួរណាមួយមិនប៉ះគ្នានឹងអ្វីមួយពីតារាងផ្សេង វានឹងមិនបង្ហាញឡើងទេ។ ក្នុងរឿងរបស់យើង តើមួយៗទីក្រុងមានភ្លៀងទេ, ដូច្នេះអ្វីៗគ្រប់យ៉ាងនឹងបង្ហាញ។
យើងសង់សំណូមពរទាញយកភ្លៀងរបស់ឆ្នាំ 2019 សម្រាប់ទីក្រុងទាំងអស់។
យើងនឹងធ្វើវាជាជំហានៗ។ ជំហានដំបូងគឺបញ្ចូលទិន្នន័យរួមគ្នា ដោយបង្ហាញកូឡាំសម្រាប់ចំណុចភ្ជាប់ - city_id ដូចដែលបានបង្ហាញខាងលើ។
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_idយើងបានពណ៌បង្ហាញពីកូឡាំទាំងពីរដែលយើងចង់បាន ហើយត្រូវចូលរួមតារាងដោយ city_id។ ឥឡូវនេះអាចបន្ថែមប្រយោគ WHERE ដើម្បីតម្រងអំពីឆ្នាំ 2019 ប៉ុណ្ណោះ។
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942មូលដ្ឋានទិន្នន័យទំនាក់ទំនងផ្អែកលើការបំបែកព័ត៌មានជាច្រើនតារាងដែលបន្ទាប់មកត្រូវបានយកមកវិញសម្រាប់បង្ហាញនិងវិភាគ។ វាពិចារណាជាកម្រិតខ្ពស់នៃភាពបត់បែនដើម្បីគណនានិងគ្រប់គ្រងទិន្នន័យផ្សេងទៀត។ អ្នកបានឃើញមេរៀនគ្រឹះនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនង ហើយបានកិច្ចការបញ្ចូលគ្នារវាងតារាងពីរ។
មានមូលដ្ឋានទិន្នន័យទំនាក់ទំនងជាច្រើនដែលមានស្រាប់នៅលើអ៊ីនធឺណិត។ អ្នកអាចស្វែងយល់ទិន្នន័យដោយប្រើជំនាញដែលបានរៀនខាងលើ។
មានធនធានជាច្រើនក្នុង Microsoft Learn សម្រាប់អ្នកដើម្បីបន្តស្វែងយល់អំពី SQL និងគំនិតមូលដ្ឋានទិន្នន័យទំនាក់ទំនង
- ពណ៌នាគំនិតនៃទិន្នន័យទំនាក់ទំនង
- ចាប់ផ្តើមស្វែងរកជាមួយ Transact-SQL (Transact-SQL គឺជារស់ជ្រៅនៃ SQL)
- មាតិការអំពី SQL នៅ Microsoft Learn
ការបដិសេធ៖ ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខំប្រឹងប្រសិទ្ធភាពក្នុងការបន្សល់ភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវមួយចំនួន។ ឯកសារដើមនៅក្នុងភាសាតំណាងរបស់វាគួរត្រូវបានចាត់ទុកជាធនធានដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញម្នាក់គឺត្រូវបានណែនាំ។ យើងមិនមានការទទួលខុសត្រូវចំពោះការយល់បញ្ចូលខុស ឬការបកប្រែមិនត្រឹមត្រូវណាមួយដែលបង្កើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
