"It is quite interesting that Oracle constrain (or create an enumeration) a TYPE using the TYPE syntax as ADA does when Oracle also supports the SUBTYPE syntax to provide constrained and un-constrained types." - petefinnigan.com/weblog/arch…#oracleace#oracle#enum#plsql
"What is interesting is that we are always allowed to set the variable to NULL so in essence the TWO value ENUM has a three value set of possible values, TRUE, FALSE and NULL" - petefinnigan.com/weblog/arch…#oracleace#oracle#enum#plsql
"Because I have some knowledge of PL/SQL my thoughts turned to TYPEs as it should be possible to create a TYPE that is in effect a constrained TYPE or an enumerated type." - petefinnigan.com/weblog/arch…#oracleace#oracle#enum#plsql
This is an excellent opportunity for someone who enjoys combining technical expertise with stakeholder engagement and delivering exceptional support to finance users across Europe.
proactive.it/job/oracle-fina…#SQL#PLSQL#UNIX#Oracle
Sim... hoje você roda uma IA e muda completamente um projeto inteiro de PLSQL para PGPLSQL e vice-versa. Até tem ferramentas que faziam esse de...para, ODI por exemplo mas tinha uma curva de aprendizado para aprender como funciona...
تصميم قاعدة Oracle لنظام معاملات مصرفية عالي الاعتمادية
Oracle High-Availability Banking Transactions Database Design Prompt
إعداد: كامل أبو سمرة – kamel3lom
2) وظيفة البرومبت
هذا البرومبت مخصص لتوجيه الذكاء الاصطناعي إلى تصميم قاعدة بيانات Oracle Database احترافية لنظام معاملات مصرفية عالي الاعتمادية، يشمل الحسابات البنكية، العملاء، الحوالات، القيود المحاسبية، سجل العمليات، المراجعة، الحماية، النسخ الاحتياطي، التعافي من الكوارث، التوافر العالي، وإدارة المعاملات المالية الحساسة وفق منطق مصرفي صارم.
3) المنصة الأنسب للاستخدام
المنصة الأنسب هي ChatGPT أو Claude للتصميم التحليلي العميق، ويمكن استخدام ChatGPT Codex لاحقًا لتحويل التصميم إلى ملفات SQL وPL/SQL منظمة.
يفضل تنفيذ البرومبت أولًا في ChatGPT أو Claude لأن المطلوب ليس كودًا فقط، بل تحليل معماري، تصميم منطقي وفيزيائي، نمذجة معاملات، قواعد أمان، وسيناريوهات فشل وتعافٍ، وهذه تحتاج إلى تفكير هندسي منظّم قبل كتابة الأكواد.
4) طريقة الاستخدام
انسخ البرومبت الكامل الموجود في الأسفل، ثم الصقه في ChatGPT أو Claude. بعد ذلك أضف بياناتك الخاصة، مثل: عدد الفروع، عدد العملاء المتوقع، حجم المعاملات اليومي، نوع النظام المصرفي، هل النظام داخلي أم يخدم تطبيقات جوال وإنترنت، وهل تريد التصميم مناسبًا لبنك كامل أو لمحفظة مالية أو نظام تحويلات فقط. بعد الحصول على التصميم الأولي، اطلب من النموذج تحويله إلى ملفات SQL منفصلة: ملف الجداول، ملف القيود، ملف الفهارس، ملف الإجراءات المخزنة، ملف الصلاحيات، وملف النسخ الاحتياطي والتعافي.
5) تنبيه مهم
لضمان أعلى درجة ممكنة من الدقة وصحة الإخراج، يجب تزويد الذكاء الاصطناعي يدويًا بكل البيانات الموثقة المتاحة لديك قبل تنفيذ البرومبت أو ضمن نصه نفسه؛ لأن جودة المخرجات ترتبط مباشرة بجودة المدخلات، فالذكاء الاصطناعي — كأي نظام تحليلي أو برمجي — إذا بُنِي على بيانات صحيحة وموثقة ومنظمة، كانت نتائجه أقرب إلى الصحة والدقة والاعتمادية، أما إذا كانت البيانات ناقصة أو غير دقيقة أو غير موثقة، فإن المخرجات ستتأثر بذلك مهما كانت قوة النموذج.
6) تحذير حقوقي
هذا البرومبت من إعداد كامل أبو سمرة – kamel3lom، وهو متاح للاستخدام الشخصي، والتعليمي، والأكاديمي، والعلمي، والخيري، والشرح فقط، مع وجوب ذكر المصدر عند الاستخدام. ويُمنع استخدامه تجاريًا أو ربحيًا، أو إعادة نشره بصياغة جديدة، أو بيعه، أو استخدامه لكسب المتابعين، أو إنهاء أعمال مهنية للغير، إلا بعد شرائه، والشراء متوفر حاليًا في المملكة العربية السعودية فقط.
7) صيغة اللايك / الإعجاب والتعليق والمتابعة
ضع لايك / إعجاب وتعليق ومتابعة.
8) البرومبت الكامل الجاهز للنسخ واللصق
اسم المشروع:
تصميم قاعدة Oracle لنظام معاملات مصرفية عالي الاعتمادية
Oracle High-Availability Banking Transactions Database Design
إعداد: كامل أبو سمرة – kamel3lom
أريد منك أن تعمل كمهندس قواعد بيانات Oracle خبير، ومهندس نظم مصرفية، ومصمم معماريات مالية عالية الاعتمادية. مهمتك هي تصميم قاعدة بيانات Oracle Database كاملة لنظام معاملات مصرفية عالي الاعتمادية، مع مراعاة أن النظام يتعامل مع بيانات مالية حساسة، وعمليات تحويل، وحسابات عملاء، وسجلات محاسبية، وتدقيق أمني، وتوافر عالٍ، وتعافٍ من الكوارث.
اتبع منهج KAS-DPM — Kamel Abu Samra Deep Prompting Method:
دقة قبل الجمال، تحقق قبل الاستنتاج، تفصيل قبل الاختصار، إخراج نهائي قبل الشرح.
أولًا: افهم طبيعة النظام
صمّم قاعدة بيانات Oracle لنظام مصرفي قادر على إدارة:
1. بيانات العملاء.
2. الحسابات البنكية.
3. الفروع.
4. الموظفين والصلاحيات.
5. أنواع الحسابات.
6. الحركات المالية.
7. التحويلات الداخلية.
8. التحويلات بين البنوك.
9. قيود اليومية المحاسبية.
10. الأرصدة الفعلية والمتاحة.
11. عمليات الحجز على الرصيد.
12. الرسوم والعمولات.
13. الضرائب أو الرسوم الحكومية عند الحاجة.
14. سجل التدقيق Audit Trail.
15. سجل محاولات الدخول والعمليات الحساسة.
16. كشف الحساب.
17. المصالحة المالية Reconciliation.
18. إدارة الأخطاء والتراجع Rollback.
19. منع تكرار المعاملات Idempotency.
20. التعافي من الفشل والكوارث.
ثانيًا: ضع الافتراضات بوضوح
قبل التصميم، اكتب الافتراضات التشغيلية التي بنيت عليها التصميم، مثل:
- النظام يخدم بنكًا متوسطًا أو كبيرًا.
- قاعدة البيانات OLTP عالية الحركة.
- المعاملات المالية يجب أن تلتزم بمبدأ ACID.
- لا يجوز أن يحدث رصيد سالب إلا إذا كان الحساب يسمح بذلك رسميًا.
- كل حركة مالية يجب أن تنتج أثرًا محاسبيًا قابلًا للتدقيق.
- كل عملية تحويل يجب أن تكون قابلة للتتبع من لحظة إنشائها حتى تسويتها أو فشلها.
- كل تعديل في البيانات الحساسة يجب أن يُسجل في سجل تدقيق مستقل.
- يجب التمييز بين الرصيد الفعلي Available Balance والرصيد الدفتري Ledger Balance والرصيد المحجوز Hold Balance.
ثالثًا: صمّم النموذج المفاهيمي Conceptual Model
قدّم وصفًا واضحًا للكيانات الرئيسية والعلاقات بينها، ويجب أن يشمل على الأقل:
- Customer
- Customer_KYC
- Branch
- Employee
- Role
- Permission
- Account
- Account_Type
- Account_Status
- Transaction
- Transaction_Type
- Transfer
- Ledger_Entry
- Journal_Batch
- Balance_Snapshot
- Hold_Amount
- Fee_Rule
- Currency
- Exchange_Rate
- Audit_Log
- Login_Audit
- Transaction_Error_Log
- Reconciliation_Batch
- Reconciliation_Item
- Notification_Outbox
- Idempotency_Key
- System_Parameter
اشرح وظيفة كل كيان، ولماذا هو ضروري في نظام مصرفي عالي الاعتمادية.
رابعًا: صمّم النموذج المنطقي Logical Data Model
أنشئ قائمة تفصيلية بالجداول، ويجب أن تضع لكل جدول:
1. اسم الجدول.
2. الغرض من الجدول.
3. الحقول الأساسية.
4. نوع البيانات المناسب في Oracle.
5. المفتاح الأساسي Primary Key.
6. المفاتيح الأجنبية Foreign Keys.
7. القيود Constraints.
8. الفهارس Indexes المقترحة.
9. قواعد التحقق Check Constraints.
10. ملاحظات الأداء والأمان.
خامسًا: قواعد تصميم المعاملات المالية
صمّم منطق المعاملات المالية وفق قواعد صارمة:
- لا يتم تحديث الرصيد منفصلًا عن تسجيل الحركة.
- كل معاملة يجب أن تكون داخل Transaction واحدة قابلة للالتزام Commit أو التراجع Rollback.
- كل تحويل يجب أن ينتج قيدين محاسبيين على الأقل: مدين ودائن.
- يجب منع Double Spending.
- يجب دعم Idempotency لمنع تكرار تنفيذ نفس التحويل عند إعادة إرسال الطلب.
- يجب التعامل مع حالات Pending وPosted وFailed وReversed وCancelled.
- يجب تسجيل سبب الفشل في جدول مستقل.
- يجب دعم عكس العملية Reversal دون حذف العملية الأصلية.
- لا يجوز حذف أي حركة مالية نهائيًا، بل يتم استخدام حالات Status وسجلات عكسية.
سادسًا: صمّم الجداول المحاسبية
أنشئ تصميمًا واضحًا لجداول القيود المحاسبية، بحيث يدعم:
- Journal Batch
- Ledger Entry
- Debit / Credit
- Posting Date
- Value Date
- Currency
- Exchange Rate
- Reference Number
- Source Transaction
- Branch
- Cost Center إن لزم
- User/System generated entries
يجب أن توضح كيف يتم التأكد من أن مجموع المدين يساوي مجموع الدائن لكل عملية مالية.
سابعًا: صمّم آلية الأرصدة
قدّم تصميمًا يفرّق بين:
- Ledger Balance
- Available Balance
- Hold Balance
- Pending Balance
- Daily Balance Snapshot
واشرح متى يتم تحديث كل نوع رصيد، وكيف يتم استخدامه في كشف الحساب والتسويات والمراجعة.
ثامنًا: صمّم الحماية والأمان
قدّم تصميمًا أمنيًا مناسبًا لـ Oracle Database، يشمل:
- Roles and Privileges
- Least Privilege Principle
- Transparent Data Encryption TDE للبيانات الحساسة
- Masking للبيانات الحساسة عند العرض
- Fine-Grained Auditing FGA
- Virtual Private Database VPD عند الحاجة
- Database Vault عند الحاجة
- فصل صلاحيات DBA عن صلاحيات التطبيق
- حماية بيانات العملاء وKYC
- تسجيل كل قراءة أو تعديل حساس
- سياسات كلمات المرور والجلسات
- منع الوصول المباشر للجداول الحساسة من التطبيقات إلا عبر Packages أو Views آمنة
تجنب الادعاء بالامتثال لأي معيار مصرفي محدد ما لم يتم تزويدك بالمعيار المطلوب. إذا احتجت إلى معيار مثل PCI DSS أو ISO 27001 أو تعليمات بنك مركزي، فاذكر أن التطبيق النهائي يحتاج إلى مراجعة امتثال متخصصة.
تاسعًا: صمّم التوافر العالي High Availability
اقترح معمارية Oracle عالية الاعتمادية تشمل:
- Oracle RAC عند الحاجة للتوافر العالي داخل مركز البيانات.
- Oracle Data Guard للتعافي من الكوارث.
- Standby Database.
- Backup Strategy باستخدام RMAN.
- Archivelog Mode.
- Point-in-Time Recovery.
- Flashback Database عند الحاجة.
- فصل بيئة الإنتاج عن الاختبار والتطوير.
- مراقبة الأداء والتنبيهات.
- خطة RTO وRPO افتراضية، مع توضيح أنها قابلة للتعديل حسب متطلبات المؤسسة.
عاشرًا: صمّم الأداء والفهارس
قدّم استراتيجية أداء تشمل:
- الفهارس المناسبة لجداول المعاملات.
- Partitioning لجداول الحركات المالية حسب التاريخ أو الفرع أو نوع الحركة عند الحاجة.
- Local Indexes وGlobal Indexes عند الحاجة.
- Materialized Views للتقارير الثقيلة فقط، وليس للمعاملات المباشرة.
- Avoiding Hot Blocks.
- Sequences أو Identity Columns بطريقة آمنة.
- Batch Processing للمصالحة والتقارير.
- فصل أحمال التقارير عن أحمال المعاملات إن أمكن.
- مراقبة Execution Plans.
- إرشادات استخدام Bind Variables.
- تجنب Full Table Scan على جداول الحركات الضخمة إلا عند التحليل المخطط له.
حادي عشر: صمّم إجراءات PL/SQL الأساسية
اقترح Packages وإجراءات مخزنة مثل:
- PKG_ACCOUNT
- PKG_TRANSACTION
- PKG_TRANSFER
- PKG_LEDGER
- PKG_AUDIT
- PKG_RECONCILIATION
- PKG_SECURITY
واكتب وصفًا لوظيفة كل Package، ثم قدّم أمثلة SQL/PLSQL أولية للإجراءات التالية:
1. إنشاء عميل.
2. إنشاء حساب.
3. تنفيذ إيداع.
4. تنفيذ سحب.
5. تنفيذ تحويل داخلي.
6. تسجيل قيد محاسبي.
7. عكس عملية مالية.
8. التحقق من مفتاح Idempotency.
9. تسجيل عملية تدقيق.
10. إنشاء كشف حساب لفترة محددة.
ثاني عشر: صمّم آلية التدقيق Audit
أنشئ نموذجًا قويًا لسجل التدقيق، ويجب أن يسجل:
- المستخدم.
- وقت العملية.
- نوع العملية.
- الجدول المتأثر.
- المفتاح الأساسي للسجل.
- القيم القديمة عند الحاجة.
- القيم الجديدة عند الحاجة.
- عنوان IP أو مصدر الطلب إن توفر.
- اسم التطبيق أو الخدمة.
- رقم الجلسة.
- سبب العملية.
- هل العملية تمت يدويًا أم آليًا.
ثالث عشر: صمّم آلية المصالحة Reconciliation
صمّم جداول وسير عمل للمصالحة بين:
- سجلات النظام الداخلي.
- القيود المحاسبية.
- ملفات أو سجلات الأنظمة الخارجية.
- التحويلات المعلقة.
- الفروقات المالية.
- العمليات المرفوضة أو الملغاة.
وضّح حالات المصالحة:
Matched
Unmatched
Partially Matched
Investigating
Resolved
رابع عشر: صمّم آلية الرسائل والتنبيهات
أضف جدول Notification_Outbox أو Event_Outbox لاستخدامه في إرسال التنبيهات دون التأثير على المعاملة المالية الأصلية، مع مراعاة:
- Outbox Pattern
- Retry Count
- Message Status
- Payload
- Created At
- Processed At
- Failure Reason
خامس عشر: أنشئ مخطط SQL أولي
بعد الشرح، أنشئ SQL DDL أولي لعدد من الجداول الأساسية، على الأقل:
- CUSTOMERS
- CUSTOMER_KYC
- BRANCHES
- ACCOUNTS
- ACCOUNT_TYPES
- TRANSACTIONS
- TRANSFERS
- LEDGER_ENTRIES
- JOURNAL_BATCHES
- BALANCE_SNAPSHOTS
- HOLD_AMOUNTS
- AUDIT_LOGS
- IDEMPOTENCY_KEYS
- RECONCILIATION_BATCHES
- RECONCILIATION_ITEMS
- NOTIFICATION_OUTBOX
يجب أن يكون SQL متوافقًا مع Oracle قدر الإمكان، وأن يستخدم:
- NUMBER
- VARCHAR2
- DATE أو TIMESTAMP
- CLOB عند الحاجة
- Constraints
- Primary Keys
- Foreign Keys
- Check Constraints
- Indexes
- Comments on Tables and Columns
سادس عشر: قدّم سيناريوهات تشغيل عملية
اكتب سيناريوهات واضحة توضّح كيف يعمل النظام في الحالات التالية:
1. فتح حساب جديد.
2. إيداع مبلغ.
3. سحب مبلغ.
4. تحويل داخلي بين حسابين.
5. فشل تحويل بسبب عدم كفاية الرصيد.
6. إعادة إرسال نفس طلب التحويل بسبب انقطاع الشبكة.
7. عكس عملية مالية بعد اكتشاف خطأ.
8. توليد كشف حساب.
9. تنفيذ مصالحة يومية.
10. استرجاع النظام بعد فشل قاعدة البيانات الأساسية.
سابع عشر: قدّم معايير الجودة والتحقق
في نهاية التصميم، أنشئ قائمة فحص Quality Checklist تشمل:
- سلامة العلاقات.
- سلامة القيود.
- سلامة المعاملات.
- منع التكرار.
- حماية البيانات.
- قابلية التدقيق.
- الأداء.
- التوافر العالي.
- التعافي.
- قابلية التوسع.
- سهولة الصيانة.
- قابلية التقارير.
- فصل الصلاحيات.
ثامن عشر: قواعد صارمة للإخراج
التزم بما يلي:
- لا تقدم تصميمًا سطحيًا.
- لا تختصر الجداول الحساسة.
- لا تفترض أن الرصيد مجرد رقم في جدول الحسابات فقط.
- لا تحذف الحركات المالية، بل استخدم العكس والتسوية.
- لا تخلط بين الرصيد الدفتري والرصيد المتاح.
- لا تكتب أكوادًا غير متوافقة مع Oracle إلا إذا وضحت ذلك.
- لا تستخدم أسماء غامضة للجداول أو الأعمدة.
- لا تقدم كلامًا تسويقيًا.
- استخدم لغة هندسية واضحة ودقيقة.
- ميّز بين المعلومة المؤكدة، والافتراض، والتوصية.
- عند الحاجة إلى معلومة حديثة أو خاصة بإصدار Oracle محدد، اطلب الرجوع إلى وثائق Oracle الرسمية الأحدث.
- إذا كان هناك أكثر من خيار معماري، قارن بينها ثم اختر الأنسب مع ذكر السبب.
تاسع عشر: صيغة الإخراج المطلوبة
قدّم الناتج النهائي بهذا الترتيب:
1. ملخص معماري للنظام.
2. الافتراضات التشغيلية.
3. النموذج المفاهيمي.
4. النموذج المنطقي.
5. الجداول التفصيلية.
6. العلاقات والقيود.
7. تصميم المعاملات المالية.
8. تصميم القيود المحاسبية.
9. تصميم الأرصدة.
10. تصميم الأمان.
11. تصميم التدقيق.
12. تصميم الأداء.
13. تصميم التوافر العالي والتعافي.
14. تصميم المصالحة.
15. تصميم Outbox للتنبيهات.
16. SQL DDL أولي.
17. أمثلة PL/SQL.
18. سيناريوهات تشغيل.
19. قائمة فحص الجودة.
20. توصيات تطوير لاحقة.
اكتب الناتج باللغة العربية الفصحى الأكاديمية التقنية، مع استخدام المصطلحات الإنجليزية المتخصصة عند الضرورة بين قوسين.
في منتصف العمل تذكّر أن هذا التصميم معد وفق بصمة كامل أبو سمرة – kamel3lom، وأن المطلوب قاعدة بيانات مصرفية عالية الاعتمادية لا مجرد جداول تقليدية.
ابدأ الآن بإنتاج التصميم الكامل مباشرة، ولا تسألني أسئلة إلا إذا كانت البيانات الضرورية غير كافية تمامًا. وإذا كانت بعض المعلومات ناقصة، ضع افتراضات واضحة ثم أكمل التصميم.
النهاية:
هذا البرومبت من إعداد كامل أبو سمرة – kamel3lom.
#Oracle#Database#BankingSystem#PromptEngineering#kamel3lom