اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم جميعاً

لو كان عندي جدولين

ACCOUNT (account_no,balance,PIN,client_id,blocked)

TRANSACTION(account_no,date,time,type,amount)

لما يسحب من الرصيد لازم يحسب مجموع سحوباته في هذا اليوم بحيث لو كانت وصلت مبلغ معين يمنعه من السحب

Select AMOUNT from TRANSACTION where ((ACCOUNT_NO=something) and (DATE=today) and (TYPE=withdrawal))

بعدين يجمع ناتج هذا الاستعلام ويشيك (إلى الآن ماعندي مشكلة)

ولكن أيضاً قد يطلب الشخص إنه يشوف آخر عشرة عمليات بغض النظر عن نوعها(سحب, إيداع ,تحويل..)

شرح المشكلة:

لما في كل مرة ينفذ فيها الشخص عملية يروح يخزن في جدول TRANSACTION بيكون هذا الجدول كبير وبما إننا مانحتاج إلا آخر 10 فممكن نقول لو كان عدد العمليات الموجودة 10 وأضفنا عملية جديدة احذف أقدم عملية (كيف أسويها؟؟)

لكن بتظهر مشكلة السحب اليومي لأنه ممكن تنحذف سجلات خاصة بسحوبات اليوم وبالتالي لما أحسب مجموع السحوبات في هذا اليوم ممكن يكون بعضها قد انحذف

لحل ذلك فكرنا بإضافة خانتين لجدول ACCOUNT هما :

DAILY_WITHDRAWAL

LAST_DATE_WITHDRAWAL

وبالتالي فإنه كل مرة يسوي فيها سحب من الرصيد فإننا نشيك أولاً:

If (LAST_DATE_WITHDRAWAL= today) then
If (DAILY_WITHDRAWAL+value>something) then    
Msg(cannot)  
else    
DAILY_WITHDRAWAL =  DAILY_WITHDRAWAL  + value
BALANCE= BALANCE -value    
    End if
Else
  LAST_DATE_WITHDRAWAL=today
DAILY_WITHDRAWAL=value
BALANCE= BALANCE-value
End if

وبعدين بنحدث هذه الخانات

فكرنا نسوي كذا علشان بس نقلل من حجم القاعدة ومايصير فيها أشياء ما نستخدمها

هل هذه الطريقة جيدة؟ هل فيها عيب من عيوب تصميم قواعد البيانات؟ إذا لأ ياليت تساعدوني في كتابة الاستعلامات بطريقة صحيحة .. ونأسف للإطالة

ملاحظة: كل ماكتبته عبارة عن psudu-code وليست أكواد صحيحة

قام بنشر

أعمل كود يقوم بإختبار العمليات للعميل بموجب رقم العميل ويقوم ويحسب عدد العمليات التي أجراها هذا العميل بواسطة الدالة ( Dcount ) مقرونة برقم العميل وبتم الإختبار عند إجراء أي عملية من قبل العميل فكل ما تجاوز عشر عمليات يتم حذف أول عملية بواسطة الدالة ( DFirst ) مشروطة برقم العميل لكي تطمئن بأن البرنامج لا يحذف أي عمليات أخرى.

ما بالنسبة مشكلة السحب اليومي أن كنت تريد الإحتفاظ بسحوبات اليوم ولو تجاوزت عشر عمليات اضف لما سبق شرط أخر وهو التاريخ حتى لا يتم حذف أي عملية تمت من قبل العميل اليوم.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information