Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

14 تغريدة 190 قراءة Mar 10, 2021
قواعد البيانات العلائقية RDBMS كـ Oracle و SQL Server و MySQL و غيرها تقنية مهمة و جزء اساسي في اغلب تطبيقات اليوم. عالمها كبير و مرّت بتاريخ طويل من التجارب بعضها اخفق و بعضها نجح لتظهر لنا SQL بشكلها الحالي. سأكتب باختصار بعض الأفكار عنها من منظور مختلف . ( سلسلة )
سافترض أن القاري يعرف او سمع عن الSQL , يعرف Keywords مثل Select و Where و Join و ممكن يعرف Intersect و Union إذا كان لا يعرف الاخيرتين فربما مازال يتذكر درس المجموعات في منهج الرياضيات للصف الخامس.
اتحاد المجموعات ورمزه U هو ال Union التي ذكرتها
فنقول A ∪ B اما تقاطع المجموعات فهو Intersect ونقول A ∩ B حيث ان السجلات او الجدوال ليست اكثر من "مجموعات" في علم الرياضيات خاضعة لنظرية المجموعات. حتى مفهوم العلاقات بين الجداول موجود في النظرية فنقول مثلا (A, B).
المهم ..
هناك عملية اخرى تحت نظرية المجموعات هي MINUS عندما نقول A - B و هذي مدعومة مباشرة في Oracle لكن تغيب في SQL Server و ربما نقول موجودة لكن باسم اخر هو EXCEPT لكن هذا انحراف عن النظرية.
المشكلة ليست هنا فقط. حيث من المفترض بقواعد البيانات الRDBMS التي تسمي نفسها علائقية Relational أن تدعم نظرية أخرى اكثر تطوراً من نظرية المجموعات هي الجبر العلائقي او الRelational Algebra و التي هي الأصل الذي اوجد قواعد البيانات العلائقية.
فالجبر العلائقي مثلاً هو الذي اوجد لنا Select و التي يسميها Projection و هو الذي اوجد Where و التي تقابل Selection في الجبر العلائقي. ايضاً اوجد لنا Join و هي كما هي باسمها في SQL لكن قواعد البيانات لم تدعم كامل ماذُكر في النظرية عن Join كما سنرى.
فمثلاً نحن نعرف الJoin و Inner Join و الOuter Join لكن في النظرية الأمر مختلف قليلاً هناك مثلا Equi join و يمكن تمثيلها في SQL بالطريقة المعروفة بأن نقول join t2 on t1.a=t2.b
و هناك الNatural join و هي قريبة من الInner Join لكن لا تطابقها في النتائج ولا يوجد بها ON فهي تعتمد على تطابق اسماء الحقول في الجداول .. يعرفونها من يستخدمون اوراكل التي تدعمها لكن SQL Server لا.
لدينا في الجبر العلائقي ايضاً Theta Join هي نفس الEqui Join لكن بدل علامة يساوي يمكن ان تكون العلامة < او > !!. متى نحتاجها ؟ لا تحضرني حالة الآن. لكن بما انها في الرياضيات فيجب تطبيقها إن اردت ان تسمي او تصنف منتج كقواعد بيانات علائقية.
ايضاً في النظرية العلائقيةهناك عمليات مثل Division و Semi join و Anti-join فهل هي موجودة في قواعد "البيانات العلائقية" او الRDBMS الآن؟
"علم الكمبيوتر" إن صحت تسميته علماً كان في بداياته مرتبطاً بعلوم حقيقية كالرياضيات عندما كانت الجامعات مهداً للتقنيات و لم تتدخل الشركات الربحية في تحديد مساره متأثرة بسباقها المحموم للوصول للسوق.
بعد ما ذكرت, لو سألنا هل هناك بديل للSQL يلبي النظرية العلائقية ؟ فالجواب نعم هناك Tutorial D تماشت مع النظرية و لكن لم تتماشى مع السوق و هناك قاعدة بيانات Rel ايضاً تماشت مع النظرية و لم تتماشى مع السوق.
ما اردت قوله هنا , أن العِلم هو الأساس دائماً و ابداً و هو النظرية اما الكمبيوتر فهو التطبيق . وكان من المفترض لو طبّقت التقنية النظرية كما هي لتمكن شخص درس الرياضيات لا الكمبيوتر أن يكتب بكل سهولة معادلاته مباشرة على قواعد البيانات.
و بالنسبة لنا مهم حتى إن اردنا أن نقيم التقنيات او نقارن بينها بشكل صحيح أن ننظر لها من منظور علمي بحت مستندين على نظريات علمية لا مجرد مميزات تسويقية تماشي احيانا الكسل و احيانا اخرى سعينا لاختصار الوقت بعيداً عن العلوم الحقيقية فقد فاتنا بسبب ذلك الكثير.
انتهى.

جاري تحميل الاقتراحات...