تسوية البيانات هي عملية منهجية تُستخدم في تصميم قواعد البيانات العلائقية لتنظيم البيانات بكفاءة، والقضاء على التكرار، وضمان سلامة البيانات. في برنامج مايكروسوفت أكسس (Microsoft Access) - الذي يستخدم محرك قواعد البيانات Microsoft Jet أو محرك قاعدة بيانات Microsoft Access Connectivity Engine - تتبع عملية التسوية نفس المبادئ المتبعة في أي نظام إدارة قواعد بيانات علائقية مثل نظام خادم لغة الاستعلام الهيكلية (SQL Server) أو نظام ماي إس كيو إل (MySQL). ومع ذلك، يوفر أكسس واجهة رسومية سهلة الاستخدام، مثل: عرض تصميم الجدول (Table Design View)، نافذة العلاقات (Relationships window)، ومصمم الاستعلامات (Query Designer)، لتنفيذ الجداول المسواة وفرض العلاقات يدوياً.
الهدف من التسوية هو تقسيم الجداول الكبيرة وغير المنظمة إلى جداول أصغر ومرتبطة مع اتباع قواعد محددة تسمى الأشكال الطبيعية (Normal Forms) (NF)
. يعتمد كل شكل طبيعي على الشكل الذي سبقه ويعالج نوعاً معيناً من مشكلات البيانات (مشكلات الإدخال، أو التحديث، أو الحذف).
لماذا نقوم بتسوية قاعدة البيانات في مايكروسوفت أكسس؟
تقليل تكرار البيانات: منع تخزين نفس المعلومات في أماكن متعددة.
تحسين سلامة البيانات: ضمان أن عمليات التحديث أو الحذف أو الإدخال لا تسبب تناقضات.
تبسيط الصيانة: تسهيل عمليات الاستعلام والتحديث وتوسيع قاعدة البيانات.
تمكين علاقات أفضل: دعم علاقات "واحد إلى متعدد" و "متعدد إلى متعدد" عبر المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys).
تحسين الأداء: على الرغم من أن التسوية الزائدة قد تؤدي أحياناً إلى إبطاء الاستعلامات (بسبب عمليات الربط)، إلا أنها موصى بها عموماً لمعظم تطبيقات أكسس.
ملاحظة: لا يحتوي أكسس على زر "تسوية" تلقائي. أنت تقوم بتصميم الجداول يدوياً في عرض التصميم وإنشاء العلاقات في نافذة أدوات قاعدة البيانات ← علاقات. ابدأ دائماً بتصميم غير مسوى ثم طبق الأشكال الطبيعية تدريجياً.
الأشكال الطبيعية (خطوة بخطوة مع الأمثلة)
سنستخدم سيناريو عملي من واقع الأعمال: إدارة تسجيل الطلاب في الدورات التدريبية. يبدأ هذا المثال بشكل غير مسوى تماماً ثم يتقدم عبر كل شكل طبيعي.
النموذج غير المسوى (نقطة البداية)
تخيل جدولاً واحداً يسمى StudentCourses يخزن كل شيء في مكان واحد:
معرف الطالب | اسم الطالب | عنوان الطالب | رمز الدورة | اسم الدورة | المحاضر | الدرجة | الفصل الدراسي |
|---|---|---|---|---|---|---|---|
101 | أليس جونسون | 123 شارع الرئيسي، نيويورك | CS101 | مقدمة في البرمجة | د. سميث | A | خريف 2025 |
101 | أليس جونسون | 123 شارع الرئيسي، نيويورك | MATH201 | حساب التفاضل | أ. براون | B | ربيع 2026 |
102 | بوب لي | 456 شارع البلوط، كاليفورنيا | CS101 | مقدمة في البرمجة | د. سميث | -A | خريف 2025 |
المشكلات:
مجموعات متكررة (دورات متعددة لكل صف).
بيانات مكررة (اسم الطالب وعنوانه يتكرران مع كل دورة).
مشكلات التحديث (تغيير عنوان أليس يتطلب تحديث صفوف متعددة).
مشكلات الإدخال (لا يمكن إضافة دورة جديدة دون وجود طالب).
مشكلات الحذف (حذف طالب يؤدي إلى حذف معلومات الدورة التدريبية).
الشكل الطبيعي الأول(1NF)
القواعد:
يجب أن تحتوي كل خلية على قيمة واحدة فقط (ذرية).
عدم وجود مجموعات متكررة أو حقول متعددة القيم.
يجب أن يكون كل سجل قابلاً للتمييز بشكل فريد (إدخال مفتاح أساسي إذا لزم الأمر).
يجب أن يحتوي كل جدول على عمود فريد أو مجموعة أعمدة كمفتاح أساسي.
الخطوات خطوة بخطوة في مايكروسوفت أكسس:
افتح قاعدة البيانات ← إنشاء ← تصميم الجدول.
أنشئ جدولاً جديداً يسمى Enrollments.
حدد الأعمدة بقيم ذرية (فردية) فقط.
قم بتعيين مفتاح أساسي مركب (معرف الطالب + رمز الدورة) لتمييز كل عملية تسجيل بشكل فريد.
الجدول المسوى (1NF):
معرف الطالب (مفتاح أساسي) | اسم الطالب | عنوان الطالب | رمز الدورة (مفتاح أساسي) | اسم الدورة | المحاضر | الدرجة | الفصل الدراسي |
|---|---|---|---|---|---|---|---|
101 | أليس جونسون | 123 شارع الرئيسي، نيويورك | CS101 | مقدمة في البرمجة | د. سميث | A | خريف 2025 |
101 | أليس جونسون | 123 شارع الرئيسي، نيويورك | MATH201 | حساب التفاضل | أ. براون | B | ربيع 2026 |
102 | بوب لي | 456 شارع البلوط، كاليفورنيا | CS101 | مقدمة في البرمجة | د. سميث | -A | خريف 2025 |
نصيحة أكسس: في عرض التصميم، حدد عمودي "معرف الطالب" و"رمز الدورة" معاً، ثم انقر فوق زر المفتاح الأساسي (أيقونة المفتاح).
الشكل الطبيعي الثاني(2NF)
القواعد (يجب أن يكون الجدول في الشكل الطبيعي الأول بالفعل):
عدم وجود تبعية جزئية: يجب أن تعتمد الحقول غير المفتاحية على المفتاح الأساسي بأكمله، وليس على جزء منه فقط.
الخطوات خطوة بخطوة في مايكروسوفت أكسس:
قم بتقسيم جدول الشكل الطبيعي الأول إلى ثلاثة جداول منفصلة:
الطلاب (البيانات الخاصة بالطالب).
الدورات (البيانات الخاصة بالدورة).
التسجيلات (الرابط بين الطلاب والدورات + البيانات الخاصة بعملية التسجيل).
إنشاء العلاقات باستخدام المفاتيح الأجنبية.
الجداول الناتجة:
الجدول 1: الطلاب
معرف الطالب (مفتاح أساسي) | اسم الطالب | عنوان الطالب |
|---|---|---|
101 | أليس جونسون | 123 شارع الرئيسي، نيويورك |
102 | بوب لي | 456 شارع البلوط، كاليفورنيا |
الجدول 2: الدورات
رمز الدورة (مفتاح أساسي) | اسم الدورة | المحاضر |
|---|---|---|
CS101 | مقدمة في البرمجة | د. سميث |
MATH201 | حساب التفاضل | أ. براون |
الجدول 3: التسجيلات
معرف الطالب (مفتاح أجنبي) | رمز الدورة (مفتاح أجنبي) | الدرجة | الفصل الدراسي |
|---|---|---|---|
101 | CS101 | A | خريف 2025 |
101 | MATH201 | B | ربيع 2026 |
102 | CS101 | -A | خريف 2025 |
خطوات التنفيذ في أكسس:
أنشئ كل جدول في عرض التصميم.
قم بتعيين المفاتيح الأساسية كما هو موضح.
اذهب إلى أدوات قاعدة البيانات ← علاقات.
اسحب "معرف الطالب" من جدول الطلاب إلى "معرف الطالب" في جدول التسجيلات ← فرض التكامل المرجعي (علاقة واحد إلى متعدد).
افعل الشيء نفسه لرمز الدورة (من جدول الدورات إلى جدول التسجيلات).
الشكل الطبيعي الثالث(3NF)
القواعد (يجب أن يكون الجدول في الشكل الطبيعي الثاني بالفعل):
عدم وجود تبعية انتقالية: يجب أن تعتمد الحقول غير المفتاحية على المفتاح الأساسي فقط، وليس على حقول أخرى غير مفتاحية.
الخطوات خطوة بخطوة في مايكروسوفت أكسس:
في جدول الدورات أعلاه، المحاضر يعتمد على رمز الدورة، وهذا جيد. ومع ذلك، إذا كانت لدينا تفاصيل عن المحاضر (مثل مكتب المحاضر)، فستكون تبعية انتقالية. ولإصلاح ذلك، أنشئ جدولاً منفصلاً للمحاضرين.
جدول: المحاضرون (جدول جديد)
معرف المحاضر (مفتاح أساسي) | اسم المحاضر | المكتب |
|---|---|---|
1 | د. سميث | غرفة 101 |
2 | أ. براون | غرفة 205 |
جدول الدورات المحدث (الشكل الطبيعي الثالث):
رمز الدورة (مفتاح أساسي) | اسم الدورة | معرف المحاضر (مفتاح أجنبي) |
|---|---|---|
CS101 | مقدمة في البرمجة | 1 |
MATH201 | حساب التفاضل | 2 |
(تبقى جداول التسجيلات والطلاب كما هي). |
شكل بويس-كود الطبيعي (BCNF)
القواعد (نسخة أكثر صرامة من الشكل الطبيعي الثالث):
كل محدد (عمود يحدد عموداً آخر) يجب أن يكون مفتاحاً مرشحاً.
متى يطبق: نادراً في قواعد بيانات أكسس البسيطة، ولكنه مطلوب إذا كان هناك تداخل في المفاتيح المرشحة.
الشكل الطبيعي الرابع(4NF) والشكل الطبيعي الخامس(5NF)
هذه الأشكال متقدمة ونادراً ما تكون مطلوبة لمعظم تطبيقات مايكروسوفت أكسس:
الشكل الطبيعي الرابع: يقضي على التبعيات متعددة القيم (على سبيل المثال، يمكن للطالب أن يكون لديه مهارات متعددة وهوايات متعددة، مخزنة بشكل مستقل).
الشكل الطبيعي الخامس: يقضي على تبعيات الربط (نادر جداً).
جدول ملخص سريع للأشكال الطبيعية
الشكل الطبيعي | المتطلب الأساسي | المشكلة التي يحلها |
|---|---|---|
1NF | قيم ذرية، لا مجموعات متكررة | الخلايا متعددة القيم |
2NF | اعتماد وظيفي كامل على المفتاح الأساسي | التبعية الجزئية |
3NF | لا توجد تبعية انتقالية | التبعيات غير المباشرة |
BCNF | كل محدد هو مفتاح مرشح | المفاتيح المتداخلة |
4NF/5NF | لا توجد تبعيات متعددة القيم أو تبعيات ربط | التكرار المتقدم |
أفضل الممارسات لتسوية البيانات في مايكروسوفت أكسس
ابدأ دائماً في عرض التصميم وحدد مفاتيح أساسية واضحة.
استخدم نافذة العلاقات لتصور وفرض التكامل المرجعي.
أنشئ استعلامات (خاصة استعلامات الربط) لإعادة بناء عرض البيانات الأصلي للمستخدمين.
استخدم النماذج والتقارير بناءً على استعلامات مسواة حتى لا يرى المستخدمون النهائيون الجداول المنقسمة أبداً.
وثق تصميمك باستخدام قاموس بيانات (جدول منفصل يسرد كل حقل والغرض منه).
متى يتم تقليل التسوية قليلاً (Denormalization):
لقواعد بيانات أكسس الصغيرة جداً التي يستخدمها مستخدمون غير تقنيين.
لتحسين أداء الاستعلام في التقارير الثقيلة القائمة على القراءة (إضافة حقل محسوب أو تكرار كمية صغيرة من البيانات).
إن تسوية البيانات في مايكروسوفت أكسس تحول الهيكل العشوائي الشبيه بجداول البيانات إلى قاعدة بيانات علائقية احترافية وقابلة للتطوير. باتباع الخطوات المذكورة أعلاه، ستكون قاعدة بياناتك قوية، وسهلة الصيانة، وخالية من أخطاء البيانات الشائعة.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |





