الجبر العلائقي

في نظرية قاعدة البيانات، الجبر العلائقي  هو نظرية تستخدم الهياكل الجبرية لنمذجة البيانات وتحديد الاستعلامات عليها باستخدام دلالات جيدة التأسيس. قدَّم إدغار ف كوود هذه النظرية.

التطبيق الرئيسي للجبر العلائقي هو توفير أساس نظري لقواعد البيانات العلائقية، وخاصة لغات الاستعلام لمثل قواعد البيانات هذه، وأهمها لغة الاستعلامات المهيكلة SQL. تخزن قواعد البيانات العلائقية البيانات الجدولية الممثلة في صورة علاقات relations. غالبًا ما تُرجع الاستعلامات عبر قواعد البيانات العلائقية أيضًا بيانات جدولية ممثلة في صورة علاقات.

الغرض الرئيسي من الجبر العلائقي هو تحديد المشغلات (أو المؤثرات operators) التي تحول علاقة دخل واحدة أو أكثر إلى علاقة خرج. وبما أن هذه المؤثرات تقبل العلاقات كمدخلات وتنتج العلاقات كمخرجات، فمن الممكن دمجها واستخدامها للتعبير عن استعلامات معقدة تعمل على تحويل علاقات الإدخال المتعددة (التي يجري تخزين بياناتها في قاعدة البيانات) إلى علاقة إخراج واحدة (تُمثل نتائج الاستعلام).

تقبل المشغلات الأحادية علاقة واحدة كمدخل لها. تتضمن الأمثلة عوامل لتصفية سمات معينة (أعمدة) أو مجموعات (صفوف) من علاقة إدخال. تقبل المشغلات الثنائية علاقتين كمدخلات وتجمعهما في علاقة إخراج واحدة. على سبيل المثال، أخذ جميع الثنائيات الموجودة في أي علاقة ( اتحاد )، وإزالة الثنائيات من العلاقة الأولى الموجودة في العلاقة الثانية ( الفرق )، وتوسيع ثنائيات العلاقة الأولى بثنائيات في العلاقة الثانية تطابق شروطًا معينة، وهكذا.

 مقدمة 
لم يحظ الجبر العلائقي باهتمام كبير خارج نطاق الرياضيات البحتة حتى نُشر نموذج إي إف كود للعلاقات البيانات في عام 1970. اقترح إدجار كود مثل هذا الجبر كأساس للغات استعلام قواعد البيانات.

يعمل الجبر العلائقي على مجموعات متجانسة من الثنائيات  حيث نفسر عادةً m على أنه عدد صفوف العناصر في الجدول و n على أنه عدد الأعمدة. جميع الإدخالات في كل عمود لها نفس النوع type.

تحتوي العلاقة أيضًا على عنصر فريد يسمى الرأس header والذي يمنح كل عمود اسمًا أو سمة فريدة attribute داخل العلاقة. تُستخدم السمات في الإسقاطات والتحديدات.

 مؤشرات المجموعة 
يستخدم الجبر العلائقي اتحاد المجموعات، وفرق المجموعات، وناتج الجداء الديكارتي من نظرية المجموعات، ويضيف قيودًا إضافية إلى هذه المؤشرات لإنشاء مؤشرات جديدة.

بالنسبة لاتحاد المجموعات وفرق المجموعات، يجب أن تكون العلاقتان المعنيتان متوافقتين مع الاتحاد - أي يجب أن يكون للعلاقتين نفس مجموعة السمات. نظرًا لأن تقاطع المجموعات يمكن تعريفه بدلالة اتحاد المجموعات وفرق المجموعات، فيجب أن تكون العلاقتان المتضمنتان في تقاطع المجموعات متوافقتين مع الاتحاد أيضًا.

لكي يمكن تعريف حاصل الجداء الديكارتي، يجب أن يكون للعلاقتين المعنيتين رؤوس منفصلة - أي أنه لا يجب أن يكون لهما اسم سمة مشترك.

