تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف تصمم قاعدة بيانات
#1



ساعطيك قاعدة اعمل بها وسوف تصمم بنيان تابث ومتين دائما فقط افهم الفكرة

بعد ان تدرس طلبات الزبون اجلس مع ورقة وقلم وقم بتجزئة المطلوب من حقول بعد ان تدرس طبيعة عملهم طبعا
يعني انك قابلت زبون له مخازن ويريد ان يجعل لها منظومة تحفظ الوارد والصادر
طبيعي جدا لابد وان تدرس نظام المخازن من شخص .
او على الاقل تأخد رؤوس العناوين .
اذا كان ليس بالامكان اطلب من الزبون ان يزودك بمجموعة من الفواتير ومجموعة من التقارير .
الزبون لا يفهم طبيعة عملك ولن يحدثك عن المورد مثلا ولكن سيتطرق لنقطة الاموال المدينة والدائنة التي عليه والتي له فهذا ما يهمه ولهذا هو احظرك
الفاتورة عندما ستلقي عليها نظرة ستعرف انت الحقول المطلوبة
ستجد لها رقم ولها اسم مورد او اسم عميل وتاريخها وتلفون العميل او المورد والعنوان والقيمة المدفوعة والاصناف وقيمتها 
واضح جدا لنا ما الحقول التي نحتاجها الان .
ستحتاج الى كم سؤال عادة وانت تشرب القهوة مع الزبون
اسأله مثلا هل لفواتير المورد ارقام متشابهة ام لا ...؟
اجد الكثير يبرمج احيانا منظومات تحفظ فواتير الموردين برقم تعريف لا يتشابه ابدا
وهذا خطاء لانه من الممكن ان تأتيك فاتورة من المورد عصام للغذائية برقم 00045 وتأتيك فاتورة من المورد اسلام لمواد البناء برقم 00045
عصام واسلام الاثنان لهم فاتورة برقم 45 وهذا طبيعي جدا لان كلاهما لا علاقة له بترقيم الاخر .
احيانا يلجاء البعض لترقيم فواتير الموردين بتسلسل خاص بالزبون وهناك حقل يحمل رقم فاتورة المورد لوحده وعندما يحفظها يكتب عليها بالقلم الرقم الذي حفظها به
شخصيا لا احبذ هذه الفكرة وارى ان تجعل رقم الفاتورة من الممكن ان يتكرر ولكن لا يتكرر اسم العميل
المفتاح الرئيسي لفاتورة الموردين المفترض ان يكون رقم التعريف مع رقم المورد ID+SupplayID
الان جدول الموردين والعملاء لانختلف عليه له الحقول التي نريدها وذكرناها
جدول الحركة الذي به فواتير الموردين والعملاء فيه رقم تعريف ورقم الفئة مثلا هل تتبع الكهربائية او المنزلية او اللاكترونية وهكذا
ورقم الصنف الخاص بالثلاجة والتلفزيون والغسالة وهكذا
لاحظ اقول ارقام وليس اسماء من الخطاء الشديد ان تستخدم الاسماء
ولدينا الكمية المباعة او المشتراة طبعا سعرها المفترض ان يكون بجدول الاصناف لا يجب ادراجه هنا 
من قواعد قواعد البيانات ان لا تكرر اي معلومة مرتين ، اي لا تحفظها بمكانين ابدا .
فقط يبقى سعر التخفيظ بحال اراد المستخدم تخفيض 50 دينار مثلا من سعر صنف ما .
بعدها المجموع وهذا يتم لحظيا وهو للقراءة فقط وللعرض فقط لا تخزنه كما ارى الكثير يفعلون
اذا كانت الفاتورة لها تاريخ سداد مؤجل اذا انت بحاجة انشاء حقل بتاريخ السداد ، وكلما شغلت المستخدم المنظومة تبحث بقاعدة البيانات عن تاريخ يساوي او اصغر من تاريخ اليوم فتنبهه الى ان هناك فواتير مستحقة الدفع .
بحال كان المورد او العميل له هاتفين مثلا يمكن جعلها في نفس الجدول بحقلين ولكن لو كان هناك اكثر من هاتف او كل فترة يغير رقم اجعل جدول فرعي لارقام الهواتف الذي يعمل منها والذي لا يعمل لا تحذف شيئا منها .
الكمية نلاحظ اننا وضعناها بجدول الحركة احذر ان تخزنها وتكررها بجدول الاصناف كما يفعل البعض 
انك عرضة للخطاء ولماذا تكرر بيانات يمكنك بسهولة ان تجدها بجدول الحركة
نلاحظ ان جدول الاصناف متربط بجدول الحركة وعليه لا تحذف ابدا اي صنف سبق ادراجه بجدول الحركة
لانك سوف تضيع اموالا عن طريق الخطاء .
هذا غير مسموح ابدا .
وكذلك لا يتم حذف عميل او مورد مرتبط بفاتورة ما ابدا .
القاعدة تقول اي بيانات وجدت نفسك سوف تخزنها بجدول بشكل متكرر تأكد تماما ان تكون بجدول مستقل وتحفظها رقم التعريف فقط
اي قيمة محفوظة بمكانين مختلفين وهي نفسها خطاء في تصميم قاعدة بياناتك .
اي قيمة او فهرس ربطته بحقل نصي بدل من رقمه هو خطاء مثل ان تجعل بجدول الحركة اسماء الاصناف وليس ارقامها .
ونلاحظ ايضا ان الفاتورة يجب ان تكون مقسومة الى نصفين
كل نصف بجدول
راس الفاتورة اتريخها ورقمها والمورد او العميل وغيرها بجدول والاصناف التي تتبعها بجدول
لانك لو وضعتهم بجدول واحد ستخالف القواعد التي تحدتنا عنها
ماذا ايضا .
هذا التحليل يعطيك فكرة عن طريقة التصميم .
والتي يجب استخدامها باي تصميم لقاعدة بيانات اخرى .
اذا تذكرت شيئا سوف اضيفه
وانا اكتب كان هناك الكثير الذي اريد ان اتحدث عنه واشعر انني نسيت شيئا
الرد }}}
#2
السلام عليكم و رحمة الله
جزاك الله خير ابو همام
عندي طلب بسيط من بعد امرك
حلو لو تم تطبيق هذه المعلومات المهمة بفيديو عملي
اعتقد ستكون فكرة رائعة
تحياتي لك
الرد }}}
تم الشكر بواسطة: viv , حريف برمجة , حريف برمجة , asemshahen5 , awidan76
#3
وعليكم السلام ورحمة الله وبركاته

