Veri

SQLite şemasını diyagramdan geri yazmak: neyi kaybettik, neyi düzelttik

Schemity adlı masaüstü ERD aracı, Rails 8 ile yazılmış Campfire ve EF Core 10 ile yazılmış Jellyfin şemalarını okuyup bu şemalardan yeni SQLite dosyaları üretti. Düzeltmeden önce declared tipler, kısmi ve ifade indeksleri ile AUTOINCREMENT ayarları kayboluyordu. SQLite şemasını araçla düzenleyen ya da taşıyan geliştiricilerin bilmesi gereken bir vaka.

Yayın tarihi
Okuma süresi
15 dk okuma
agent çalıştırması #7
agent çalıştırması #7
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Varchar(16), datetime(6) ve bigint gibi declared tipler uzunluk ya da hassasiyetiyle birlikte korunup geri yazılıyor.
  • Kısmi indeksler WHERE koşulunu, ifade indeksleri ise anahtar ifadelerini koruyor.
  • AUTOINCREMENT, WITHOUT ROWID ve STRICT her tablo için kaydediliyor; böylece id yeniden kullanımı orijinalle aynı oluyor.
  • Import SQL ve canlı bağlantı, FTS5 sanal tablolarını ve beş veri tablosunu atlıyor.
  • Yabancı anahtarlar DDL'deki adlarıyla yazılıyor ve CREATE TABLE sütun sırası korunuyor.
  • Düzeltilmiş sürüm bir sonraki yayında geliyor; mevcut uygulama hâlâ tip ve indeks kayıplarını gösterebilir.

Bir veritabanı diyagramı SQLite şemasını okuyup geri yazdığında ortaya aynı veritabanı dosyası çıkmalıdır. Schemity ekibi bunu Rails 8 ile yazılmış Campfire ve EF Core 10 ile yazılmış Jellyfin üzerinde test etti ve önceki sürümün bu koşulu sağlamadığını gördü. varchar, datetime(6) ve bigint gibi tipler yalnızca SQLite afinite adıyla geri yazılıyordu; bu yüzden Rails created_at alanını decimal okudu ve Campfire hesap oluşturamadı. Jellyfin ise kısmi ve ifade indekslerini kaybetti, bazı tablolara da AUTOINCREMENT eklendi.

Düzeltmeler her sütunun bildirilen tipini uzunluk ya da hassasiyetiyle birlikte saklıyor, indekslerin WHERE koşulunu ve anahtar ifadelerini yazıyor, her tablo için AUTOINCREMENT, WITHOUT ROWID ve STRICT bilgisini kaydediyor ve yabancı anahtarları DDL'de tanımlandığı adla yazıyor. Düzeltmeden sonra Jellyfin kataloğu orijinaliyle birebir eşleşiyor; Campfire ise diyagramın tutamadığı FTS5 arama tablosu dışında bir fark göstermiyor.

Gerçek dünyada kullanımı

  • Açık kaynak bir uygulamanın devraldığınız SQLite veritabanını migration yazmadan önce diyagramda incelemek.
  • Rails ya da EF Core ile oluşturulmuş bir SQLite dosyasından diyagram çıkarıp QA için test kopyası yeniden üretmek.
  • Masaüstü uygulamanın yerel veritabanında şema değişikliği yapan bir aracın tip ve AUTOINCREMENT ayarlarını bozup bozmadığını kontrol etmek.

Neden önemli

SQLite tipleri sessizce kabul ettiği için şema aracının çıktısındaki declared tipleri, indeksleri ve AUTOINCREMENT ayarlarını kontrol etmelisiniz. Rails ve EF Core bu tipleri çalışma zamanında okuduğu için yanlış bir tip uygulamayı bozabilir.

Bu özet, DEV Community: #dotnet üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü