📚 CS340 دليل رموز قواعد البيانات

مرجع كامل للرموز والاصطلاحات من شرائح المادة الدراسية

🔷 رموز مخطط ER

المرجع: شريحة 02_cs340.pdf - الشريحة 23

المكونات الأساسية لـ ER

كيان
مستطيل
يمثل نوع الكيان (Entity Type)
يُستخدم لـ: الكيانات المستقلة (Regular/Strong entities)
أمثلة من الشرائح:
موظف، قسم، مشروع، طالب، مقرر
شريحة 02 - التصميم المفاهيمي
صفة
بيضاوي
يمثل صفة (Attribute)
يُستخدم لـ: الصفات البسيطة والذرية
أمثلة:
الاسم، رقم الهوية، الراتب، العنوان، العمر
شريحة 02 - مكونات ER
علاقة
معين
يمثل نوع العلاقة (Relationship Type)
يُستخدم لـ: الارتباطات بين الكيانات
أمثلة:
يعمل_في، يدير، يعمل_على، يسجل
شريحة 02 - مكونات ER
ضعيف
مستطيل مزدوج
يمثل كيانًا ضعيفًا (Weak Entity Type)
يُستخدم لـ: الكيانات التي تعتمد على كيان آخر لوجودها
مثال من الشرائح:
معال (يعتمد على موظف)
شريحة 02 - الكيانات الضعيفة (شريحة 45-46)
تحديد
معين مزدوج
يمثل علاقة محددة (Identifying Relationship)
يُستخدم لـ: العلاقات التي تساعد في تعريف الكيانات الضعيفة
مثال:
معال_لـ (علاقة محددة لكيان معال)
شريحة 02 - الكيانات الضعيفة (شريحة 46)
متعدد
بيضاوي مزدوج
يمثل صفة متعددة القيم (Multivalued Attribute)
يُستخدم لـ: الصفات التي يمكن أن تأخذ قيمًا متعددة
أمثلة من الشرائح:
{مواقع} لقسم، {شهادات} لشخص، {ألوان} لسيارة
شريحة 02 - أنواع الصفات (شريحة 17)
مشتقة
بيضاوي متقطع
يمثل صفة مشتقة (Derived Attribute)
يُستخدم لـ: الصفات التي تُحسب من صفات أخرى
مثال من الشرائح:
العمر (مشتق من تاريخ الميلاد)، عدد_الموظفين (يحسب بعد)
شريحة 02 - أنواع الصفات (شريحة 18)
مفتاح
صفة مسطرة تحتها
تمثل صفة مفتاحية (Key Attribute)
يُستخدم لـ: الصفات التي تعرّف الكيان بشكل فريد
أمثلة:
رقم_الهوية (موظف)، رقم_القسم (قسم)، رقم_الطالب
شريحة 02 - المفاتيح (شريحة 20-21)
مفتاح_جزئي
صفة مسطرة تحتها متقطعة
تمثل مفتاحًا جزئيًا (Partial Key) للكيانات الضعيفة
يُستخدم لـ: مميز الكيان الضعيف (جزء من تعريفه)
مثال:
اسم_المعال في كيان معال
شريحة 02 - الكيانات الضعيفة (شريحة 45)

قيود المشاركة والسعة (Participation & Cardinality Constraints)

المرجع: شريحة 02 - شرائح 36-43, 55-57
―――
خط مفرد
يمثل مشاركة جزئية (Partial Participation)
يُستخدم عندما: ليس كل الكيانات يجب أن تشارك (min = 0)
مثال:
بعض المقررات قد لا يكون لها تسجيلات
شريحة 02 - المشاركة (شريحة 39-40)
═══
خط مزدوج
يمثل مشاركة كلية (Total Participation)
يُستخدم عندما: كل كيان يجب أن يشارك (min = 1)
مثال من الشرائح:
كل موظف يجب أن يعمل_في قسم
شريحة 02 - المشاركة (شريحة 39-40)
١
السعة: ١ (واحد)
كيان يشارك في علاقة واحدة على الأكثر
يُستخدم لـ: علاقات واحد-لواحد أو واحد-لمتعدد
مثال:
موظف―١―يدير―١―قسم
شريحة 02 - السعة (شريحة 35-38)
ن / م
السعة: ن أو م (متعدد)
كيان يمكن أن يشارك في علاقات متعددة
يُستخدم لـ: علاقات واحد-لمتعدد أو متعدد-لمتعدد
مثال من الشرائح:
موظف―ن―يعمل_على―م―مشروع
شريحة 02 - السعة (شريحة 35-38)
(min, max)
ترميز min-max
يحدد الحد الأدنى والأقصى للمشاركة
(0,1) = اختياري واحد
(1,1) = إجباري واحد
(0,N) = اختياري متعدد
(1,N) = إجباري متعدد
مثال من الشرائح:
موظف (1,1)―يعمل_في―(1,N) قسم
شريحة 02 - ترميز min-max (شريحة 55-57)

