اختيار المفاتيح والأنواع
اختر بين مفاتيح BIGSERIAL وUUID الأساسية، وقرّر بين TEXT وVARCHAR(n)، واختر النوع المناسب لكل عمود.
اختيار المفاتيح والأنواع درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
اختيار مفتاح أساسي
ثلاثة خيارات فعلية:
- BIGSERIAL — عدد صحيح متزايد رتيبًا بحجم 64 بت
- UUID — معرّف فريد عالميًا بحجم 128 بت
- مفتاح طبيعي — معرّف من العالم الحقيقي (البريد الإلكتروني أو ISBN)
متى يكون BIGSERIAL الخيار الأفضل
الخيار الافتراضي لمعظم التطبيقات:
- صغير (8 بايتات)، وفهرسه سريع، وملائم لذاكرة التخزين المؤقت
- رتيب — لذلك تتجمع البيانات الحديثة في نهاية الفهرس
- سهل القراءة في عناوين URL (مثل
/posts/42)
متى يكون UUID الخيار الأفضل
اختاروا UUID عندما:
- تحتاجون إلى معرّفات فريدة عالميًا (في بيئات متعددة مراكز البيانات أو تطبيقات تعمل دون اتصال أولًا)
- لا تريدون أن تكشف المعرّفات حجم النشاط التجاري في عناوين URL
- تريدون إنشاء المعرّف على جانب العميل قبل الإدراج
التكلفة: 16 بايتًا (مقابل 8 بايتات لـ BIGINT)، كما أن UUIDs من الإصدار v4 تجعل عمليات الإدراج عشوائية داخل الفهرس.
لماذا تُعد المفاتيح الطبيعية محفوفة بالمخاطر
تتغير عناوين البريد الإلكتروني. وتُعاد تسمية رموز SKU. وقد تنقسم رموز البلدان. استخدموا مفتاحًا اصطناعيًا بوصفه PK، وقيّدوا المفتاح الطبيعي بقيد UNIQUE.
أنواع الأعمدة: السلاسل النصية
بالنسبة إلى معظم أعمدة النصوص:
VARCHAR(n)— عندما يكون لديكم حد أقصى صارم (للبريد الإلكتروني والرموز)TEXT— للمحتوى الحر والطويلCITEXT— عندما يجب أن تكون المقارنة دائمًا غير حساسة لحالة الأحرف (للبريد الإلكتروني!)
أنواع الأعمدة: الأرقام
بالنسبة إلى الأعمدة الرقمية:
BIGINTللمعرّفات والعداداتNUMERIC(p, s)للقيم الماليةREAL/DOUBLE PRECISIONللعلوم فقط
أنواع الأعمدة: الوقت
بالنسبة إلى أعمدة الوقت:
TIMESTAMPTZللأحداث (الافتراضي)DATEلأيام التقويم (تواريخ الميلاد والعطلات)TIMEلوقت اليوم دون تاريخ (ساعات فتح المتجر)
Boolean مقابل الحالة
إذا كان للعمود أكثر من حالتين محتملتين مستقبلًا، ففضّلوا نص الحالة مع CHECK بدلًا من Boolean:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.القيود المصاحبة
ينبغي أن يحتوي كل عمود على ما يلي:
- أضيق نوع مناسب
NOT NULLما لم تكن NULL ذات معنى- قيمة
DEFAULTإذا كان العمود يحمل غالبًا القيمة نفسها - قيد
CHECKإذا وُجدت قاعدة تخص المجال - فهرس إذا استُخدم في WHERE أو JOIN أو ORDER
آثار التخزين
الأنواع الأضيق = صفوف أصغر = صفوف أكثر في كل صفحة = معدل إصابة أفضل لذاكرة التخزين المؤقت. لا يؤدي تبديل TEXT إلى VARCHAR(20) إلى توفير المساحة (فالتخزين متماثل). أما تبديل BIGINT إلى INT فيخفض عرض العمود إلى النصف.
يجب أن تتطابق أنواع المفاتيح الخارجية
يجب أن تتطابق أنواع أعمدة FK تمامًا مع نوع PK المشار إليه:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)مراجعة
اختيار النوع جزء من التصميم.
- BIGSERIAL أو UUID للمفتاح الأساسي
- NUMERIC للقيم المالية
- TIMESTAMPTZ للأحداث
- TEXT مع CHECK للحالة المتغيرة
- NOT NULL افتراضيًا
تحقق سريع
أنتم تخزنون طوابع زمنية لأحداث تخص مستخدمين في مناطق زمنية كثيرة. ما النوع المناسب؟
الأسئلة الشائعة
هل درس «اختيار المفاتيح والأنواع» مجاني؟
نعم — نص درس «اختيار المفاتيح والأنواع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «اختيار المفاتيح والأنواع»؟
اختر بين مفاتيح BIGSERIAL وUUID الأساسية، وقرّر بين TEXT وVARCHAR(n)، واختر النوع المناسب لكل عمود. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «اختيار المفاتيح والأنواع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نمذجة مدونة: المستخدمون والمنشورات والتعليقات
- اختيار المفاتيح والأنواع
- الفهارس للاستعلامات الشائعة
- تهيئة قاعدة البيانات ببيانات اختبار