
Dalam posting ini saya akan berbicara tentang alat untuk dengan cepat menemukan baris dalam database dan menavigasi melalui mereka. Jika Anda bekerja dalam dukungan dan Anda harus membuat banyak permintaan basis data, jika Anda bosan menulis SELECT, silakan, di bawah cat.
Motivasi
Beberapa waktu lalu, saya membantu menjaga sistem akuntansi yang besar. Dalam perjalanan kerja, diperlukan untuk mencari informasi tentang database. Skenario umum: pengguna dengan masalah panggilan berdasarkan permintaan N1. Untuk diagnosa, Anda perlu melihat beberapa data pada aplikasi ini dalam database. Kami memenuhi permintaan:
SQL SELECT * FROM ORDER WHERE ID = 'N1'
Unit dikaitkan dengan aplikasi, oleh karena itu, kami melakukan permintaan berikut untuk mendapatkan informasi tentang unit:
SQL SELECT * FROM DEVICE WHERE ORDER_ID = 'N1'
Kemudian kami mencari semua aplikasi yang terkait dengan unit:
SQL SELECT * FROM ORDERS WHERE DEVICEID = '92375'
Dan sebagainya. Setelah mengeksekusi N query, cepat atau lambat kami akan menemukan masalah dalam data dan mengambil tindakan. Kerugian dari pendekatan ini jelas:
- Menulis pertanyaan secara manual lambat dan tidak nyaman. Apalagi jika struktur datanya kompleks dan ada banyak tabel. Jadi dimungkinkan untuk memodifikasi sindrom terowongan.
- Saat Anda perlu menemukan baris terkait dengan batasan Unik atau Kunci Asing, Anda harus menulis kueri baru.
- Biasanya, alat basis data menampilkan data dalam bentuk tabel. Ketika ada banyak kolom dalam tabel, Anda harus menggulir tabel secara horizontal, atau memilih kolom dalam kueri. Sekali lagi, pekerjaan manual diperlukan.
Ide
Pertama, Anda perlu menyederhanakan pencarian. Tindakan ini harus dilakukan dengan minimum klik. Cukup masukkan baris yang diinginkan di kotak teks, dan tekan Enter. Kunci primer biasanya diindeks, sehingga Anda dapat mencari nilai segera di semua kolom yang termasuk dalam Kunci Utama atau Kendala Unik.
Maka Anda perlu menyelesaikan masalah navigasi. Bagaimana cara cepat melompat ke entri terkait dengan Kunci Asing? Anda dapat membayangkan database sebagai sistem file: bayangkan bahwa baris basis data adalah direktori, baris terkait oleh Foreign Key adalah symlink, dan bidang yang bukan merupakan Foreign Key adalah file sederhana. Saya tidak akan menulis driver sistem file, itu hanya analogi. Jadi baris basis data dapat direpresentasikan sebagai struktur hierarkis, yang dapat ditampilkan menggunakan komponen TreeTable.
Anda juga dapat menambahkan kolom ke komponen TreeTable, di mana beberapa nilai yang berarti untuk baris yang diberikan akan ditampilkan. Nilai ini dapat diperoleh dengan menggabungkan nilai-nilai bidang baris database. Misalnya, untuk baris pesanan Anda dapat membuat ekspresi:
ORDER_NAME + ', ' + ORDER_STATUS + ', ' + ORDER_CUSTOMER
Analogi terdekat: metode toString () di java.
Implementasi
Pemrograman membutuhkan waktu berbulan-bulan. Pada awalnya saya mencoba menggunakan C ++ dan Qt, tetapi ternyata sulit: di dunia C ++ tidak ada yang mirip dengan driver jdbc, dan bahasanya sendiri jauh lebih rumit. Oleh karena itu, aplikasi ini ditulis dalam Java.

Di tangkapan layar, kita melihat kotak pencarian, kotak kombo untuk mengalihkan koneksi saat ini dan komponen TreeTable, yang menampilkan data hierarkis.
Cari
Anda dapat memasukkan string di kotak teks dan tekan Enter. Pencarian sekarang hanya berfungsi pada kolom tipe string dan numerik: VARCHAR, NUMBER, dll. Tipe tanggal dan waktu belum didukung. Secara default, alat mencari nilai dalam kolom yang disertakan dalam Kunci Utama. Dalam pengaturan, Anda dapat menandai bidang lain yang akan digunakan dalam pencarian.
Navigasi kunci
Node yang berlabel [F] adalah kunci asing. Di kolom Tabel, kita melihat nama tabel yang dirujuk oleh kunci ini. Setelah membuka node, kami beralih ke jalur terkait. Compound Foreign Key juga didukung.
Node yang berlabel [U] adalah Batasan Unik atau Kunci Utama. Setelah memperluas node, Anda dapat pergi ke baris terkait. Lihatlah tangkapan layar:

Kami memasukkan nilai 10248 di bilah pencarian dan menemukan garis di tabel PESANAN. Kami membuka simpul [U] ORDER_ID dan menemukan 3 baris dalam tabel ORDER_DETAILS. Kemudian Anda dapat memperluas setiap node dan pergi ke baris tabel ORDER_DETAILS.
String Kolom
Nilai kunci primer seringkali tidak informatif. Pada tangkapan layar sebelumnya, kita melihat nilai ORDER_ID = 10248, PRODUCT_ID = 11. Angka-angka ini tidak memberi tahu kami apa pun. Untuk memanusiakan mereka, Anda dapat membuat ekspresi:
'Product: ' + PRODUCT_ID.PRODUCT_NAME + ', Price: ' + UNIT_PRICE
dan masukkan di sel kolom String:

Tekan Enter dan lihat nilai yang lebih bermakna:

Rincian teknis
Aplikasi ini ditulis dalam Java, sebuah antarmuka di JavaFX. Anda mungkin memperhatikan bahwa TreeTable menggunakan string "[U]" dan "[F]" sebagai ganti ikon, ini dilakukan karena bug yang mengganggu ini:
JDK-8190331 . Kata sandi basis data disimpan dalam repositori yang aman menggunakan perpustakaan
java-keyring . OpenJDK 13 dan build
jpackage akses awal
digunakan untuk membangun
installer . Membangun perintah dapat ditemukan di
sini .
Database Oracle, MariaDB, dan PostgreSQL sekarang didukung.
Referensi
Halaman proyek di github:
db-tree-fxJika Anda menemukan kesalahan, atau perlu menambahkan sesuatu, jangan ragu untuk memulai masalah atau menulis langsung ke surat:
db.tree.app@gmail.com .
Paket Instalasi
Rpm untuk GNU / Linux:
db-tree-0.0.2-1.x86_64.rpmDeb untuk GNU / Linux:
db-tree_0.0.2-1_amd64.debDmg ditandatangani untuk macOS:
db-tree-0.0.2.dmgMsi yang ditandatangani untuk Windows:
db-tree-0.0.2.msi
Rilis terbaru dapat ditemukan di
github