22-03-18, 04:55 PM
جرب هذا الكود :
تعليق على موظوع الطاولات في المطعم وربط كل طاولة بجدول في قاعدة البيانات :
بالطريقة التي تستخدمها , لا يمكن أن أقول أنها طريقة خطأ, ولكن أعتبرها طريقة غير فعالة .
هناك تساؤل : ماذا لو قرر صاحب المطعم أن يقلل عدد الطاولات , والأهم ماذا لو قرر أن يزيد في عددهم, هل ستفتح قاعدة البيانات وتنشئ جدول جديد يخص الطاولة الجديدة, وحتى لو لم يحدث , لا تتم بهذة الطريقة .
تخيل بنك له 20 فرع , هل تعتقد أنه سيقوم بإنشاء 20 جدول لكل فرع جدول مختلف, طبعاً مستحيل , جميع العملاء يتم تخزين بياناتهم في جدول واحد حتى لو وصل عددهم إلى 40,000,000 أربعين مليون عميل, مهما كان الرقم
النصيحة إن أمكن تطبيقها : تصميم جدول واحد يخدم جميع الطاولات , إذا كنت ما زلت في مرحلة التطوير وتجد أنه يمكنك تغيير الطريقة , ستكون أكثر فاعلية وإنسجام ونسبت الأخطاء أقل بكثير.
حيث أنك ستتعامل مع جدول واحد فقط , وكل ما عليك هو تحديد رقم الطاولة في أي إجراء تريدة.
مثلاً جدول , تسمية الطاولات , وتظيف فيه عدد سجلات مساوي لعدد الطاولات , كل سجل يحمل رقم طاولة مختلف, ويمكن أن يكون هو المفتاح الأساسي, لا تحتاج إلى ترقيم تلقائي , وعندما تريد أن تتعامل مع طاولة معينة تمرر رقم الطاولة للإستعلام وسيتم الإجراء الذي تنوي القيام به, وإذا كانت هناك بيانات تسجل لكل طاولة , إستخدم جدول مختلف مرتبط برقم الطاولة ويخدم أيضاً جميع الطاولات.
وإذا قرر صاحب المطعم زيادة عدد الطاولات مثلاً , كل ما علية هو إضافة سجل جديد لهذة الطاولة.
مجرد نصيحة
كود :
daa = New OleDbDataAdapter("SELECT (select count(*) from TABLE_01) AS T1, (select count(*) from TABLE_02) AS T2, (select count(*) from TABLE_03) AS T3, (select count(*) from TABLE_04) AS T4,", cn)
daa.Fill(dtt)
Dim TableCount As Integer = 4 ' هنا يجب أن تحدد عدد الجداول الموجود في جملة الإستعلام , بمعنى آخر هذا هو عدد الحقول التي سترجع من هذا الإستعلام
Dim TotalRows As Integer = 0
Dim Msg As String = ""
For I As Integer = 0 To TableCount - 1
Msg &= "TABLE_0" & I + 1 & " Rows Count = "
If dtt.Rows(0)(I) IsNot DBNull.Value Then
TotalRows += dtt.Rows(0)(I)
Msg &= dtt.Rows(0)(I) & vbNewLine
Else
Msg &= 0 & vbNewLine
End If
Next
Msg = "Number of all rows = " & TotalRows & vbNewLine & "Details of the number of rows for each table : " & vbNewLine & Msg
MsgBox(Msg)بالطريقة التي تستخدمها , لا يمكن أن أقول أنها طريقة خطأ, ولكن أعتبرها طريقة غير فعالة .
هناك تساؤل : ماذا لو قرر صاحب المطعم أن يقلل عدد الطاولات , والأهم ماذا لو قرر أن يزيد في عددهم, هل ستفتح قاعدة البيانات وتنشئ جدول جديد يخص الطاولة الجديدة, وحتى لو لم يحدث , لا تتم بهذة الطريقة .
تخيل بنك له 20 فرع , هل تعتقد أنه سيقوم بإنشاء 20 جدول لكل فرع جدول مختلف, طبعاً مستحيل , جميع العملاء يتم تخزين بياناتهم في جدول واحد حتى لو وصل عددهم إلى 40,000,000 أربعين مليون عميل, مهما كان الرقم
النصيحة إن أمكن تطبيقها : تصميم جدول واحد يخدم جميع الطاولات , إذا كنت ما زلت في مرحلة التطوير وتجد أنه يمكنك تغيير الطريقة , ستكون أكثر فاعلية وإنسجام ونسبت الأخطاء أقل بكثير.
حيث أنك ستتعامل مع جدول واحد فقط , وكل ما عليك هو تحديد رقم الطاولة في أي إجراء تريدة.
مثلاً جدول , تسمية الطاولات , وتظيف فيه عدد سجلات مساوي لعدد الطاولات , كل سجل يحمل رقم طاولة مختلف, ويمكن أن يكون هو المفتاح الأساسي, لا تحتاج إلى ترقيم تلقائي , وعندما تريد أن تتعامل مع طاولة معينة تمرر رقم الطاولة للإستعلام وسيتم الإجراء الذي تنوي القيام به, وإذا كانت هناك بيانات تسجل لكل طاولة , إستخدم جدول مختلف مرتبط برقم الطاولة ويخدم أيضاً جميع الطاولات.
وإذا قرر صاحب المطعم زيادة عدد الطاولات مثلاً , كل ما علية هو إضافة سجل جديد لهذة الطاولة.
مجرد نصيحة
