دعنا نأخذ فكرة عن طرف التخزين في البداية وكيف كانت على الإنترنت في السابق ....
كان من أكثر طرق التخزين انتشارا في السابق على الإنترنت وربما هو لا يزال يستخدم في بعض المواقع والمنتديات يعتمد على الملفات ....فكان صاحب الموقع الذي لديه هذه الطريقة في تخزين البيانات خوف وتعب من فقدانها مثلاً وكان الشبح الذي يكدر عليه صفوة نجاح موقعه هو عمل نسخ احتياطية لهذه الملفات لكي يتمكن من استرجعها في حال فقدانها فكانت هذه العملية تأخذ وقت وجهد ومال ....كما كان من عيوب تخزين البيانات في الجداول ضغط الخادم أو (server) في حال الاستعلام عن معلومة معينة والبحث عنها كما أنه يستهلك الكثير من ذاكرة هذا الخادم في عملية بحث معينة فهو يحجز مساحة ليست بالهينة في عملية بحث عن أسم مثالاً أو ما شابهها .
ربما يتردد عند البعض ذالك السؤال وهو ....ما هي قواعد البيانات بالضبط ؟
قواعد البيانات ببساطة جمع المعطيات أو المدخلات .
كل قاعدة بيانات ربما تتكون من جدول (Table) واحد أو عدة جداول هذه الجداول تحتوي علي أعمدة وصفوف تهيكل البيانات وترتبها ,,,,,وسوف أجعل لك مهمة اكتشاف فوائد قواعد البيانات في آخر الدرس .
لترى الجدول الذي بالأسفل كمثال :
كان من أكثر طرق التخزين انتشارا في السابق على الإنترنت وربما هو لا يزال يستخدم في بعض المواقع والمنتديات يعتمد على الملفات ....فكان صاحب الموقع الذي لديه هذه الطريقة في تخزين البيانات خوف وتعب من فقدانها مثلاً وكان الشبح الذي يكدر عليه صفوة نجاح موقعه هو عمل نسخ احتياطية لهذه الملفات لكي يتمكن من استرجعها في حال فقدانها فكانت هذه العملية تأخذ وقت وجهد ومال ....كما كان من عيوب تخزين البيانات في الجداول ضغط الخادم أو (server) في حال الاستعلام عن معلومة معينة والبحث عنها كما أنه يستهلك الكثير من ذاكرة هذا الخادم في عملية بحث معينة فهو يحجز مساحة ليست بالهينة في عملية بحث عن أسم مثالاً أو ما شابهها .
ربما يتردد عند البعض ذالك السؤال وهو ....ما هي قواعد البيانات بالضبط ؟
قواعد البيانات ببساطة جمع المعطيات أو المدخلات .
كل قاعدة بيانات ربما تتكون من جدول (Table) واحد أو عدة جداول هذه الجداول تحتوي علي أعمدة وصفوف تهيكل البيانات وترتبها ,,,,,وسوف أجعل لك مهمة اكتشاف فوائد قواعد البيانات في آخر الدرس .
لترى الجدول الذي بالأسفل كمثال :
#Table "Coustomers"
Id | Fname | Lname |
025 | عبدالواهب | صالح |
044 | محمد | خالد |
كما تلاحظ , الجدول قسم البيانات إلى صفوف ...مع كل إضافة عميل جديد سوف يكون هناك صف (سجل) جديد ... ربما لو تطلق لخيالك العنان سوف تلاحظ أن هذا الجدول مشابه للدولاب والصفوف رفوف فإذا أردت أن تضيف كتب أو ملابس أو أي كان سوف تضيفها في رف جديد ..كما يحصل في إضافة عميل جديد سوف تضيفه في صف (سجل) جديد .
البيانات في كل صف قسمت إلى مدى أبعد في الخلايا ( أو الحقول) , كل من هذه البيانات تحتوي على قيمة محددة وصفة محددة , على سبيل المثال محمد خالد سوف ترى أن هذا العميل انقسمت بياناته في الحقل إلى id والاسم الأول والاسم الأخير .
الصفوف في الجدول ليس لها ترتيب معين .. يمكن أن يكون الترتيب أبجديا ويمكن أن يكون باسم العضو أو باسمه الأخير أو بآي معيار أخر يمكن أن تحدده مسبقاً لترتيب الصفوف ولهذا يكون من الضروري تحديد طريقة ليسهل عليك تحديد صف(سجل) معين ....في المثال السابق نستطيع إخراج السجل من بين باقي السجلات بــ id وهو رقم العميل الذي هو عدد فريد لا يتكرر في أي صف(سجل) أخر وسبب استنادي في استخراج السجل علي id لانه ربما يكون هناك عميلان لها نفس الاسم .... وهذا ليس شرط أن يكون للجدول مفتاح فريد لكن هنا حددنه لكي يتم استخراج السجلات المطلوبة بسهوله وبسرعة اكبر .
العلاقات
الكثير من قواعد البيانات اليوم هي نظم إدارة قواعد بيانات علائقية (relational database management systems ) تختصر في RDBMS , قواعد البيانات العلائقية هذه عبارة عن مجموعة من الجداول أو نموذج من الجداول النموذجية المتعددة التي تحتوي على معلومات مترابطة .
ربما تسمع ايضاً الكثير عن SQL وهي اختصار ل(Structured Query Language ) وهي تسمح لك أن توحد هذه المعلومات من الجداول المترابطة وبذالك تسمح لك بإنشاء وتحليل العلاقات الجديدة .
المثال السابق للعملاء كان عبارة عن جدول واحد فقط , ولذالك لن تحتاج إلى ربط بينه وبين جدول آخر لأنه لا يجد .
لكن إذا كان هناك أكثر من جدول وكانت هذه الجداول مترابطة مع بعضها البعض في البيانات سوف تلاحظ
أنك بحاجة إلى نظم إدارة البيانات العلائقية (RDBMS) ....فلنرى هذه المثال لكي تتضح الصورة أكثر :
ربما تسمع ايضاً الكثير عن SQL وهي اختصار ل(Structured Query Language ) وهي تسمح لك أن توحد هذه المعلومات من الجداول المترابطة وبذالك تسمح لك بإنشاء وتحليل العلاقات الجديدة .
المثال السابق للعملاء كان عبارة عن جدول واحد فقط , ولذالك لن تحتاج إلى ربط بينه وبين جدول آخر لأنه لا يجد .
لكن إذا كان هناك أكثر من جدول وكانت هذه الجداول مترابطة مع بعضها البعض في البيانات سوف تلاحظ
أنك بحاجة إلى نظم إدارة البيانات العلائقية (RDBMS) ....فلنرى هذه المثال لكي تتضح الصورة أكثر :
#Table "Coustomers"
Id | Fname | Lname |
025 | عبدالواهب | صالح |
044 | محمد | خالد |
022 | حمد | طارق |
#Table "Address"
Id | Tel | Street | City | Country |
044 | 018522 | شارع الاهرام | القاهرة | مصر |
022 | 01225505 | طريق الملك فهد | الرياض | السعودية |
025 | 0122505 | طريق الاربعين | الكويت | الكويت |
#Table "Account "
Id | accountb |
044 | 10.0000 |
025 | 20.0000 |
022 | 20.000 |
كل من هذه الجداول الثلاثة كيان مستقل .... لكن تلاحظ أنهم مرتبطين مع بعضهم البعض ب(id) , على سبيل المثال بأماكننا أن نعرف رصيد العميل عبد الواهب صالح من id , كما يمكننا معرفة اين يسكن حمد طارق وكم رقم التلفون وايضاً بمكننا أن نعرف من هو صاحب الرصيد 20.000 أيضاً كم واحد من مدينة القاهرة والكثير الكثير ..... ربما اتضح لك اهمية العلاقات .
إذاً عرفنا أن العلافات هي الأساس الجوهري لنظم قاعدة البيانات العلائقية , بجعلها مرنه وسهلة بحث تتمكن من ربط السجلات المختلفة مع بعضها البعض في الجداول .
إذاً عرفنا أن العلافات هي الأساس الجوهري لنظم قاعدة البيانات العلائقية , بجعلها مرنه وسهلة بحث تتمكن من ربط السجلات المختلفة مع بعضها البعض في الجداول .
المفتاح الأجنبي
سوف تلاحظ أن حقل (id ) الذي يظهر في الجداول في الثلاثة والذي جعل من الممكن ربط الجداول المختلفة معاً أنة مفتاح أجنبي لأنة بالأصل مفتاح فريد ( primary key) في جدول (COUSTOMERS) ...
ليس ضرورياً أن يكون هناك مفتاح أجنبي في كل جدول ولكن يتم إضافة على حسب حاجتك فإذا كنت تريد ربط بيانات الجداول مع بعضها فسوف تحتاج إليها.
في كل جدول يجود به المفتاح الأجنبي سوف يكون له مرجعية للجدول الأصل فمثلاً هنا المرجعية ستكون جدول (customers) ....بمعنى أن المفتاح الأجنبي سوف يقوم بربط البيانات ما بين الجدول الأصل وبين الجدول الذي يتواجد به كمفتاح أجنبي ....من هنا يتضح لنا مفهوم الاستقامة المرجعية وهذا مفهوم أساسي ومهم عندما تصمم قاعدة بيانات بأكثر من جدول . سوف يكون للمفتاح الأجنبي قيمة ثابتة في جميع الجداول بمعنى لو كان قيمة المفتاح الأجنبي في جدوله الأصل عدد صحيح فسوف يكون بنفس القيمة في جميع الجداول ,,,,ونقطة أخرى إذا حدث تحديث أو تغيير أو حذف لا حد القيم في المفتاح الأجنبي فسوف تتم في جميع الجداول ...هذا هو مفهوم الاستقامة المرجعية .
كثير من قواعد البيانات اليوم يتم تعديل القيم بها تلقائياً كمكر سوفت أكسس وبعض قواعد البيانات الأخرى , لكن هناك بعض قواعد البيانات التي تحتاج إلى تعديل يدوي على كل قيمة يتم التعديل عليه ...وهذا لاشك انه متعب !!
ليس ضرورياً أن يكون هناك مفتاح أجنبي في كل جدول ولكن يتم إضافة على حسب حاجتك فإذا كنت تريد ربط بيانات الجداول مع بعضها فسوف تحتاج إليها.
في كل جدول يجود به المفتاح الأجنبي سوف يكون له مرجعية للجدول الأصل فمثلاً هنا المرجعية ستكون جدول (customers) ....بمعنى أن المفتاح الأجنبي سوف يقوم بربط البيانات ما بين الجدول الأصل وبين الجدول الذي يتواجد به كمفتاح أجنبي ....من هنا يتضح لنا مفهوم الاستقامة المرجعية وهذا مفهوم أساسي ومهم عندما تصمم قاعدة بيانات بأكثر من جدول . سوف يكون للمفتاح الأجنبي قيمة ثابتة في جميع الجداول بمعنى لو كان قيمة المفتاح الأجنبي في جدوله الأصل عدد صحيح فسوف يكون بنفس القيمة في جميع الجداول ,,,,ونقطة أخرى إذا حدث تحديث أو تغيير أو حذف لا حد القيم في المفتاح الأجنبي فسوف تتم في جميع الجداول ...هذا هو مفهوم الاستقامة المرجعية .
كثير من قواعد البيانات اليوم يتم تعديل القيم بها تلقائياً كمكر سوفت أكسس وبعض قواعد البيانات الأخرى , لكن هناك بعض قواعد البيانات التي تحتاج إلى تعديل يدوي على كل قيمة يتم التعديل عليه ...وهذا لاشك انه متعب !!
الفهرسة
لو كان لديك جدول به الكثير من السجلات , يمكنك أن تستعلم بسرعة كبيرة عن أيمن هذه السجلات بواسطة "فهرسة" كل السجلات . هذا المفهوم تقريباً شبيه جداً بالفهرس الذي يوجد نهاية كل كتاب ...كما يسهل عليك هذا الفهرس الموجود في الكتاب في سرعة البحث عن المواضيع التي يتضمنها الكتب , نفس الكلام ينطبق على فهرسة السجلات في الجدول ....دعنا نرى مثال لتتضح الصورة :
SELECT * FROM names WHERE ID = 220;
سوف يقوم هذا الاستعلام في البحث في جميع المعلومات وإرجاع قيمتها بشرط أن يكون رقم السجل (الفهرس) 022
هنا سهلت علينا المهمة كثيراً وذالك لان السجلات مرتبه بأرقام فلي كل سجل رقم فريد يميزه عن الأخر وبهذه الحالة سوف يقوم هذا الاستعلام السابق بجلب جميع بيانات العميل "حمد طارق " ....
هنا سهلت علينا المهمة كثيراً وذالك لان السجلات مرتبه بأرقام فلي كل سجل رقم فريد يميزه عن الأخر وبهذه الحالة سوف يقوم هذا الاستعلام السابق بجلب جميع بيانات العميل "حمد طارق " ....