كيف نطبق 1NF على بيانات تحتوي على عدة أرقام هاتف؟

سهلقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

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

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

مثال

CREATE TABLE customers (
  id INT PRIMARY KEY
);
CREATE TABLE customer_phones (
  customer_id INT,
  phone VARCHAR(30),
  PRIMARY KEY (customer_id, phone),
  FOREIGN KEY (customer_id) REFERENCES customers(id)
);

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

باختصار: عندما تحتاج إلى التعامل مع كل هاتف مستقلًا، خزنه في صف تابع بدل قائمة داخل عمود.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

يخزن عمود phones عدة أرقام مفصولة بفواصل، ويحتاج التطبيق إلى البحث عن كل رقم مستقلًا. أي تعديل أنسب لتطبيق 1NF؟