Şema Çıkarım Aracı

Her yeni entegrasyon aynı şekilde başlar: bir API bir JSON verisi döndürür ve onu tutacak bir modele ihtiyacınız olur. 20 alanı elle yazmak hem sıkıcı hem de hata yapmaya açıktır. Bu araç örnek bir JSON nesnesini ayrıştırır, her anahtar için bir sütun türü seçer ve istediğiniz biçimde yapıştırmaya hazır bir şema üretir: SQL CREATE TABLE, Mongoose şeması veya Sequelize model tanımı.

JSON'dan bir şema nasıl çıkarılır

  1. 1

    Örnek bir nesne yapıştırın

    Tek bir JSON nesnesi ya da bir nesne dizisi girin (dizideki ilk nesne okunur). Her sütunun bir tür alması için tüm alanları dolu, eksiksiz bir kayıt kullanın.

  2. 2

    Çıktı biçimini seçin

    SQL CREATE TABLE (Postgres / MySQL / SQLite tarzı), MongoDB kullanan Node.js uygulamaları için Mongoose veya ilişkisel Node.js uygulamaları için Sequelize.

  3. 3

    Tabloya veya modele ad verin

    SQL çıktısındaki tablo adını ya da Mongoose ve Sequelize çıktısındaki şema veya model adını belirler.

  4. 4

    Üretilen şemayı kopyalayın

    Başlangıç noktası olarak doğrudan bir migration'a veya bir model dosyasına yapıştırın.

Türler nasıl çıkarılır

Çıkarım bir en iyi tahmindir. Araç tek bir örnek nesnenin değerlerini okur ve gördüğü değere göre her anahtar için bir sütun türü seçer. Kayıtları karşılaştırmaz ve hangi alanların isteğe bağlı olduğunu tahmin etmez, bu yüzden ona eksiksiz ve temsili bir nesne verin.

Tür eşlemesi

JSON değeri SQL türü Mongoose türü Sequelize türü
42 (tam sayı) INTEGER Number DataTypes.INTEGER
3.14 (ondalık) DECIMAL(10,2) Number DataTypes.FLOAT
"merhaba" (kısa metin) VARCHAR(255) String DataTypes.STRING
255 karakterden uzun metin 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] (dizi) JSON Object DataTypes.JSON
{ "nested": ... } (nesne) JSON Object DataTypes.JSON

SQL çıktısının eklediği şey

SQL CREATE TABLE her zaman otomatik artan bir birincil anahtarla başlar:

id INTEGER PRIMARY KEY AUTOINCREMENT,

Mongoose ve Sequelize çıktısı bir id alanı eklemez, çünkü her iki kütüphane de sizin için bir tane oluşturur.

Akılda tutulacak varsayılanlar ve sınırlar

  • Tek bir nesne okunur. Bir dizi yapıştırırsanız yalnızca ilk öğe incelenir, dolayısıyla tüm şemayı onun alanları tanımlar.
  • Eksik bir anahtar, olmayan bir sütundur. Örnek nesnede bulunmayan alanlar çıktıda hiç görünmez.
  • İç içe geçmiş nesneler ve diziler tek bir JSON sütununa dönüşür. Araç bunları alt tablolara, alt şemalara veya yabancı anahtarlara açmaz.
  • Hiçbir kısıtlama üretilmez. Sütunlar NOT NULL, benzersizlik veya indeks olmadan üretilir, dolayısıyla siz sıkılaştırana kadar hepsi boş değere izin verir.

Daha temiz bir sonuç için ipuçları

  • Tamamen doldurulmuş bir kayıt kullanın. Örneğinizde null olan bir alan metin/string olarak türlenir, bu da nadiren istediğiniz şeydir.
  • Üretimden sonra ayrılmış sözcükleri yeniden adlandırın. type, order veya user gibi alanların SQL’de tırnak içine alınması gerekir.
  • Çıktıyı bir iskele olarak görün. VARCHAR uzunluklarını ve DECIMAL hassasiyetini ayarlayın, indeks ekleyin, sütunları NOT NULL olarak işaretleyin ve yayına almadan önce gerçek anahtarlar seçin.

Sık Sorulan Sorular

İç içe geçmiş bir nesne veya dizi tek bir JSON sütununa eşlenir (SQL ve Sequelize’de JSON, Mongoose’da bir Object alanı). Araç iç içe geçmiş yapıları alt tablolara veya alt şemalara açmaz, bu yüzden gerekirse onları kendiniz düzleştirir veya normalize edersiniz.

Hayır. Bir nesne dizisi yapıştırırsanız yalnızca ilk nesne incelenir ve şemayı onun anahtarları tanımlar. Bu ilk kaydın önemsediğiniz tüm alanları, her birinde gerçek bir değerle içerdiğinden emin olun.

Hayır. Her sütun yalnızca bir türle üretilir, dolayısıyla çıktıda yabancı anahtar, benzersizlik kısıtlaması, indeks veya NOT NULL ifadesi yoktur. Bunları elle ekleyin, çünkü aracın bir örnekten geri kazanamayacağı bir niyeti kodlarlar.

İlişkisel bir veritabanı migration’ı için SQL CREATE TABLE, MongoDB üzerindeki bir Node.js uygulaması için Mongoose Schema, Sequelize ORM aracılığıyla ilişkisel bir veritabanı üzerindeki bir Node.js uygulaması için Sequelize Model seçin.

İlgili Araçlar

Araç diğer dillerde mevcuttur