Laravel SchemaSpy paketi ile projenizin veritabanı şemasının görsel çıktısını alma

Laravel SchemaSpy ile veritabanızdaki ilişkiyi görsel olarak görebilirsiniz. Bu sayede oluşturuduğunuz şemayı daha ayrıntılı görebilir ve analiz edebilirsiniz.
Paket sayesinde bu bilgileri html formatında üretebilir ve tarayıcınız üzerinden görebilirsiniz.

Birden fazla tablo ilişkilendirdi iseniz sonradan dönüp baktığınızda ilişkiyi çözmek zaman alabilir, ben genelde kağıt üzerinde foreign key eşelştirmelerini yapıyorum. Fakat değişiklikler yapıldığında sil baştan yapmak elbette zor oluyor. Bu zahmetten kurtarmak için hazırlanmış güzel bir otomasyon diyebilirim.

Üretilen çıktıda göreceğiniz başlıklar:
  • Tables - Tüm tablolar ile birlikte, insert ve delete sıralamasını görebilirsiniz.
  • Relationships - Tüm tablo ilişkilerini ve tabloya tıkladığınızda sadece o tablo ile ilişkili olan tabloları grafiksel olarak görebilirsiniz. ( Aşağıda örnek bir resim mevcut )
  • Utility Tables - Herhangi bir tablo ile bağı olmayan tablolar.
  • Constraints - Tüm tablolardaki Foreign Key listesi, parent-child ilişkisi ve silme kuralları
  • Anomalies - Tablolarınızdaki anormallikleri basit olarak analizi, veritabanınızı geliştirmeniz için katkı sağlayacaktır.
  • Columns - Tablo ayrımı olmaksızın tüm kolonlar ve veritiplerine dair tüm bilgilerin listesi. DB tasarımı sonrasında çıktısını almanız işinizi kolaylaştırabilir.
  • Donate - Tabi ki geliştirici için bağış linki :)


Laravel SchemaSpy paketi SchemaSpy paketini kullanmaktadır. Bazı gereksinimleri manuel olarak yüklememiz gerekecek. Sırayla ilerliyoruz..

Paket Kurulumu


1. Laravel SchemaSpy paketinin composer ile kurulumu
composer require stolz/laravel-schema-spy --dev


2. config/app.php'ye Uygun şekilde eklemeyi yapın
	'providers' => [
	...
	Stolz\SchemaSpy\ServiceProvider::class,
	...


3. ve son olarak aşağıdaki komut ile ayarlar aşamasına geçiyoruz.
php artisan vendor:publish


Ayarlamalar


1. config/spy.php dosyası kurulumun son aşamasından sonra oluşturulmuş olacak. Dosyayı açıyoruz..

Ben bu şekilde bir ayarlama yaptım ve çıktılar /storage/framework/database/schema/ klasöründe oluşturuluyor.
'output' => storage_path('framework/database/schema'),


Komutun bu şekilde çalışması için schemaSpy_5.0.0.jar dosyasının composer.json ile aynı dizinde yani ana dizinde olması gerekiyor.
Her zaman buradan son sürümü indirip kullanabilirsiniz :) Ancak uyumluluk sorunu yoksa.. İsterseniz .jar dosyasını başka dizine alıp komutu ona göre girebilirsiniz.
'command' => 'java -jar schemaSpy_5.0.0.jar',


Son ayarda ise Java mysql-connector indirip bir dizine atıp, dizini gireceğiz. Benim attığım dizin /var/www/html/laravel/
.jar dosyasını buradan indirebilirsiniz. Zip / Gz formatı mevcut. Arşivden çıkartarak .jar dosyasını bir dizine atın. Daha sonra aşağıdaki gibi tam adresini belirtin.
MySQL Connector

	'parameters' => [
		'-t'  => 'mysql',
		'-dp' => '/var/www/html/laravel/mysql-connector-java-5.1.42-bin.jar', // download from http://dev.mysql.com/downloads/connector/j/
		'-hq' => null,
	],


Kullanımı


Aşağıdaki komut ile çıktıları üretebilirsiniz. Çıktılara benim ayarlarıma göre /storage/framework/database/schema/index.html dosyasından bakılabilecek.
php artisan db:spy


Örnek bir şema:


Zizaco/entrust paketine ait permission-role veritabanı şeması
SpySchema


Dış Bağlantılar:


Laravel SchemaSpy: https://github.com/Stolz/laravel-schema-spy
SchemaSpy: http://schemaspy.sourceforge.net/
MySQL Connector: https://dev.mysql.com/downloads/connector/j/

Mevcut gereksinimlere dış bağlantılardan bakabilirsiniz.
+1
Yorum ekle

Yorum ekle

    • winksmile
      laughing
      angry
Okunamayan kodu yenilemek için resmin üstüne tıklayınız