المهارات postgresql-table-design
📦

postgresql-table-design

آمن

تصميم مخطوطات PostgreSQL مع إرشادات الخبراء

يتطلب تصميم مخطوطات PostgreSQL معرفة بأنواع البيانات واستراتيجيات الفهرسة والقيود وأنماط الأداء. توفر هذه المهارة إرشادات شاملة حول أفضل الممارسات المتقدمة والمزالق الخاصة بـ PostgreSQL لمساعدتك في بناء مخطوطات قاعدة بيانات فعالة وقابلة للصيانة.

يدعم: Claude Codex Code(CC)
📊 70 كافٍ
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "postgresql-table-design". كيف يجب أن أتخزين القيم النقدية في PostgreSQL؟

النتيجة المتوقعة:

استخدم NUMERIC(p,s) للقيم النقدية، ولا تستخدم أبدًا أنواع float. على سبيل المثال: amount NUMERIC(10,2) للعملة مع رقمين عشريين. يوفر هذا حسابًا عشريًا دقيقًا بدون مشاكل دقة الفاصلة العائمة. تجنب نوع money المهمل.

استخدام "postgresql-table-design". ما الفرق بين BIGINT GENERATED ALWAYS AS IDENTITY وUUID للمفاتيح الأساسية؟

النتيجة المتوقعة:

  • BIGINT GENERATED ALWAYS AS IDENTITY: معرفات صحيحة تسلسلية. مفضلة لمعظم حالات الاستخدام. الفوائد: تخزين أصغر، فهرسة أسرع، locality أفضل. استخدم عندما لا تكون الحاجة إلى العالمية عبر الأنظمة مطلوبة.
  • UUID: معرفات فريدة عالميًا. استخدم عندما: دمج بيانات من قواعد بيانات مت��ددة، أو تعميم الأنظمة، أو الحاجة إلى معرفات غير تسلسلية غامضة. أنشئ باستخدام uuidv7() على PostgreSQL 18+ أو gen_random_uuid() على الإصدارات الأقدم.

استخدام "postgresql-table-design". هل يجب إضافة فهارس على أعمدة المفاتيح الخارجية؟

النتيجة المتوقعة:

نعم، أضف دائمًا فهارس صريحة على أعمدة المفاتيح الخارجية. PostgreSQL لا تفهرس تلقائيًا أعمدة FK على عكس بعض قواعد البيانات. هذا يسرع عمليات الربط ويمنع مشاكل القفل أثناء الحذف أو التحديث على جدول الأصل. مثال: CREATE INDEX ON orders (user_id) لمفتاح خارجي user_id.

التدقيق الأمني

آمن
v5 • 1/21/2026

This skill is a documentation-only resource providing PostgreSQL schema design guidance. All 237 static findings are false positives triggered by SQL examples and technical terminology in markdown code blocks. The skill contains no executable code, network calls, or file system access. Safe for publication.

2
الملفات التي تم فحصها
2,539
الأسطر التي تم تحليلها
0
النتائج
5
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude عرض سجل التدقيق →

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
30
المجتمع
100
الأمان
83
الامتثال للمواصفات

ماذا يمكنك بناءه

تصميم مخطط قاعدة بيانات جديدة

احصل على إرشادات حول بنية الجدول وأنواع البيانات والقيود واستراتيجيات الفهرسة عند تصميم قاعدة بيانات PostgreSQL جديدة لتطبيق.

تحسين أداء المخطط الموجود

تعرف على استراتيجيات الفهرسة وخيارات التقسيم وأنماط الأداء لتحسين أداء الاستعلامات وتقليل انتفاخ قاعدة البيانات.

مراجعة قرارات تصميم المخطط

تحقق من صحة اختيارات أنواع البيانات واستخدام القرارات والقرارات المعيارية ضد أفضل ممارسات PostgreSQL قبل التنفيذ.

جرّب هذه الموجهات

تصميم جدول أساسي
أحتاج إلى إنشاء جدول مستخدمين مع البريد الإلكتروني والاسم والطوابع الزمنية. ما هو مخطط PostgreSQL الموصى به؟
اختيار أنواع البيانات المناسبة
أقوم بتخزين أسعار المنتجات وعناوين IP وتفضيلات المستخدم. ما أنواع بيانات PostgreSQL التي يجب أن أستخدمها؟
تصميم استراتيجية الفهرسة
لدي جدول طلبات مع استعلامات تصفية حسب user_id وstatus وcreated_at. ما الفهارس التي يجب أن أنشئها؟
التعامل مع بيانات السلاسل الزمنية عالية الحجم
أحتاج إلى تخزين ملايين قراءات المستشعرات يوميًا مع استعلامات تصفية حسب الجهاز والنطاق الزمني. كيف يجب أن أخطط للتقسيم؟

