انتقل إلى المحتوى

تحويل JSON إلى مخطط MySQL — Numio

ينشئ عبارات MySQL CREATE TABLE من عينة JSON. يصبح الجذر جدولًا باسم generic، ويصبح كل كائن أو مصفوفة متداخلة جدولًا فرعيًا بمفتاح خارجي يشير إلى المفتاح الأساسي للجدول الأب.

رسم مخطط أولي لجداول مُطبَّعة (normalized) لحمولة API قبل كتابة ترحيل (migration) حقيقي.

JSON

MySQL Schema

متى تستخدمها

  • رسم مخطط أولي لجداول مُطبَّعة (normalized) لحمولة API قبل كتابة ترحيل (migration) حقيقي.
  • معرفة أي الكائنات والمصفوفات المتداخلة في مستند تحتاج إلى جداول خاصة بها عند نقل البيانات من قاعدة مستندات إلى MySQL.

طريقة الاستخدام

  1. الصق كائن JSON، أو مصفوفة من السجلات النموذجية تُدمج في جدول واحد، في المحرر الأيسر، أو استخدم زر تحميل الملف لفتح ملف بترميز UTF-8.
  2. اقرأ الجداول المُنشأة: الجذر هو generic، والجداول الفرعية generic_<key>، وتربطها مفاتيح خارجية generic_id.
  3. انسخ SQL، ثم أعد تسمية الجداول وعدّل أنواع الأعمدة (مثل DECIMAL للأسعار أو أطوال VARCHAR) قبل تشغيله.

كائن JSON نموذجي

{
  "id": 1024,
  "total": 19.5,
  "coupon": null,
  "created_at": "2026-01-05T10:00:00Z",
  "scores": [4, 4.5],
  "items": [{ "sku": "A1", "qty": 2 }]
}

عبارات MySQL CREATE TABLE

CREATE TABLE generic (
  id INT,
  total DOUBLE,
  coupon TEXT,
  created_at TIMESTAMP,
  PRIMARY KEY (id)
);

CREATE TABLE generic_scores (
  generic_id INT,
  id INT,
  value DOUBLE,
  PRIMARY KEY (id),
  FOREIGN KEY (generic_id) REFERENCES generic(id)
);

CREATE TABLE generic_items (
  generic_id INT,
  id INT,
  sku TEXT,
  qty INT,
  PRIMARY KEY (id),
  FOREIGN KEY (generic_id) REFERENCES generic(id)
);

التفاصيل والقيود

تصبح الأعداد الصحيحة INT (أو BIGINT خارج نطاق 32 بت)، والأعداد الأخرى DOUBLE، والسلاسل النصية TEXT، والقيم المنطقية BOOLEAN. لا تُنشأ أطوال VARCHAR ولا NOT NULL ولا AUTO_INCREMENT ولا فهارس.

المفتاح الأساسي هو مفتاح اسمه id أو يحتوي على _id؛ وإن لم يوجد يُضاف عمود id. السلاسل النصية الأطول من 18 محرفًا التي يمكن تحليلها كتواريخ تصبح TIMESTAMP.

تصبح القيم null أعمدة TEXT. تحصل مصفوفات القيم البسيطة على جدول فرعي بعمود value يُحدَّد نوعه من كل العناصر (scores أعلاه من النوع DOUBLE).

يعمل في متصفحك؛ ولا يُتحقق من المخرجات على خادم MySQL.

FAQ

لماذا نوع القيمة العشرية DOUBLE وليس DECIMAL؟

لا تكشف العينة الدقة التي تحتاجها، لذا تصبح الأعداد غير الصحيحة DOUBLE. غيّر أعمدة المبالغ المالية يدويًا إلى DECIMAL(p,s).

هل يمكنني اختيار اسم الجدول؟

لا. الجدول الجذر دائمًا generic والجداول الفرعية generic_<key>. أعد تسميتها في SQL المنسوخ.

هل ينشئ عبارات INSERT؟

لا، فقط CREATE TABLE. لتحويل صفوف JSON إلى عبارات INSERT استخدم أداة JSON to SQL.

المواصفات والمراجع