بالإضافة إلى ذلك، يمكن تعريف الناتج الديكارتي بشكل مختلف عن الناتج الموجود في نظرية المجموعات بمعنى أن المجموعات تعتبر "سطحية shallow" لأغراض العملية. وهذا يعني أن حاصل الجداء الديكارتي لمجموعة من n-أزواج مع مجموعة من m-أزواج يعطي مجموعة من "المسطحات" -أزواج (بينما كانت نظرية المجموعات الأساسية قد وصفت مجموعة من 2 من الأزواج، كل منها يحتوي على n-أزواج و m-أزواج). وبشكل أكثر رسمية، يمكن تعريف R × S على النحو التالي:

عدد عناصر حاصل الضرب الديكارتي هو حاصل ضرب عدد عناصر عوامله، أي | R × S | = | R | × | S |.

 الإسقاط 
الإسقاط projection (  ) هو عملية أحادية مكتوبة على النحو التالي  حيث  هي مجموعة من أسماء السمات. يمكن تعريف نتيجة هذا الإسقاط على أنها المجموعة التي نحصل عليها عندما يجري تقييد جميع الثنائيات في R بالمجموعة .

ملاحظة: عند التنفيذ في معيار لغة الاستعلامات المهيكلة SQL، يقوم "الإسقاط الافتراضي" بإرجاع مجموعة متعددة multiset بدلاً من مجموعة، ويمكن الحصول على إسقاط  لإزالة البيانات المكررة عن طريق إضافة الكلمة الأساسية DISTINCT (أي DISTINCT keyword).

 الاختيار 
الاختيار المعمم generalized selection ( σ ) هو عملية أحادية مكتوبة على النحو التالي  حيث φ هي صيغة اقتراحية propositional formula تتكون من ذرات atomsكما هو مسموح به في الاختيار الطبيعي normal selection والمؤشرات المنطقية ∧
 (and),  (or) and  (negation). يقوم هذا الاختيار بتحديد كل تلك المجموعات في R التي تحتوي على φ.

للحصول على قائمة بجميع الأصدقاء أو شركاء العمل في دفتر العناوين، يمكن كتابة الاختيار على النحو التالي . ستكون النتيجة هي علاقة تحتوي على كل سمة من سمات كل سجل فريد حيث يكون  صحيحًا أو حيث يكون  صحيحًا.

 إعادة التسمية 

إعادة التسمية ( ρ ) أو rename هي عملية أحادية مكتوبة على النحو التالي  حيث تكون النتيجة متطابقة مع R باستثناء أن السمة b في جميع الثنائيات يجري إعادة تسميتها إلى سمة a. يُستخدم هذا عادةً لإعادة تسمية سمة العلاقة لغرض الانضمام.

لإعادة تسمية السمة "isFriend" إلى "isBusinessContact" في علاقة،  قد ييجري استخدامها.

هناك أيضا تدوين ، حيث يمكن إعادة تسمية R إلى x والسمات  يجري إعادة تسميتها إلى .

 مؤشرات الارتباط والشبيهة بالارتباط 


 الارتباط الطبيعي 
الارتباط الطبيعي (⨝) (بالإنجليزية Natural join) هو علاقة ثنائية تُكتب على هيئة ( R ⨝ S ) حيث R و S هما علاقات.  نتيجة الارتباط الطبيعي هي مجموعة كل مجموعات العناصر في R و S المتساوية في أسماء السمات المشتركة. على سبيل المثال، ضع في اعتبارك الجداول الموظفين Employee والقِسم Dept وارتباطهما الطبيعي:


 +           Employee
   Name    EmpId  DeptName
   Harry   3415   Finance
   Sally   2241   Sales
   George  3401   Finance
   Harriet  2202  Sales
   Mary    1257  Human Resources

 +           Dept
   DeptName    Manager
   Finance   George
   Sales   Harriet
   Production  Charles

 +  Employee ⨝ Dept
   Name    EmpId   DeptName    Manager
   Harry   3415    Finance   George
   Sally   2241    Sales   Harriet
   George  3401   Finance  George
   Harriet  2202  Sales  Harriet