أنواع العلاقات حسب السعة

النوع الترميز الوصف مثال من الشرائح
١:١ ١ ― ١ كيان واحد في أ يرتبط بكيان واحد في ب موظف يدير قسم
١:ن ١ ― ن كيان واحد في أ يرتبط بعدة كيانات في ب قسم لديه عدة موظفين
ن:١ ن ― ١ عدة كيانات في أ ترتبط بكيان واحد في ب موظف يعمل_في قسم
م:ن م ― ن عدة كيانات في أ ترتبط بعدة كيانات في ب موظف يعمل_على مشروع
شريحة 02 - سعة العلاقات (شرائح 35-38)

🔷 رموز EER (مخطط ER المحسن)

المرجع: شريحة 03_cs340_eer.pdf

مكونات التخصص/التعميم

رمز المجموعة الجزئية (سهم على شكل U)
يشير إلى علاقة IS-A من النوع الفرعي إلى النوع الرئيسي
يشير من النوع الفرعي للأعلى نحو الدائرة المتصلة بالنوع الرئيسي
مثال:
سكرتير ⊂ موظف (سكرتير هو موظف)
شريحة 03 - الرموز (شريحة 13)
دائرة
نقطة وصل تربط النوع الرئيسي بالأنواع الفرعية
النوع الرئيسي يتصل بالدائرة؛ الدائرة تتصل بكل الأنواع الفرعية
شريحة 03 - الرموز الأساسية (شريحة 13)
d
d (قيد التفرقة - Disjoint)
الكيان يمكن أن يكون عضوًا في نوع فرعي واحد فقط
نضع 'd' داخل الدائرة أو بالقرب منها
مثال من الشرائح:
موظف → {سكرتير, فني, مهندس} مع قيد d
شريحة 03 - قيد التفرقة (شريحة 23)
o
o (قيد التداخل - Overlapping)
الكيان يمكن أن يكون عضوًا في أنواع فرعية متعددة في نفس الوقت
نضع 'o' داخل الدائرة أو بالقرب منها
مثال من الشرائح:
جزء → {جزء_مصنع, جزء_مشترى} مع قيد o
شريحة 03 - قيد التداخل (شريحة 23)
――
خط مفرد (من النوع الرئيسي إلى الدائرة)
تخصص جزئي - ليس كل الكيانات تحتاج أن تكون في نوع فرعي
بعض كيانات النوع الرئيسي قد لا تنتمي لأي نوع فرعي
شريحة 03 - الاكتمال (شريحة 24)
══
خط مزدوج (من النوع الرئيسي إلى الدائرة)
تخصص كلي - كل كيان يجب أن يكون في نوع فرعي واحد على الأقل
كل كيان من النوع الرئيسي يجب أن ينتمي إلى نوع فرعي واحد على الأقل
مثال من الشرائح:
كل مركبة يجب أن تكون إما سيارة أو شاحنة (كلي)
شريحة 03 - الاكتمال (شريحة 24)

تجميعات قيود التخصص

التفرقة الاكتمال الترميز المعنى
متفرقة (d) كلي d مع خط مزدوج كل كيان في نوع فرعي واحد بالضبط
متفرقة (d) جزئي d مع خط مفرد كيان في نوع فرعي واحد على الأكثر (أو لا شيء)
متقاطعة (o) كلي o مع خط مزدوج كل كيان في نوع فرعي واحد أو أكثر
متقاطعة (o) جزئي o مع خط مفرد كيان يمكن أن يكون في عدة أو بدون أنواع فرعية
شريحة 03 - القيود (شريحة 25)

أنواع الفئات/الاتحاد (Category/Union Types)

رمز الاتحاد (في دائرة)
يمثل فئة (نوع اتحادي)
النوع الفرعي هو مجموعة جزئية من اتحاد أنواع رئيسية مختلفة بمفاتيح مختلفة
مثال من الشرائح:
مالك ∪ {شخص, بنك, شركة} - المالك يمكن أن يكون شخصًا أو بنكًا أو شركة
شريحة 03 - الفئات (شرائح 36-41)
――
خط مفرد لدائرة الاتحاد
فئة جزئية - مجموعة جزئية من الاتحاد
الفئة تحتوي على مجموعة جزئية من اتحاد جميع كيانات الأنواع الرئيسية
شريحة 03 - اكتمال الفئة (شريحة 40)
══
خط مزدوج لدائرة الاتحاد
فئة كلية - تحتوي على كل الاتحاد
الفئة تحتوي على الاتحاد الكامل لجميع كيانات الأنواع الرئيسية
شريحة 03 - اكتمال الفئة (شريحة 40)

🔷 رموز النموذج العلائقي

المرجع: شريحة 04_cs340_relational-model.pdf

ترميز المخطط

R(A₁, A₂, ..., Aₙ)
مخطط العلاقة
R = اسم العلاقة، A₁...Aₙ = الصفات
مثال من الشرائح:
موظف(الاسم_الأول, الاسم_الأخير, رقم_الهوية, تاريخ_الميلاد, العنوان, الراتب, رقم_القسم)
شريحة 04 - تعريفات رسمية (شريحة 16)
صفة
صفة مسطرة تحتها
تشير إلى المفتاح الأساسي
مثال:
موظف(رقم_الهوية, الاسم, الراتب)
شريحة 04 - المفاتيح (شريحة 29-32)
FK
مفتاح خارجي
صفة تشير إلى المفتاح الأساسي لعلاقة أخرى
غالبًا ما يشار إليه بسهم أو بعلامة FK في المخططات
مثال من الشرائح:
موظف(رقم_الهوية, رقم_القسم) حيث رقم_القسم يشير إلى قسم(رقم_القسم)
شريحة 04 - التكامل المرجعي (شرائح 40-43)
سهم (في المخططات)
يظهر اتجاه المرجع للمفتاح الخارجي
يشير من المفتاح الخارجي إلى المفتاح الأساسي المشار إليه
شريحة 04 - مخطط المخطط العلائقي (شريحة 45)

ترميز الصفوف (Tuples)

t[A]
مكون الصف
قيمة الصفة A في الصف t
مثال:
t[رقم_الهوية] يشير إلى قيمة رقم الهوية في الصف t
شريحة 04 - الترميز (شريحة 22)
t[A₁, A₂, ..., Aₙ]
صف فرعي
قيم عدة صفات في الصف t
شريحة 04 - الترميز (شريحة 22)

🔷 رموز التبعيات الوظيفية

المرجع: شريحة 09_cs340_normalization.pdf

رموز التبعيات الوظيفية

X → Y
تبعية وظيفية
X يحدد وظيفيًا Y
إذا كان صفان لهما نفس قيمة X، يجب أن يكون لهما نفس قيمة Y
أمثلة من الشرائح:
رقم_الهوية → اسم_الموظف
رقم_المشروع → {اسم_المشروع, موقع_المشروع}
{رقم_الهوية, رقم_المشروع} → عدد_الساعات
شريحة 09 - تعريف التبعية الوظيفية (شرائح 23-27)
X⁺
الغلق لـ X
مجموعة كل الصفات التي يحددها X
يُستخدم لإيجاد جميع الصفات المعتمدة وظيفيًا على X
شريحة 09 - خوارزمية الغلق (شرائح 83-84)
F⁺
غلق F
مجموعة كل التبعيات الوظيفية التي تُستنتج من F
شريحة 09 - خوارزمية الغلق (شريحة 80)