ولايهمك غالي والطلب رخيص ، ما رأيك ان ننشئ قاعدة بيانات لهذا الغرض اعتقد ستكون افضل من الفيديو ايضا .
اختاروا اي قاعدة بيانات FireBird - Sqlite - Access وسوف نكمل خطوة بخطوة
الرد }}}
#4
(28-07-19, 10:27 PM)viv كتب : وعليكم السلام ورحمة الله وبركاته

ولايهمك غالي والطلب رخيص ، ما رأيك ان ننشئ قاعدة بيانات لهذا الغرض اعتقد ستكون افضل من الفيديو ايضا .
اختاروا اي قاعدة بيانات FireBird - Sqlite - Access وسوف نكمل خطوة بخطوة

لا
الفيديو ممتاز
انا اختار قاعدة بيانات FireBird
الرد }}}
تم الشكر بواسطة: viv , viv , sendbad100 , حريف برمجة , asemshahen5 , awidan76
#5
حسنا لنا لقاء فقط اريد ان اخرج لجلب بعض الخبز قبل ان تقفل المخابز واعود
الرد }}}
#6
السلام عليكم 

الله يعطيك العافية

مبادرة تشكر عليها 

افضل الاتي  عن تجربة عملية لمدة طويلة.

1- اي رقم لا تستخدمه في الحسابات  ضع له حقل نصي.

مثل رقم الفاتورة    او رقم الجوال 

2- لا تمنع تكرار رقم الفاتورة حتى لنفس المورد (يمكن اظهار رسالة تنبية ان هناك فاتورة بنفس الرقم سابقه ) في فاتورة المشتريات اقصد

3-بما ان الهدف افادة الاعضاء افضل استخدام  اكسس لانها متوفرة عند الجميع.

تحياتي لك
الرد }}}
#7
وعليكم السلام ورحمة الله
الله يحفظك اخ سندباد


إقتباس :1- اي رقم لا تستخدمه في الحسابات  ضع له حقل نصي.

مثل رقم الفاتورة    او رقم الجوال 