لاحظ أنه لا الموظفة المسماة ماري Mary ولا قسم الإنتاج Production يظهران في النتيجة.

يمكن أيضًا استخدام هذا لتحديد تكوين العلاقات composition of relations. على سبيل المثال، تكوين علاقة الموظف والقسم هو ارتباطهما كما هو موضح أعلاه، ويمكن إسقاطه على جميع السمات باستثناء السمة المشتركة DeptName. في نظرية الفئة، فإن الارتباط join هو على وجه التحديد منتج الألياف fiber product.

يمكن القول أن الارتباط الطبيعي هو أحد أهم المؤشرات لأنه النظير العلائقي لمؤشر AND المنطقي. لاحظ أنه إذا ظهر نفس المتغير في كل من المسندين المرتبطين بواسطة AND، فإن هذا المتغير يمثل نفس الشيء ويجب دائمًا استبدال كلا الظهورين بنفس القيمة (وهذا نتيجة لتساوي قوى AND المنطقية). على وجه الخصوص، يسمح الانضمام الطبيعي بدمج العلاقات المرتبطة بمفتاح خارجي. على سبيل المثال، في المثال أعلاه، من المحتمل أن يكون المفتاح الخارجي صالحًا من Employee.DeptName إلى Dept.DeptName ثم الانضمام الطبيعي للموظف والقسم يجمع بين جميع الموظفين وأقسامهم. يعمل هذا لأن المفتاح الخارجي يربط بين السمات التي تحمل نفس الاسم. إذا لم يكن هذا هو الحال كما هو الحال في المفتاح الخارجي من مدير القسم Dept.Manager إلى اسم الموظف Employee.Name. ثم يجب إعادة تسمية هذه الأعمدة قبل اتخاذ الانضمام الطبيعي. يُشار إلى مثل هذا الانضمام أحيانًا باسم الانضمام المتساوي equijoin.

بصورة أكثر رسمية، يمكن تعريف دلالات الارتباط الطبيعي على النحو التالي:حيث Fun(t) هو مسند predicate صحيح لعلاقة t (بالمعنى الرياضي) إذا كانت t دالة (أي أن t لا تقوم بتعيين أي سمة لقيم متعددة). من المعتاد أن يكون مطلوبًا أن يكون لدى R و S سمة مشتركة واحدة على الأقل، ولكن إذا جرى حذف هذا القيد، ولم يكن لدى R و S أي سمات مشتركة، فإن الارتباط الطبيعي يصبح هو حاصل الضرب الديكارتي تمامًا.

يمكن محاكاة الارتباط الطبيعي باستخدام بدائيات كوود Codd's primitives على النحو التالي. افترض أن c1،...، cm هي أسماء السمات المشتركة بين R و S، وأن r1،...، rn هي أسماء السمات الفريدة لـ R وأن s1،...، sk هي أسماء السمات الفريدة لـ S. علاوة على ذلك، افترض أن أسماء السمات x1،...، xm لا توجد في R ولا في S. في الخطوة الأولى، يمكن إعادة تسمية أسماء السمات المشتركة في S كالتالي:ثم نأخذ حاصل الضرب الديكارتي ونختار المجموعات التي سيتم ضمها (ارتباطها):وأخيرًا، نتخذ إسقاطًا للتخلص من السمات التي جرى إعادة تسميتها:

 θ -join و equijoin 
بالنظر إلى جداول السيارة و القارب التي تسرد قائمة نماذج من السيارات والقوارب وأسعار كل منها. لنفترض أن أحد العملاء يريد شراء سيارة وقارب، لكنه لا يريد إنفاق أموال على القارب أكثر من الإنفاق على السيارة. وبالتالي يكون θ-join (⋈θ) على المسند سعر السيارة ≥ سعر القارب تُنتج أزواج مُسطحة من الصفوف التي تُحقق ذلك المسند. عند استخدام شرط تكون فيه السمات متساوية، على سبيل المثال السعر، يمكن تحديد الشرط على النحو التالي السعر=السعر
أو بدلا من ذلك (السعر) نفسها.


 +           Car
   CarModel    CarPrice
   CarA   20,000
   CarB   30,000
   CarC   50,000

 +           Boat
   BoatModel    BoatPrice
   Boat1   10,000
   Boat2   40,000
   Boat3   60,000

 +  
   CarModel   CarPrice   BoatModel  BoatPrice
   CarA   20,000    Boat1  10,000
   CarB   30,000    Boat1  10,000
   CarC   50,000    Boat1  10,000
   CarC   50,000    Boat2  40,000

من أجل دمج العناصر من علاقتين حيث لا يكون شرط الدمج ببساطة هو مساواة السمات المشتركة، فمن المناسب أن يكون لدينا شكل أكثر عمومية لمؤشر الارتباط join operator، وهو θ-join (أو theta-join). حيث θ-join هو عامل ثنائي مكتوب على النحو التالي  أو  حيث أن a و b هما اسما سمة، وθ هو عامل علاقات ثنائية في المجموعة  }، و υ هو ثابت القيمة، و R و S هما علاقات. تتكون نتيجة هذه العملية من جميع مجموعات الثنائيات في R و S التي تلبي θ. يمكن تعريف نتيجة θ-join فقط إذا كانت رؤوس S و R منفصلة، أي لا تحتوي على سمة مشتركة.

وبالتالي فإن محاكاة هذه العملية في العمليات الأساسية تكون على النحو التالي :

 R ⋈ θ S = σ θ ( R × S )

في حالة أن العامل θ هو عامل المساواة (=)، فإن هذا الارتباط يسمى أيضًا ارتباطًا متساويًا equijoin.

ومع ذلك، لاحظ أن لغة الحاسوب التي تدعم مؤشر الارتباط والاختيار الطبيعيين لا تحتاج إلى θ-join أيضًا، حيث يمكن تحقيق ذلك عن طريق الاختيار من نتيجة الارتباط الطبيعي (الذي يتحول إلى حاصل ضرب ديكارت عندما لا توجد سمات مشتركة).

في تنفيذات SQL، يُطلق على الارتباط إلى مسند عادةً اسم الارتباط الداخلي، وتسمح الكلمة الأساسية on بتحديد المسند المستخدم لتصفية الصفوف. من المهم ملاحظة: إن تشكيل المنتج الديكارتي المسطح ثم تصفية الصفوف صحيح من الناحية المفاهيمية، ولكن التنفيذ سيستخدم هياكل بيانات أكثر تطوراً لتسريع استعلام الارتباط.

 شبه الارتباط 
إن شبه الارتباط الأيسر left semijoin (⋉ و⋊) هو ارتباط مشابه للارتباط الطبيعي ومكتوب على النحو التالي  حيث  و  هي علاقات.  النتيجة هي مجموعة كل الثنائيات في  حيث يوجد مجموعة في  حيث يتساويان في أسماء صفاتهما المشتركة. الفرق عن الارتباط الطبيعي هو أن الأعمدة الأخرى من  لا تظهر. على سبيل المثال، ضع في اعتبارك جداول الموظف والقِسم Employee و Dept وشبه الارتباط الخاص بهما:

 +           Employee
   Name    EmpId  DeptName
   Harry   3415   Finance
   Sally   2241   Sales
   George  3401   Finance
   Harriet  2202  Production

 +           Dept
   DeptName    Manager
   Sales   Sally  
   Production Harriet 

 +  Employee ⋉ Dept
   Name    EmpId   DeptName
   Sally   2241    Sales
   Harriet  2202  Production