أنواع التبعيات

تبعية وظيفية كاملة
Y تعتمد على كل X (إزالة أي صفة من X يقطع التبعية)
مثال من الشرائح:
{رقم_الهوية, رقم_المشروع} → عدد_الساعات هي تبعية كاملة
(لا توجد تبعية: رقم_الهوية → عدد_الساعات ولا رقم_المشروع → عدد_الساعات)
شريحة 09 - تعريف 2NF (شريحة 52)
تبعية جزئية
Y تعتمد على جزء من المفتاح المركب X
مثال من الشرائح:
{رقم_الهوية, رقم_المشروع} → اسم_الموظف هي تبعية جزئية
(لأن رقم_الهوية → اسم_الموظف أيضًا)
تنتهك 2NF
شريحة 09 - 2NF (شريحة 52)
تبعية متعدية
X → Y و Y → Z (حيث Y ليس مفتاحًا مرشحًا)
مثال من الشرائح:
رقم_الهوية → رقم_القسم و رقم_القسم → رقم_مدير_القسم
إذن رقم_الهوية → رقم_مدير_القسم هي تبعية متعدية
تنتهك 3NF
شريحة 09 - 3NF (شريحة 55)

مسلمات أرمسترونج

شريحة 09 - قواعد الاستنتاج (شريحة 81)
القاعدة الترميز المعنى
الانعكاسية إذا كان Y ⊆ X، فإن X → Y تبعية تافهة
الإضافة إذا كان X → Y، فإن XZ → YZ نضيف نفس الصفات للطرفين
التعدية إذا كان X → Y و Y → Z، فإن X → Z تسلسل التبعيات
الاتحاد إذا كان X → Y و X → Z، فإن X → YZ مشتق من المسلمات
التفكيك إذا كان X → YZ، فإن X → Y و X → Z مشتق من المسلمات

🔷 الصور النمطية (Normal Forms)

المرجع: شريحة 09_cs340_normalization.pdf
الصورة النمطية المتطلبات ما تمنعه مرجع الشريحة
1NF كل الصفات ذرية (لا صفات مركبة أو متعددة القيم) المجموعات المتكررة، العلاقات المتداخلة شريحة 09 - شرائح 46-51
2NF 1NF + لا تبعيات جزئية (الصفات غير الرئيسية تعتمد كليًا على كل المفتاح) التبعيات الجزئية على المفاتيح المركبة شريحة 09 - شرائح 52-54
3NF 2NF + لا تبعيات متعدية (الصفات غير الرئيسية لا تعتمد على صفات غير رئيسية أخرى) التبعيات المتعدية شريحة 09 - شرائح 55-57
BCNF 3NF + كل محدد (Determinant) هو مفتاح مرشح أي تبعية حيث المحدد ليس مفتاحًا فائقًا شريحة 09 - شرائح 68-78

🔷 عوامل تشغيل وكلمات مفتاحية في SQL

المرجع: شرائح 06 و 07 (SQL الأساسي والمتقدم)

عوامل المقارنة

شريحة 06 - الاختيار (شريحة 18)
العامل المعنى مثال من الشرائح
= يساوي WHERE major = "CS"
<> لا يساوي WHERE status <> 'active'
< أصغر من WHERE age < 25
> أكبر من WHERE salary > 30000
<= أصغر من أو يساوي WHERE quantity <= 10
>= أكبر من أو يساوي WHERE rating >= 4

العوامل المنطقية

شريحة 06 - الاختيار (شريحة 18)
AND
كلا الشرطين يجب أن يكونا TRUE
WHERE Fname='John' AND Lname='Smith'
شريحة 06 - استعلام مثال (شريحة 9)
OR
شرط واحد على الأقل يجب أن يكون TRUE
WHERE cus_areacode='615' OR cus_areacode='713'
شريحة 07 - مثال (اختبار رئيسي 2)
NOT
ينفي الشرط
WHERE NOT status = 'inactive'

مطابقة الأنماط

