أداة استنتاج المخطط

كل تكامل جديد يبدأ بالطريقة نفسها: تُعيد واجهة برمجية كتلة JSON، وتحتاج إلى نموذج لتخزينها. كتابة 20 حقلًا يدويًا مملة وعرضة للأخطاء. تحلل هذه الأداة كائن JSON نموذجيًا، وتختار نوع عمود لكل مفتاح، وتُنتج مخططًا جاهزًا للصق بالصيغة التي تريدها: SQL CREATE TABLE أو مخطط Mongoose أو تعريف نموذج Sequelize.

كيف تستنتج مخططًا من JSON

  1. 1

    الصق كائنًا نموذجيًا

    أدخل كائن JSON واحدًا، أو مصفوفة من الكائنات (يُقرأ الكائن الأول في المصفوفة). استخدم سجلًا كاملًا بجميع الحقول المعبأة كي يحصل كل عمود على نوع.

  2. 2

    اختر صيغة الإخراج

    SQL CREATE TABLE (بأسلوب Postgres / MySQL / SQLite)، أو Mongoose لتطبيقات Node.js التي تستخدم MongoDB، أو Sequelize لتطبيقات Node.js العلائقية.

  3. 3

    سمِّ الجدول أو النموذج

    يحدد اسم الجدول في مخرجات SQL، أو اسم المخطط أو النموذج في مخرجات Mongoose و Sequelize.

  4. 4

    انسخ المخطط المُولَّد

    الصقه مباشرة في ملف ترحيل (migration) أو ملف نموذج كنقطة انطلاق.

كيف تُستنتج الأنواع

الاستنتاج هو أفضل تخمين ممكن. تقرأ الأداة قيم كائن نموذجي واحد وتختار نوع عمود لكل مفتاح بناءً على القيمة التي تراها. لا تقارن بين السجلات ولا تخمّن أي الحقول اختيارية، لذا امنحها كائنًا كاملًا وممثِّلًا.

تطابق الأنواع

قيمة JSON نوع SQL نوع Mongoose نوع Sequelize
42 (عدد صحيح) INTEGER Number DataTypes.INTEGER
3.14 (عدد عشري) DECIMAL(10,2) Number DataTypes.FLOAT
"مرحبا" (سلسلة قصيرة) VARCHAR(255) String DataTypes.STRING
سلسلة أطول من 255 حرفًا TEXT String DataTypes.STRING
"2026-04-18T10:00:00Z" TIMESTAMP Date DataTypes.DATE
"2026-04-18" DATE Date DataTypes.DATEONLY
true / false BOOLEAN Boolean DataTypes.BOOLEAN
null TEXT String DataTypes.STRING
[1, 2, 3] (مصفوفة) JSON Object DataTypes.JSON
{ "nested": ... } (كائن) JSON Object DataTypes.JSON

ماذا يضيف إخراج SQL

يبدأ SQL CREATE TABLE دائمًا بمفتاح رئيسي ذاتي التزايد:

id INTEGER PRIMARY KEY AUTOINCREMENT,

لا يضيف إخراج Mongoose و Sequelize حقل id، لأن المكتبتين تنشئان واحدًا نيابةً عنك.

قيم افتراضية وحدود يجب تذكرها

  • يُقرأ كائن واحد. إذا لصقت مصفوفة، يُفحص العنصر الأول فقط، فحقوله هي التي تحدد المخطط كله.
  • المفتاح المفقود عمود غير موجود. الحقول التي لا توجد في الكائن النموذجي لا تظهر في الإخراج إطلاقًا.
  • تصبح الكائنات والمصفوفات المتداخلة عمود JSON واحدًا. لا تفكّها الأداة إلى جداول فرعية أو مخططات فرعية أو مفاتيح خارجية.
  • لا تُولَّد أي قيود. تُخرَج الأعمدة دون NOT NULL أو تفرّد أو فهارس، لذا تسمح جميعها بالقيم الفارغة حتى تُحكِمها أنت.

نصائح لنتيجة أنظف

  • استخدم سجلًا معبأً بالكامل. الحقل الذي قيمته null في نموذجك يُعطى نوع نص/سلسلة، وهو نادرًا ما يكون ما تريده.
  • أعد تسمية الكلمات المحجوزة بعد التوليد. حقول مثل type أو order أو user ستحتاج إلى علامات اقتباس في SQL.
  • تعامل مع الإخراج كسقالة. اضبط أطوال VARCHAR ودقة DECIMAL، وأضف فهارس، وميّز الأعمدة بـ NOT NULL، واختر مفاتيح حقيقية قبل الإطلاق.

الأسئلة الشائعة

يُطابَق الكائن أو المصفوفة المتداخلة مع عمود JSON واحد (JSON في SQL و Sequelize، وحقل من نوع Object في Mongoose). لا تفكّ الأداة البُنى المتداخلة إلى جداول فرعية أو مخططات فرعية، لذا تقوم أنت بتسطيحها أو تسويتها عند الحاجة.

لا. إذا لصقت مصفوفة من الكائنات، يُفحص الكائن الأول فقط ومفاتيحه هي التي تحدد المخطط. تأكد من أن هذا السجل الأول يضم كل الحقول التي تهمك، بقيمة حقيقية في كل منها.

لا. يُخرَج كل عمود بنوع فقط، لذا لا يحتوي الإخراج على مفاتيح خارجية أو قيود تفرّد أو فهارس أو جُمَل NOT NULL. أضِفها يدويًا، لأنها تشفّر نيّة لا تستطيع الأداة استعادتها من عينة.

اختر SQL CREATE TABLE لترحيل قاعدة بيانات علائقية، أو Mongoose Schema لتطبيق Node.js على MongoDB، أو Sequelize Model لتطبيق Node.js على قاعدة بيانات علائقية عبر ORM الخاص بـ Sequelize.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مدقق البريد الإلكتروني

تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.

مولد EditorConfig

أنشئ ملف .editorconfig من قواعد المسافة البادئة ونهاية السطر ومجموعة الأحرف، ثم أضف قسمًا صحيحًا لكل لغة في مستودعك: Python وGo وYAML وMakefile وغيرها.

عدّاد FPS

قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.

الأداة متاحة بلغات أخرى