الحقل الرقمي اسرع في الفهرسة والبحث واقل استخدام لحيز في الذاكرة .

إقتباس :يمكن اظهار رسالة تنبية ان هناك فاتورة بنفس الرقم سابقه

اجل مع منع تكرار نفس الرقم لنفس المورد

إقتباس :ما ان الهدف افادة الاعضاء افضل استخدام  اكسس لانها متوفرة عند الجميع.

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

حملت برنامج Ashampoo Snap 10 وصار يتوقف عن العمل ولم ينفع .
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy , حريف برمجة , asemshahen5 , awidan76 , awidan76
#8
[/quote]
المشكلة التي واجهتني انني لم أنشئ دروس فيديو من قبل وحملت برنامج Snagit 11
ولكن لاحظت انه لا يعطي مجال لتحرير الفيديو ووضع ملاحظات نصية
حملت برنامج Ashampoo Snap 10 وصار يتوقف عن العمل ولم ينفع .
[/quote]
ابداً اخوي ابو همام اذا شايفين في صعوبة بالموضوع فلا بأس
القصد من الفيديو هو فقط الاستفادة من التطبيق العملي لا اكثر
انتم تفضلتم علينا بفيض من ود
فجزاكم الله خير اقولها من كل قلبي

(28-07-19, 10:53 PM)viv كتب : حسنا لنا لقاء فقط اريد ان اخرج لجلب بعض الخبز قبل ان تقفل المخابز واعود
عليكم بالعافية ، الله يديم النعمة
الرد }}}
تم الشكر بواسطة: حريف برمجة , sendbad100 , asemshahen5 , awidan76 , awidan76
#9
(29-07-19, 12:27 AM)viv كتب : وعليكم السلام ورحمة الله
الله يحفظك اخ سندباد


إقتباس :1- اي رقم لا تستخدمه في الحسابات  ضع له حقل نصي.

مثل رقم الفاتورة    او رقم الجوال 

الحقل الرقمي اسرع في الفهرسة والبحث واقل استخدام لحيز في الذاكرة .

انا معك  ولكن واجهتني بعض الشركات التي تضع حروف في رقم الفاتورة  كرمز للمنطقة او للفرع او لاشياء خاصة بهم.

ورقم الجوال او الهاتف قد يحتاج المستخدم ان يضع بجوارة ملحوظة او رقم اخر 
مثل (محمد المنزل  54288521121) 
في حال كانت شركة قد يحتاج المستخدم ان يضيف اسم  المندوب امام رقمه
مثل (المندوب / محمد 646165161) 
مثل المدير ابو همام (61315165353513)

انا دائم التفاعل مع عملائي بشكل قوي مما يجعلني اخذ منهم جميع مشاكلهم حتى البسيطة.

( لذلك اخذت  فكرة ان اي رقم لا يستخدم في الحسابات  يفضل ان يكون نصي )

إقتباس :يمكن اظهار رسالة تنبية ان هناك فاتورة بنفس الرقم سابقه

اجل مع منع تكرار نفس الرقم لنفس المورد

(اعطه تنبيه مع السماح باضافت نفس الرقم لنفس المورد)

السبب

1- ان بعض الموردين الصغار  يعيد ترقيم فواتيره قبل نهاية العام.  لانها يدوية واذا خلصت طبع جديد.

2- اذا البرنامج لا ياخذ بعين الاعتبار تاريخ العام (السنة ) قد تتكرر نفس الرقم الفاتورة  العام القادم .


إقتباس :بما ان الهدف افادة الاعضاء افضل استخدام  اكسس لانها متوفرة عند الجميع.

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

الله يعطيك الصحة والعافية اخي/ ابو همام
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#10
أمين واجمعين ولسائر بلاد المسلمين

حقيقة تصميم قاعدة بيانات لا يحتاج شرح فيديو بحسب رأيي وانما الى برنامج رسم بياني
ولكن لا بأس سوف نقوم بالتحليل معا وفي نهاية التحليل سنجد حل للفيديو 
بداية سنستخدم ACCESS وفي النهاية سنستخدم FIREBIRD 
ACCESS للشرح فقط ولا انصح بها للبرمجة لان الزبائن ينفرون منها ولانها غير موثوقة كما انها لا تدعم الاجراءات المخزنة او حتى بعد اوامر SQL مثل FULL JOIN مثلا
بداية لنتصور التصميم التالي :

   

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



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم