05-03-2010, 11:34 PM
السلام عليكم،
توجد بعض الأمور التي شخصيا لا أحبها عند التعامل مع قواعد البيانات،
ولن أتوسع في شرح الأسباب.
بسم الله نبدأ:
1- البارادوكس Paradox
وجدت أن اكسيس أفضل منها بكثير من حيث المتانة والاعتمادية والمرونة والسرعة.
2
- BDE
أو Borland Database Engine أي محرك بورلاند لقواعد البيانات، فهو ذو تصميم
قديم بمفاهيم قديمة، وسبق وأن تم الاعلان عن وقف الدعم له.
3- متحكمات البيانات Dataware controls أي كل المتحكمات التي تأتي تحت باب
Data Controls مثل DBEdit و DBGrid و DBLookupListBox ..إلى آخر القائمة.
هذه المتحكمات المقصود منها إيجاد رابط مباشر بين ما يحدث في قاعدة البيانات
وما يعرض على الشاشة للمستخدم، وهذا رائع بالفعل من حيث تسهيل البرمجة
وتصميم التطبيق بصريا وبسرعة. ولكن فقط عندما يكون التطبيق صغير الحجم ،
فإذا كبر التطبيق واستطرد فإن هذه المتحكمات ستكون شرا أكثر منها خيرا.
كيف ذلك؟
صعوبة السيطرة على التوليف=الكود لأنه سيكون أقل تنظيما بسبب توزعه على
مناولات الأحداث الخاصة بـ Dataset مثل BeforeInsert ، BeforeDelete .
وبالتالي مراجعة ومعاينة شروط الإدخال و العرض ستكون أصعب. أيضا، ستجد نفسك
مقيدا أكثر عند عمليات الترقية أو الصيانة أو المراجعة وإزالة الأعطال،
كما أن هذه المتحكمات تكون حساسة جدا أمام أي تغيير يتم على مستوى قاعدة
البيانات إذا تم تعديل حقل أو جدول.
أيضا فإن متحكمات البيانات سوف تتعارض مع مبادئ تصميم التطبيق بالمنحى
للكائن OOD، ومبادئ فصل العرض عن المنطقيات وعن خزن البيانات.
في فيجوال ستوديو 2005، تم استحداث أسلوب غير مباشر لربط متحكمات البيانات،
وذلك بربطها بكينونات objects من صنعك وتحدد لكل متحكم الكينونة التي
يتبعها والخاصية التي ترتبط به في تلك الكينونة، كما تحدد المنهجيات Methods
في هذه الكينونة التي تقوم بعمليات مناولة البيانات من جلب وتخزين وإلغاء.
فالمتحكمات هنا ليست مرتبطة ارتباطا مباشرا مع جداول قاعدة البيانات،
بل مع الكينونات التي تكون كوسيط بينها و بين جداول قاعدة البيانات.
هذا حل جميل، يسمح لك باعتماد المنحى للكائن وفصل عناصر التطبيق وإدخال
ما شئت من نقاط فحص وتحكم في البيانات، دون أن تخسر مزايا عرض البيانات آليا
من خلال هذه المتحكمات.
أتمنى أن أرى مثل هذا الحل في دلفي.
4- استخدام عمليات مثل: Edit و Addو Post و Filterو Indexالتي تكون
تابعة ل Dataset.
هذه عمليات من موروثات بدايات محركات قواعد البيانات المكتبية القديمة
مثل dBase وبارادوكس،التي تم تصميمها عل أساس أن البيانات موجودة في نفس
الجهاز الذي يحوي التطبيق، وأن المحركات لا تدعم مفاهيم SQL ، وعندما كان الربط
مع خوادم قواعد البيانات غير وارد.
أنا أفضل أن أختصر هذه الأمور وأتعامل مع البيانات مباشرة بواسطة جمل SQL
في كل عمليات مناولة البيانات.
5
- مكونات قواعد البيانات مرئية على النماذج forms في وقت التصميم حتى لو
كان نموذج Datamodule . إذا احتجت لأي مكون أقوم بإنشائه عبر التوليف
- في وحدة غير وحدة الفورم-، فيقوم بالوظيفة التي أردت له القيام بها ثم أقوم
بإتلافه بعد انتهاء الغرض منه.
هذه بعض مما لا أحب التعامل مع عند برمجة تطبيقات قواعد البيانات. قد يقول
القائل وما ذا تركت؟ لكن صدقوني كل تسهيل برمجي يتم تقديمه تكون مقابله قيود
أكثر على حرية حركتك.
عموما، أعلم أنه توجد الكثير من النقاط السابقة ينقصها التوضيح أو الاستفاضة،
كما أعلم أن الكثيرين قد لا يوافقونني على بعض ما قلته؛ لذا أتمنى تبادل الرأي والمناقشة.
توجد بعض الأمور التي شخصيا لا أحبها عند التعامل مع قواعد البيانات،
ولن أتوسع في شرح الأسباب.
بسم الله نبدأ:
1- البارادوكس Paradox
وجدت أن اكسيس أفضل منها بكثير من حيث المتانة والاعتمادية والمرونة والسرعة.
2
- BDE
أو Borland Database Engine أي محرك بورلاند لقواعد البيانات، فهو ذو تصميم
قديم بمفاهيم قديمة، وسبق وأن تم الاعلان عن وقف الدعم له.
3- متحكمات البيانات Dataware controls أي كل المتحكمات التي تأتي تحت باب
Data Controls مثل DBEdit و DBGrid و DBLookupListBox ..إلى آخر القائمة.
هذه المتحكمات المقصود منها إيجاد رابط مباشر بين ما يحدث في قاعدة البيانات
وما يعرض على الشاشة للمستخدم، وهذا رائع بالفعل من حيث تسهيل البرمجة
وتصميم التطبيق بصريا وبسرعة. ولكن فقط عندما يكون التطبيق صغير الحجم ،
فإذا كبر التطبيق واستطرد فإن هذه المتحكمات ستكون شرا أكثر منها خيرا.
كيف ذلك؟
صعوبة السيطرة على التوليف=الكود لأنه سيكون أقل تنظيما بسبب توزعه على
مناولات الأحداث الخاصة بـ Dataset مثل BeforeInsert ، BeforeDelete .
وبالتالي مراجعة ومعاينة شروط الإدخال و العرض ستكون أصعب. أيضا، ستجد نفسك
مقيدا أكثر عند عمليات الترقية أو الصيانة أو المراجعة وإزالة الأعطال،
كما أن هذه المتحكمات تكون حساسة جدا أمام أي تغيير يتم على مستوى قاعدة
البيانات إذا تم تعديل حقل أو جدول.
أيضا فإن متحكمات البيانات سوف تتعارض مع مبادئ تصميم التطبيق بالمنحى
للكائن OOD، ومبادئ فصل العرض عن المنطقيات وعن خزن البيانات.
في فيجوال ستوديو 2005، تم استحداث أسلوب غير مباشر لربط متحكمات البيانات،
وذلك بربطها بكينونات objects من صنعك وتحدد لكل متحكم الكينونة التي
يتبعها والخاصية التي ترتبط به في تلك الكينونة، كما تحدد المنهجيات Methods
في هذه الكينونة التي تقوم بعمليات مناولة البيانات من جلب وتخزين وإلغاء.
فالمتحكمات هنا ليست مرتبطة ارتباطا مباشرا مع جداول قاعدة البيانات،
بل مع الكينونات التي تكون كوسيط بينها و بين جداول قاعدة البيانات.
هذا حل جميل، يسمح لك باعتماد المنحى للكائن وفصل عناصر التطبيق وإدخال
ما شئت من نقاط فحص وتحكم في البيانات، دون أن تخسر مزايا عرض البيانات آليا
من خلال هذه المتحكمات.
أتمنى أن أرى مثل هذا الحل في دلفي.
4- استخدام عمليات مثل: Edit و Addو Post و Filterو Indexالتي تكون
تابعة ل Dataset.
هذه عمليات من موروثات بدايات محركات قواعد البيانات المكتبية القديمة
مثل dBase وبارادوكس،التي تم تصميمها عل أساس أن البيانات موجودة في نفس
الجهاز الذي يحوي التطبيق، وأن المحركات لا تدعم مفاهيم SQL ، وعندما كان الربط
مع خوادم قواعد البيانات غير وارد.
أنا أفضل أن أختصر هذه الأمور وأتعامل مع البيانات مباشرة بواسطة جمل SQL
في كل عمليات مناولة البيانات.
5
- مكونات قواعد البيانات مرئية على النماذج forms في وقت التصميم حتى لو
كان نموذج Datamodule . إذا احتجت لأي مكون أقوم بإنشائه عبر التوليف
- في وحدة غير وحدة الفورم-، فيقوم بالوظيفة التي أردت له القيام بها ثم أقوم
بإتلافه بعد انتهاء الغرض منه.
هذه بعض مما لا أحب التعامل مع عند برمجة تطبيقات قواعد البيانات. قد يقول
القائل وما ذا تركت؟ لكن صدقوني كل تسهيل برمجي يتم تقديمه تكون مقابله قيود
أكثر على حرية حركتك.
عموما، أعلم أنه توجد الكثير من النقاط السابقة ينقصها التوضيح أو الاستفاضة،
كما أعلم أن الكثيرين قد لا يوافقونني على بعض ما قلته؛ لذا أتمنى تبادل الرأي والمناقشة.