بشكل أكثر رسمية، يمكن تعريف دلالات شبه الارتباط على النحو التالي:

حيث  كما هو الحال في تعريف الانضمام الطبيعي.

يمكن محاكاة شبه الارتباط باستخدام الارتباط الطبيعي على النحو التالي. إذا كانت  هي أسماء سمات ، فإن

نظرًا لأننا نستطيع محاكاة الارتباط الطبيعي باستخدام المؤشرات الأساسية، فمن الطبيعي أن ينطبق هذا أيضًا على الارتباط الجزئي.

في ورقة كوود عام 1970، يسمى الارتباط الجزئي التقييد restriction.

 الارتباط المضاد 
الارتباط المضاد (▷) (بالإنجليزية antijoin)، يُكتب على هيئة R ▷ S حيث R و S علاقات،  يشبه شبه الارتباط، ولكن نتيجة الارتباط المضاد هي فقط تلك الثنائيات في R التي لا يوجد لها ثنائي في S متساوٍ في أسماء السمات المشتركة بينهما.

على سبيل المثال، ضع في اعتبارك جداول الموظفين Employee والقسم Dept والارتباط المضاد antijoin الخاصة بهما:

 +           Employee
   Name    EmpId  DeptName
   Harry   3415   Finance
   Sally   2241   Sales
   George  3401   Finance
   Harriet  2202  Production

 +           Dept
   DeptName    Manager
   Sales   Sally
   Production  Harriet

 +  Employee  ▷ Dept
   Name    EmpId   DeptName
   Harry   3415   Finance
   George  3401   Finance

يمكن تعريف مضاد الارتباط antijoin رسميًا على النحو التالي:

 }

أو

 }

حيث  كما هو الحال في تعريف الارتباط الطبيعي.

يمكن أيضًا تعريف الارتباط المضاد باعتباره المكمل لشبيه الارتباط، على النحو التالي:ونظراً لهذا، يُطلق على مضاد الارتباط antijoin أحيانًا اسم anti-semijoin أي مضاد شبيه الارتباط، ويُكتب عامل مضاد الارتباط antijoin أحيانًا على هيئة رمز شبيه الارتباط semijoin مع شريط فوقه، بدلاً من ▷.

في الحالة التي يكون فيها للعلاقات نفس السمات (متوافقة مع الاتحاد)، فإن مضاد الارتباط antijoin هو نفسه الطرح.

 القسمة 
القسمة (÷) هي عملية ثنائية تُكتب على هيئة R ÷ S. ولا يجري تنفيذ القسمة بشكل مباشر في SQL. تتكون النتيجة من قيود العناصر الثنائية في R على أسماء السمات الفريدة لـ R، أي في رأس R ولكن ليس في رأس S، حيث تنص على أن جميع مجموعاتها مع العناصر الثنائية في S موجودة في R.

 مثال 


 + Completed
   Student    Task
   Fred   Database1
   Fred   Database2
   Fred  Compiler1
   Eugene   Database1
   Eugene   Compiler1
   Sarah   Database1
   Sarah   Database2

 + DBProject
   Task
   Database1
   Database2

 + Completed ÷ DBProject
   Student
   Fred
   Sarah

إذا كان جدول DBProject يحتوي على جميع مهام مشروع قاعدة البيانات، فإن نتيجة القسمة أعلاه تحتوي بالضبط على الطلاب الذين أكملوا كلتا المهمتين في مشروع قاعدة البيانات. بصورة أكثر رسمية، يمكن تعريف دلالات القسمة على النحو التالي:حيث { a1 ,..., an } هي مجموعة أسماء السمات الفريدة لـ R و t [ a1 ,..., an ] هو تقييد t لهذه المجموعة. من المعتاد أن يكون مطلوبًا أن تكون أسماء السمات في رأس S هي مجموعة فرعية من أسماء R لأنه بخلاف ذلك ستكون نتيجة العملية فارغة دائمًا.