أفضل الممارسات

  • ابدأ بالمخطوطات المعيارية للشكل الثالث العادي وقم بإلغاء التطبيع فقط عندما تواجه مشاكل أداء محددة مع استعلامات عالية القيمة
  • استخدم TIMESTAMPTZ لجميع أعمدة الطوابع الزمنية، وTEXT للسلاسل النصية، وNUMERIC للقيم النقدية، وBIGINT GENERATED ALWAYS AS IDENTITY للمفاتيح الأساسية ما لم تكن بحاجة إلى UUIDs
  • أنشئ فهارس للأعمدة المستخدمة في عبارات WHERE وشروط JOIN وعبارات ORDER BY، وأضف دائمًا فهارس صريحة على أعمدة المفاتيح الخارجية

تجنب

  • لا تستخدم أنواع البيانات VARCHAR(n) أو CHAR(n); استخدم TEXT مع قيود CHECK لحدود الطول إذا لزم الأمر
  • لا تستخدم TIMESTAMP بدون zona الزمنية، أو نوع money، أو SERIAL; استخدم بدلاً منها TIMESTAMPTZ وNUMERIC وGENERATED ALWAYS AS IDENTITY
  • لا تلغي تطبيع البيانات قبل قياس مشاكل الأداء الفعلية; يخلق إلغاء التهيئة المبكر عبء الصيانة بدون فوائد مثبتة

الأسئلة المتكررة

متى يجب أن أستخدم UUID بدلاً من BIGINT للمفاتيح الأساسية؟
استخدم UUID عندما تحتاج إلى عالمية عبر الأنظمة الموزعة، أو عند دمج قواعد البيانات، أو عندما تريد معرفات غير تسلسلية غامضة. استخدم BIGINT GENERATED ALWAYS AS IDENTITY لمعظم الحالات الأخرى حيث يوفر أداء أفضل وتخزين أصغر.
هل PostgreSQL تنشئ تلقائيًا فهارس على أعمدة المفاتيح الخارجية؟
لا، PostgreSQL لا تنشئ تلقائيًا فهارس على أعمدة المفاتيح الخارجية. يجب عليك إنشاء فهارس يدويًا على أعمدة FK لتحسين أداء الربط ومنع مشاكل القفل أثناء تعديلات جدول الأصل.
ما الفرق بين أنواع البيانات JSONB وJSON؟
JSONB يفضل على JSON. يخزن JSONB البيانات بتنسيق ثنائي للمعالجة الأسرع ويدعم الفهرسة بفهارس GIN. استخدم JSON فقط إذا كان يجب الحفاظ على الترتيب والتنسيق الأصلي لمحتوى JSON.
متى يجب أن أقسم جدولاً؟
قسم الجداول الأكبر من 100 مليون صف عندما تقوم الاستعلامات بشكل مستمر بالتصفية على مفتاح التقسيم مثل الطابع الزمني أو المنطقة. التقسيم مفيد أيضًا عندما تحتاج إلى تقليم أو استبدال البيانات بكميات كبيرة بشكل دوري. استخدم التقسيم التصريحي أو TimescaleDB للإدارة الآلية.
لماذا أرى فجوات في تسلسل عمود IDENTITY الخاص بي؟
الفجوات في التسلسلات سلوك طبيعي ومتوقع في PostgreSQL. التراجعات والتعطلات والمعاملات المتزامنة تخلق فجوات. لا تحاول جعل المعرفات متسلسلة فهذا سلوك قياسي لقاعدة البيانات ولا يشير إلى مشكلة.
كيف أجعل مقارنات النص غير حساسة لحالة الأحرف؟
للتسلسلات البسيطة غير الحساسة لحالة الأحرف، أنشئ فهرس تعبيري على LOWER(column) واستعلم مع WHERE LOWER(email) = LOWER(input). للمقارنات الواعية بالإعدادات المحلية، استخدم collations غير الحتمية. استخدم نوع CITEXT فقط إذا كنت تحتاج إلى قيود غير حساسة لحالة الأحرف مثل UNIQUE أو PRIMARY KEY.

تفاصيل المطور

المؤلف

wshobson

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md