You are on page 1of 5

‫المضي قد ًما‬

‫سرا حقًا) وراء نجاح ‪ SQL‬كلغة‪.‬تتيح‬ ‫في الدرس التالي‪ ،‬ستتعلمون حول‪ JOIN.‬وهذه هي السر الحقيقي (حسنًا‪ ،‬ليس ً‬
‫لنا ‪ JOIN‬دمج عدة جداول معًا‪.‬ستظل جميع العمليات التي تعلمناها هنا مهمة أثناء مضينا قد ًما‪ ،‬لكن سنكون قادرين على‬
‫اإلجابة عن الكثير من األسئلة األكثر تعقيدًا عن طريق دمج معلومات من عدة جداول!لقد أتقنتم بالفعل كتابة األكواد التي‬
‫يحتمل أن تكون األولى لكم‪ ،‬وأصبحتم أفضل بكثير!‬

‫تسوية قاعدة البيانات‬


‫من المهم للغاية أن نفكر في طريقة تخزين البيانات عند إنشاء قاعدة بيانات‪.‬وهذا ما يُعرف باسم التسوية‪ ،‬كما أنَّه يمثل‬
‫كبيرا من معظم فئات‪ SQL.‬إذا كنت مسئوالً عن إعداد قاعدة بيانات جديدة‪ ،‬فمن المهم أن تفهم تسوية قاعدة‬ ‫جز ًءا ً‬
‫البيانات جيدًا‪.‬‬
‫ثمة ثالث أفكار جوهرية تهدف إلى تسوية قاعدة البيانات‪:‬‬

‫‪1.‬هل تخزن الجداول مجموعات منطقية من البيانات؟ ‪.2‬هل يمكنني التغيير في موقع واحد‪ ،‬بدالً من تغيير المعلومات‬
‫نفسها في عدة جداول؟ ‪.3‬هل يمكنني الوصول إلى البيانات ومعالجتها بسرعة وفعالية؟‬

‫ناقشنا هذا بالتفصيل هنا‪.‬‬


‫ومع ذلك‪ ،‬يستخدم معظم المحللين قاعدة بيانات تم إعدادها مسبقًا باستخدام الخصائص الضرورية المتاحة‪.‬بصفتكم محللي‬
‫كثيرا في تسوية البيانات‪.‬يجب عليكم أن تكونوا قادرين على سحب البيانات من قاعدة‬
‫بيانات‪ ،‬لستم بحاجة إلى التفكير ً‬
‫البيانات‪ ،‬بحيث يمكنكم البدء في تكوين أفكار‪.‬سيكون هذا هو محور تركيزنا في هذا الدرس‪.‬‬

‫سيركز هذا الدرس بأكمله على عبارات‪ JOIN.‬يتمثل الهدف األساسي من عبارات ‪ JOIN‬في السماح لنا بسحب البيانات‬
‫من أكثر من جدول في آن واحد‪.‬‬
‫ً‬
‫أمرا بسيطا ومه ًما في‬
‫أكرر ثانية ‪ -‬تعد عبارات ‪ JOIN‬مفيدة حيث تسمح لنا بسحب البيانات من عدة جداول‪.‬ويعد هذا ً‬
‫الوقت ذاته‪.‬‬
‫بإضافة عبارة ‪ JOIN‬إلى مجموعة األدوات‪ ،‬سنضيف أيضًا عبارة‪ON.‬‬

‫ماذا تالحظون‬
‫يمكننا سحب البيانات من جدولين‪:‬‬
‫‪1.‬األوامر‪ 2.‬الحسابات‬
‫يمكننا سحب البيانات من جدول األوامر أعاله‪.‬‬
‫تربط عبارة ‪ ON‬العمودين المرتبطين من خالل الجدولين‪.‬وسيكون هذا محور تركيزنا في المفاهيم التالية‪.‬‬

‫أسئلة االختبار‪.‬‬
‫‪1.‬حاولوا سحب كل البيانات من جدول حسابات‪ ،‬وكل البيانات من جدول أوامر‪.‬‬

‫‪2.‬حاولوا سحب‪ ، standard_qty‬و‪ ،gloss_qty‬و ‪poster_qty‬من جدول أوامر‪ ،‬وسحب موقع‬


‫الويب و ‪primary_poc‬من جدول حسابات‪.‬‬
‫ثمة سياق آخر الحق لممارسة هذين السؤالين‪ ،‬ويمكنكم التحقق من الحلول في المفهوم التالي‪.‬‬

‫الحلول‬
‫‪1.‬‬

‫*‪SELECT orders.*, accounts.‬‬


‫‪FROM accounts‬‬
‫‪JOIN orders‬‬
‫;‪ON accounts.id = orders.account_id‬‬
‫الحظوا أن هذه النتيجة تكون نفسها إذا بدلتم الجداول في ‪ FROM‬و‪JOIN.‬باإلضافة إلى ذلك‪ ،‬ال يهم أي‬
‫طرفي = يُدرج فيه العمود‪.‬‬
‫‪2.‬‬

‫‪SELECT orders.standard_qty, orders.gloss_qty,‬‬


‫‪orders.poster_qty, accounts.website,‬‬
‫‪accounts.primary_poc‬‬
‫‪FROM orders‬‬
‫‪JOIN accounts‬‬
‫‪ON orders.account_id = accounts.id‬‬
‫الحظوا أنه يجب علينا تحديد كل جدول نستورد منه عمود من عبارة‪SELECT.‬‬

‫مفاتيح‬
‫المفتاح األساسي)‪(PK‬‬
‫المفتاح األساسي هو عمود فريد في جدول معين‪.‬هذا هو أول عمود من كل الجداول التي معنا‪.‬يُطلق على هذه األعمدة‬
‫اسم المعرف‪ ،‬لكن ليس بالضرورة أن يكون هذا هو االسم‪.‬من الشائع أن المفتاح األساسي هو العمود األول من كل جدول‬
‫في معظم قواعد البيانات‪.‬‬

‫المفتاح الخارجي)‪(FK‬‬
‫المفتاح الخارجي هو عندما نشاهد مفتا ًحا أساسيًّا في جدول آخر‪.‬يمكننا استخدامها في عالقة مخطط الكيانات)‪، (ERD‬‬
‫تُقدم المفاتيح الخارجية في صورة‪:‬‬
1.region_id 2.account_id 3.sales_rep_id
:‫يرد في الصورة التالية مثال للتوضيح‬.‫حيث يرتبط كل منها بـ المفتاح األساسي من الجدول اآلخر‬

‫رابط المفاتيح األساسية والخارجية‬


‫ وهذا يمثل‬،‫ بالمعرف‬region_id ‫يرتبط‬.2 .‫يُعد مفتا ًحا خارجيًّا‬.region_id1 :‫ يمكنكم مالحظة أن‬،‫في الصورة أعاله‬
‫ في عديد من‬FK ‫ أنَّه يمكن ظهور‬crow's foot ‫يوضح مخطط‬.3 .‫خارجي يربط بين الجدولين‬-‫رابط مفتاح أساسي‬
‫ يوضح أن المعرف يظهر مرة واحدة في‬PK ‫ في حين يخبرنا السطر الواحد أن‬sales_reps. 4.‫الصفوف في جدول‬
.‫السطر في هذا الجدول‬
‫في‬.‫ الخارجي‬-‫ فستالحظون أن هذا ما يحدث دو ًما فيما يخص عالقة المفتاح األساسي‬،‫إذا نظرتم باقي قاعدة البيانات‬
!‫ يمكنكم من تحقيق هذا فيما يلي‬،‫المفهوم التالي‬

QUESTION 1 OF 3

‫صل التعريف أو الوصف المناسب بكل من المصطلحات أو األعمدة التالية‬.


ON accounts.id = web_events.id
ON web_events.id = accounts.id
ON accounts.account_id = web_events.id
DEFINITION OR COLUMN DESCRIPTION
‫المصطلح أم العمود‬
Has a unique value for every row in that column. There is one in every table.
Primary Key
The link to the primary key that exists in another table.
Foreign Key
The primary key in every table.
id
A foreign key that exists in both the web_events andorders tables.
account_id
The ON statement associated with a JOIN of theweb_events and accounts tables.
ON web_events.account_id = accounts.id
QUESTION 2 OF 3

‫حددوا كل ما هو صحيح عن المفاتيح األساسية‬.


 There is one and only one of these columns in every table.
 They are a column in a table.


There might be more than one primary key for a table.


They are a row in a table.


Every database only has one primary key for the whole database.

A table can only have one foreign key.


In the above database, every foreign key is associated with the crow-foot notation, which suggests
it can appear multiple times in the column of a table.

QUESTION 3 OF 3

‫حددوا كل ما هو صحيح عن المفاتيح الخارجية‬.


 They are always linked to a primary key.


They are unique for every row in a table.


Every table must have a foreign key.


A table can only have one foreign key.
 In the above database, every foreign key is associated with the crow-foot notation, which suggests it can
appear multiple times in the column of a table.
‫ربط أكثر من جدولين‬
‫يمكن أن يساعدكم هذا المنطق ذاته في ربط أكثر من جدولين م ًعا‪.‬انظروا إلى الجداول الثالثة التالية‪.‬‬

‫الكود‬
‫يمكننا استخدام المنطق ذاته إذا أردنا ربط هذه الجداول الثالثة‪.‬‬

‫‪FROM web_events‬‬
‫‪JOIN accounts‬‬
‫‪ON web_events.account_id = accounts.id‬‬
‫‪JOIN orders‬‬
‫‪ON accounts.id = orders.account_id‬‬
‫يمكن أن تسحب عبارة ‪ SELECT‬البيانات من أي جدول من الجداول الثالثة اآلن‪.‬أكرر‪ ،‬تربط عبارة ‪ JOIN‬الجدول‪،‬‬
‫كما أن ‪ ON‬رابط لـ ‪ PK‬ليساوي‪FK.‬‬
‫ستحتاج عبارة ‪ SELECT‬إلى تحديد الجدول التي ترغب في سحب العمود منه‪:‬‬
‫‪SELECT web_events.channel, accounts.name, orders.total‬‬
‫يمكننا مواصلة العملية نفسها لربط كل الجداول إذا أردنا‪.‬ألسباب تتعلق بالكفاءة‪ ،‬قد ال نرغب في عمل ذلك ما لم نحتاج‬
‫إلى معلومات من كل الجداول‪.‬‬

You might also like