يجري محاكاة عملية القسمة مع العمليات الأساسية على النحو التالي. نفترض أن a1 ،...، an هي أسماء السمات الفريدة لـ R وأن b1،...، bm هي أسماء السمات الخاصة بـ S. في الخطوة الأولى، نقوم بإسقاط R على أسماء السمات الفريدة الخاصة بها وإنشاء جميع التركيبات التي تحتوي على مجموعات في S :

 T := πa1,...,an(R) × S

في المثال السابق، سيمثل T جدولاً بحيث يجري دمج كل طالب (لأن الطالب هو المفتاح/السمة الفريدة للجدول المكتمل) مع كل مهمة معينة. على سبيل المثال، سيكون لدى Eugene صفين، Eugene → Database1 و Eugene → Database2 في T.

 على سبيل المثال: أولاً، لنفترض أن "مكتمل Completed" لديه سمة ثالثة تسمى "الدرجة grade". فهي غير مرغوب فيها هنا، لذلك يجب علينا إسقاطها دائمًا. في الواقع، في هذه الخطوة يمكننا إسقاط "Task" من R أيضًا؛ حيث تقوم عملية الضرب بإعادتها مرة أخرى.
 T := πStudent(R) × S  // هذا يعطينا كل تركيبة مرغوبة ممكنة، بما في ذلك تلك التي لا توجد بالفعل في R، واستبعاد التركيبات الأخرى (على سبيل المثال Fred | compiler1، وهي ليست تركيبة مرغوبة)

 + T
   Student    Task
   Fred   Database1
   Fred   Database2
   Eugene   Database1
   Eugene   Database2
   Sarah   Database1
   Sarah   Database2

في الخطوة التالية نطرح R من T

العلاقة :

 U := T − R

في U لدينا التركيبات الممكنة التي "كان من الممكن" أن تكون في R، ولكنها لم تكن كذلك.

 الامتدادات الشائعة 
في الممارسة العملية، يجري توسيع الجبر العلائقي التقليدي الموصوف أعلاه من خلال عمليات مختلفة مثل الارتباطات الخارجية والوظائف التجميعية وحتى الإغلاق المتعدي.

 الارتباطات الخارجية 

 الارتباط الخارجي الأسر 

 الارتباط الخارجي الأيمن 

 الارتباط الخارجي الكامل 

 عمليات حساب المجال 

 انظر أيضا 
 جداء ديكارتي
 Codd's theorem
 D4 (programming language) (an implementation of D)
 نمذجة البيانات
 قاعدة بيانات
 Datalog
 تشارلز ساندرز برس
 Object-role modeling
 Projection (mathematics)
 Projection (relational algebra)
 Projection (set theory)
 Relation
 Relation (database)
 Relation algebra
 Relation composition
 Relation construction

 قاعدة بيانات علائقية

 لغة الاستعلامات المهيكلة
 علاقة (منطق)
 Triadic relation
 Tuple relational calculus 

 ملحوظات 

 المراجع 

 قراءة إضافية 

  (For relationship with cylindric algebras).

 روابط خارجية 

 RAT Relational Algebra Translator Free software to convert relational algebra to SQL
 Lecture Videos: Relational Algebra Processing - An introduction to how database systems process relational algebra
 Lecture Notes: Relational Algebra – A quick tutorial to adapt SQL queries into relational algebra
 Relational – A graphic implementation of the relational algebra
 Query Optimization This paper is an introduction into the use of the relational algebra in optimizing queries, and includes numerous citations for more in-depth study.
 Relational Algebra System for Oracle and Microsoft SQL Server
 Pireal – An experimental educational tool for working with Relational Algebra
 DES – An educational tool for working with Relational Algebra and other formal languages
 RelaX - Relational Algebra Calculator (open-source software available as an online service without registration)
 RA: A Relational Algebra Interpreter
 Translating SQL to Relational Algebra

تصنيف:جبر