
في هذا المنشور سأتحدث عن أداة للعثور على الصفوف بسرعة في قاعدة بيانات والتنقل فيها. إذا كنت تعمل في مجال الدعم وكان عليك تقديم الكثير من استعلامات قاعدة البيانات ، إذا مللت من كتابة SELECTs ، من فضلك ، أسفل cat.
حافز
منذ بعض الوقت ، ساعدت في الحفاظ على نظام محاسبة كبير. في سياق العمل ، كان مطلوبًا البحث عن معلومات حول قاعدة البيانات. سيناريو نموذجي: مستخدم لديه مشكلة المكالمات بناء على طلب N1. بالنسبة للتشخيصات ، يلزمك عرض بعض البيانات الموجودة على هذا التطبيق في قاعدة البيانات. نحن تلبية الطلب:
SQL SELECT * FROM ORDER WHERE ID = 'N1'
ترتبط الوحدة بالتطبيق ، لذلك نقوم بتنفيذ الطلب التالي للحصول على معلومات عن الوحدة:
SQL SELECT * FROM DEVICE WHERE ORDER_ID = 'N1'
ثم نبحث عن جميع التطبيقات المتعلقة بالوحدة:
SQL SELECT * FROM ORDERS WHERE DEVICEID = '92375'
و هكذا. بعد تنفيذ استعلامات N ، سنجد مشكلة في البيانات عاجلاً أم آجلاً واتخاذ تدابير. عيوب هذا النهج واضحة:
- كتابة الاستعلامات يدوياً بطيئة وغير مريح. خاصة إذا كانت بنية قاعدة البيانات معقدة وهناك العديد من الجداول. لذلك من الممكن تعديل متلازمة النفق.
- عندما تحتاج إلى العثور على سطر ذي صلة بواسطة قيد فريد أو مفتاح خارجي ، يجب عليك كتابة استعلام جديد.
- عادةً ، تعرض أدوات قاعدة البيانات البيانات في شكل جدول. عندما يكون هناك العديد من الأعمدة في الجدول ، يجب عليك التمرير في الجدول أفقيًا أو تحديد أعمدة في الاستعلام. مرة أخرى ، العمل اليدوي مطلوب.
فكرة
تحتاج أولاً إلى تبسيط البحث. يجب تنفيذ هذا الإجراء بحد أدنى من النقرات. فقط أدخل السطر المطلوب في مربع النص ، واضغط على Enter. عادةً ما تتم فهرسة المفاتيح الأساسية ، بحيث يمكنك البحث عن قيمة مباشرة في جميع الأعمدة المضمنة في المفاتيح الأساسية أو القيود الفريدة.
فأنت بحاجة إلى حل مشكلة الملاحة. كيف تقفز بسرعة إلى إدخال ذي صلة على المفتاح الخارجي؟ يمكنك أن تتخيل قاعدة البيانات كنظام ملفات: تخيل أن صف قاعدة البيانات هو دليل ، والسطر المرتبط بالمفتاح الخارجي هو رمز ارتباط ، والحقل الذي لا يمثل مفتاح خارجي هو ملف بسيط. لن أكتب برنامج تشغيل نظام ملفات ، إنه مجرد تشبيه. لذلك يمكن تمثيل صفوف قاعدة البيانات كهيكل هرمي ، والتي يمكن عرضها باستخدام مكون TreeTable.
يمكنك أيضًا إضافة عمود إلى مكون TreeTable ، حيث سيتم عرض بعض القيم ذات الصلة لصف معين. يمكن الحصول على هذه القيمة عن طريق وصل قيم حقول صف قاعدة البيانات. على سبيل المثال ، بالنسبة لخط الطلب ، يمكنك عمل تعبير:
ORDER_NAME + ', ' + ORDER_STATUS + ', ' + ORDER_CUSTOMER
أقرب القياس: طريقة toString () في جافا.
تطبيق
استغرق البرمجة عدة أشهر. في البداية حاولت استخدام C ++ و Qt ، لكن اتضح أن الأمر صعب: في عالم C ++ لا يوجد شيء مشابه لبرامج jdbc ، واللغة نفسها أكثر تعقيدًا بكثير. لذلك ، يتم كتابة التطبيق في جاوة.

في لقطة الشاشة ، نرى مربع البحث ، مربع التحرير والسرد لتبديل الاتصال الحالي ومكون TreeTable ، الذي يعرض البيانات الهرمية.
بحث
يمكنك إدخال سلسلة في مربع النص والضغط على Enter. البحث الآن يعمل فقط على أعمدة من السلسلة وأنواع الأرقام: VARCHAR ، NUMBER ، إلخ. أنواع التاريخ والوقت غير مدعومة بعد. بشكل افتراضي ، تبحث الأداة عن القيم في الأعمدة المضمّنة في المفتاح الأساسي. في الإعدادات ، يمكنك وضع علامة في الحقول الأخرى التي سيتم استخدامها في البحث.
مفتاح الملاحة
العقد المسمى [F] هي المفتاح الخارجي. في عمود الجدول ، نرى اسم الجدول الذي يشير إليه هذا المفتاح. بعد فتح العقدة ، ننتقل إلى السطر ذي الصلة. يتم دعم المفاتيح الخارجية المركبة أيضًا.
العقد المسمى [U] هي قيد فريد أو مفتاح أساسي. بعد توسيع العقدة ، يمكنك الانتقال إلى الخطوط ذات الصلة. ألق نظرة على لقطة الشاشة:

أدخلنا القيمة 10248 في شريط البحث ووجدنا خطًا في جدول ORDERS. فتحنا العقدة [U] ORDER_ID ووجدنا 3 صفوف في جدول ORDER_DETAILS. ثم يمكنك توسيع كل عقدة والانتقال إلى صفوف جدول ORDER_DETAILS.
سلسلة العمود
غالبًا ما تكون القيم الأساسية الأساسية غير معلوماتية. في لقطة الشاشة السابقة ، نرى القيم ORDER_ID = 10248 ، PRODUCT_ID = 11. هذه الأرقام لا تخبرنا بأي شيء. لإضفاء الطابع الإنساني عليها بطريقة أو بأخرى ، يمكنك تقديم تعبير:
'Product: ' + PRODUCT_ID.PRODUCT_NAME + ', Price: ' + UNIT_PRICE
وأدخله في خلية عمود السلسلة:

اضغط على Enter وشاهد المزيد من القيم المفيدة:

التفاصيل الفنية
تتم كتابة التطبيق في جافا ، واجهة في JavaFX. قد تلاحظ أن TreeTable يستخدم السلاسل "[U]" و "[F]" بدلاً من الرموز ، وقد تم ذلك بسبب هذا الخطأ المزعج:
JDK-8190331 . يتم تخزين كلمات مرور قاعدة البيانات في مستودع آمن باستخدام مكتبة
مفاتيح جافا .
يتم استخدام OpenJDK 13 و
jpackage للبناء المبكر للوصول
إلى أدوات التثبيت . بناء الأوامر يمكن العثور عليها
هنا .
قواعد بيانات Oracle و MariaDB و PostgreSQL مدعومة الآن.
مراجع
صفحة المشروع على جيثب:
db-tree-fxإذا وجدت خطأ ، أو كنت بحاجة إلى إضافة شيء ما ، فلا تتردد في بدء المشكلة أو الكتابة مباشرةً إلى البريد:
db.tree.app@gmail.com .
حزم التثبيت
دورة في الدقيقة لنظام التشغيل GNU / Linux:
db-tree-0.0.2-1.x86_64.rpmDeb for GNU / Linux:
db-tree_0.0.2-1_amd64.debوقعت dmg لـ macOS:
db-tree-0.0.2.dmgتوقيع msi لنظام التشغيل Windows:
db-tree-0.0.2.msi
يمكن العثور على أحدث إصدار على
جيثب