شريحة 06 - مطابقة الأنماط (شريحة 32)
LIKE
مطابقة الأنماط باستخدام أحرف البدل
WHERE Address LIKE '%Houston,TX%'
شريحة 06 - شريحة 32
%
يطابق أي عدد من المحارف (صفر أو أكثر)
أمثلة:
'A%' - يبدأ بـ A
'%son' - ينتهي بـ son
'%data%' - يحتوي على data
شريحة 06 - شريحة 32
_
الشرطة السفلية (حرف بدل لمحرف واحد)
يطابق محرفًا واحدًا بالضبط
مثال:
'CS___' - CS متبوعًا بـ 3 محارف بالضبط
شريحة 06 - شريحة 32

عوامل النطاق والمجموعات

BETWEEN
قيمة ضمن نطاق (شامل)
WHERE Salary BETWEEN 30000 AND 40000
شريحة 06 - عامل BETWEEN (شريحة 35)
IN
القيمة تطابق أيًا من القيم في قائمة
WHERE Pno IN (1, 2, 3)
شريحة 06 - مثال (شريحة 17); شريحة 07 - استعلامات متداخلة (شريحة 12)
NOT IN
القيمة لا تطابق أيًا من القيم في القائمة
شريحة 07 - تمارين استعلامات متداخلة (شريحة 14)

التعامل مع NULL

شريحة 07 - قيم NULL (شرائح 4-7)
IS NULL
يختبر إذا كانت القيمة NULL
WHERE Super_ssn IS NULL
شريحة 07 - NULL في SQL (شريحة 7)
IS NOT NULL
يختبر إذا كانت القيمة ليست NULL
WHERE email IS NOT NULL
شريحة 07 - التعامل مع NULL
مهم: لا تستخدم أبدًا = NULL أو <> NULL. استخدم دائمًا IS NULL أو IS NOT NULL.

عوامل الاستعلامات المتداخلة

شريحة 07 - استعلامات متداخلة (شرائح 8-25)
EXISTS
TRUE إذا أرجع الاستعلام الداخلي صفًا واحدًا على الأقل
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE Ssn = Essn)
شريحة 07 - EXISTS (شريحة 23)
NOT EXISTS
TRUE إذا لم يُرجع الاستعلام الداخلي أي صفوف
WHERE NOT EXISTS (SELECT *
FROM DEPENDENT
WHERE Ssn = Essn)
شريحة 07 - NOT EXISTS (شريحة 24)
= ANY / IN
يساوي قيمة واحدة على الأقل في المجموعة
= ANY يكافئ IN
WHERE rating > ANY
(SELECT rating FROM Sailors
WHERE name='dustin')
شريحة 07 - عوامل المقارنة (شريحة 13)
> ALL
أكبر من جميع القيم في المجموعة
WHERE Salary > ALL
(SELECT Salary FROM EMPLOYEE
WHERE Dno=5)
شريحة 07 - عامل ALL (شريحة 13)
UNIQUE
TRUE إذا لم توجد صفوف مكررة في نتيجة الاستعلام الداخلي
شريحة 07 - EXISTS و UNIQUE (شريحة 23)

دوال التجميع

شريحة 07 - التجميع (شرائح 40-48)
COUNT(*)
عدد الصفوف
SELECT COUNT(*) FROM EMPLOYEE
شريحة 07 - التجميع (شريحة 44)
COUNT(DISTINCT A)
عدد القيم الفريدة في العمود A
SELECT COUNT(DISTINCT department)
FROM Student
شريحة 07 - التجميع (شريحة 43)
SUM(A)
مجموع القيم في العمود A
SELECT SUM(Salary) FROM EMPLOYEE
شريحة 07 - التجميع (شريحة 45)
AVG(A)
متوسط القيم في العمود A
SELECT AVG(gpa) FROM Student
شريحة 07 - التجميع (شريحة 41)
MAX(A)
أكبر قيمة في العمود A
SELECT MAX(gpa) FROM Student
شريحة 07 - التجميع (شريحة 42)
MIN(A)
أصغر قيمة في العمود A
SELECT MIN(gpa) FROM Student
شريحة 07 - التجميع (شريحة 42)

التجميع والفلترة

