المهارات postgresql
📦

postgresql

آمن

تصميم مخططات قواعد بيانات PostgreSQL

متاح أيضًا من: 2025Emma,2025Emma

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

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

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

2

رفع في Claude

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

3

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

اختبرها

استخدام "postgresql". صمم جدول users مع email و name والطوابع الزمنية

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

  • CREATE TABLE users (
  • user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  • email TEXT NOT NULL UNIQUE,
  • name TEXT NOT NULL,
  • created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  • updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
  • );
  • CREATE UNIQUE INDEX ON users (LOWER(email));

استخدام "postgresql". هل يجب استخدام UUID أو BIGINT للمفاتيح الأساسية؟

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

  • استخدم BIGINT GENERATED ALWAYS AS IDENTITY عندما:
  • - المعرفات المتسلسلة مقبولة
  • - أداء الفهرس أمر بالغ الأهمية
  • - حجم الفهرس الأصغر مهم
  •  
  • استخدم UUID عندما:
  • - التفرد العالمي مطلوب
  • - غموض المعرف هو متطلب أمني
  • - دمج البيانات من مصادر متعددة

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

آمن
v1 • 2/24/2026

All 221 static analyzer findings were determined to be false positives. The skill consists entirely of markdown documentation (SKILL.md) with no executable code. Backtick characters are markdown formatting for code examples, not shell execution. References to security features like Row Level Security are PostgreSQL documentation, not Windows SAM access. The skill provides educational guidance for database schema design with no security risks.

1
الملفات التي تم فحصها
233
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

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

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

تصميم مخطط تطبيق جديد

تصميم مخطط قاعدة بيانات كامل لتطبيق ويب جديد مع أنواع بيانات مناسبة ومفاتيح أساسية وعلاقات مفاتيح خارجية وفهارس لأنماط الاستعلام الشائعة.

مراجعة المخطط وتحسينه

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

تخطيط الترحيل

تخطيط التطور الآمن للمخطط مع DDL المعاملات وإنشاء الفهارس المتزامن واستراتيجيات لإضافة أعمدة إلى الجداول الكبيرة دون توقف.

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

تصميم جدول أساسي
صمم جدول PostgreSQL لتخزين ملفات تعريف المستخدمين مع حقول للبريد الإلكتروني والاسم وتاريخ التسجيل وإعدادات الملف الشخصي الاختيارية. استخدم أنواع البيانات والقيود المناسبة.
استراتيجية الفهرسة
لدي جدول queries مع الأعمدة: id, user_id, status, created_at. الاستعلامات الشائعة تقوم بالتصفية حسب user_id و status، والفرز حسب created_at تصاعدياً. أوصِ باستراتيجية فهرسة.
قرار تصميم JSONB
هل يجب تخزين سمات المنتج في عمود JSONB أم إنشاء أعمدة منفصلة؟ السمات تختلف حسب فئة المنتج والمستخدمون يبحثون بشكل متكرر عن سمات محددة.
تقسيم الجدول الكبير
لدي جدول events ينمو بمعدل 10 ملايين صف شهرياً. الاستعلامات عادةً تصفّي حسب event_date و device_id. أوصِ باستراتيجية تقسيم واشرح المفاضلات.

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

  • استخدم TIMESTAMPTZ بدلاً من TIMESTAMP لجميع طوابع الأحداث الزمنية لتجنب الارتباك في المنطقة الزمنية
  • أضف فهارس صريحة على أعمدة المفاتيح الخارجية لأن PostgreSQL لا ينشئها تلقائياً
  • طبيع إلى 3NF أولاً، ثم قم بإلغاء التطبيع فقط لتحسينات الأداء القابلة للإثبات ذات العائد المرتفع

تجنب

  • استخدام VARCHAR مع حدود الطول بدلاً من TEXT مع قيود CHECK
  • إنشاء فهارس على كل عمود دون تحليل أنماط الاستعلام الفعلية
  • استخدام SERIAL بدلاً من GENERATED ALWAYS AS IDENTITY لأعمدة الزيادة التلقائية

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

هل يجب استخدام TEXT أو VARCHAR لأعمدة النصوص؟
استخدم TEXT لمعظم الحالات. PostgreSQL يخزن TEXT و VARCHAR بشكل متطابق. إذا كنت بحاجة إلى التحقق من الطول، أضف قيد CHECK بدلاً من استخدام VARCHAR(n).
هل أحتاج إلى فهرسة أعمدة المفاتيح الخارجية؟
نعم. PostgreSQL لا يقوم بفهرسة أعمدة FK تلقائياً. أضف فهارس صريحة على أعمدة FK لأداء الانضمام ومنع مشاكل القفل أثناء حذف صفوف الجدول الأصلي.
متى يجب استخدام JSONB بدلاً من الأعمدة العادية؟
استخدم JSONB للسمات الاختيارية أو المتغيرة أو شبه المهيكلة. احتفظ بالبيانات العلائقية الأساسية في الأعمدة العادية. أضف دائماً فهرس GIN على أعمدة JSONB لاستعلامات الاحتواء.
ما الفرق بين TIMESTAMP و TIMESTAMPTZ؟
TIMESTAMPTZ يخزن الطوابع الزمنية مع الوعي بالمنطقة الزمنية ويحول إلى UTC داخلياً. TIMESTAMP يخزن القيم الحرفية بدون سياق المنطقة الزمنية. استخدم دائماً TIMESTAMPTZ لتجنب أخطاء المنطقة الزمنية.
هل يجب تقسيم جدولي؟
فكر في التقسيم للجداول التي تتجاوز 100 مليون صف حيث تصفّي الاستعلامات باستمرار على مفتاح تقسيم مثل التاريخ. يضيف التقسيم تعقيداً، لذا استخدمه فقط عندما تكون هناك فوائد واضحة.
كيف أضيف عمود NOT NULL بأمان إلى جدول كبير؟
أضف العمود كـ NULL أولاً، ثم املأ البيانات، ثم غيّر إلى NOT NULL. إضافة NOT NULL مع قيمة افتراضية متغيرة مثل now() تسبب إعادة كتابة كاملة للجدول. استخدم قيمة افتراضية غير متغيرة أو ترحيل متعدد الخطوات.

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

المؤلف

sickn33

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md