GROUP BY
تجميع الصفوف حسب قيم الأعمدة
يُستخدم مع دوال التجميع
SELECT Dno, COUNT(*)
FROM EMPLOYEE
GROUP BY Dno
شريحة 07 - GROUP BY (شريحة 49-51)
HAVING
فلترة المجموعات (يُستخدم بعد GROUP BY)
WHERE يفلتر الصفوف، HAVING يفلتر المجموعات
GROUP BY Pnumber, Pname
HAVING COUNT(*) > 2
شريحة 07 - HAVING (شريحة 53)
ORDER BY
ترتيب النتائج حسب عمود أو أكثر
ORDER BY D.Dname, E.Lname
شريحة 06 - ORDER BY (شريحة 36-37)
ASC / DESC
ترتيب تصاعدي أو تنازلي
ORDER BY age ASC
ORDER BY rating DESC
شريحة 06 - ORDER BY (شريحة 37)

عمليات المجموعات

شريحة 06 - عمليات المجموعات (شرائح 38-40)
UNION
يدمج النتائج، ويزيل التكرارات
SELECT name FROM students
UNION
SELECT name FROM professors
شريحة 06 - UNION (شريحة 38)
UNION ALL
يدمج النتائج، ويبقي التكرارات
شريحة 06 - UNION ALL (شريحة 39)
INTERSECT
يرجع الصفوف المشتركة فقط
شريحة 06 - INTERSECT (شريحة 40)
EXCEPT / MINUS
يرجع الصفوف من الاستعلام الأول غير الموجودة في الثاني
شريحة 06 - EXCEPT/MINUS (شريحة 40)

أنواع الربط (JOINs)

شريحة 07 - الربط (شرائح 26-38)
INNER JOIN
يرجع فقط الصفوف المتطابقة من كلا الجدولين
FROM A INNER JOIN B
ON A.id = B.id
شريحة 07 - INNER JOIN (شريحة 33)
LEFT OUTER JOIN
كل الصفوف من الجدول الأيسر + المطابقة من الأيمن
FROM Course
LEFT OUTER JOIN Faculty
ON Course.Lecturer_id = Faculty.id
شريحة 07 - LEFT JOIN (شريحة 29)
RIGHT OUTER JOIN
كل الصفوف من الجدول الأيمن + المطابقة من الأيسر
شريحة 07 - RIGHT JOIN (شريحة 30)
FULL OUTER JOIN
كل الصفوف من كلا الجدولين
شريحة 07 - FULL JOIN (شريحة 31)
NATURAL JOIN
يربط على كل الأعمدة المشتركة تلقائيًا
FROM EMPLOYEE
NATURAL JOIN DEPARTMENT
شريحة 07 - NATURAL JOIN (شريحة 32)
CROSS JOIN
الجداء الديكارتي (كل التركيبات)
شريحة 07 - CROSS JOIN (شريحة 36)

🔷 دليل مرجعي سريع

تحديد أنواع العلاقات

كيفية التعرف على أنواع العلاقات:
  • ١:١ - كلا الجانبين مُرقم بـ ١ أو (0,1) أو (1,1)
  • ١:ن - جانب واحد لديه 1 أو (0,1)/(1,1)، والآخر لديه ن أو (0,N)/(1,N)
  • م:ن - كلا الجانبين لديه ن/م أو (0,N)/(1,N)
شريحة 02 - قيود السعة

أخطاء شائعة يجب تجنبها

تجنب هذه الأخطاء:
  • استخدام = أو <> مع NULL (استخدم IS NULL / IS NOT NULL)
  • نسيان DISTINCT عند إزالة التكرارات
  • استخدام WHERE لشروط التجميع (استخدم HAVING)
  • عدم تحديد شروط JOIN (يُنتج جداءً ديكارتيًا)
  • خلط الأعمدة المُجمعة وغير المُجمعة بدون GROUP BY

ترتيب تنفيذ استعلام SQL

الترتيب المفاهيمي للتنفيذ:
  1. FROM - تحديد الجداول
  2. WHERE - فلترة الصفوف
  3. GROUP BY - تجميع الصفوف
  4. HAVING - فلترة المجموعات
  5. SELECT - اختيار الأعمدة
  6. ORDER BY - ترتيب النتيجة
شريحة 07 - ملخص (شريحة 54)