أحمد مبارك الحيقي

مذكرات حول تصمبم قواعد البيانات وتطبيقاتها

364 ردود في هذا الموضوع

رقم الحلقة (42)

إضافة سجلات

من الواضح أن الاستعلام عن البيانات لا يتم إلا في وجود بيانات. في تطبيقات قواعد البيانات، تضاف البيانات باستمرار، وقد تعدل وتحذف، بخلاف عمليات الاستعلام من أجل استخلاص معلومات مفيدة. إضافة البيانات إلى قاعدة بيانات تتكون من جداول، تتم على أساس الصفوف. في كل مرة تضيف فيها بيانات جديدة إلى جدول، فإنك تضيف صفاً أو أكثر إلى هذا الجدول. قد تكون مجبراً على ملء كل أو بعض الحقول، وقد لا تكون مجبراً (في أسوأ حالات التصميم) إلى ملء أي حقل، لكن صفاً قد أضيف بقيم خالية. لا نتحدث هنا عن إضافة حقول إلى الجداول، لأن هذا يعني تعديل بنية الجدول، وهذه العملية تدخل ضمن ما يسمى (تعريف البيانات Data Definition)، وليس معالجة البيانات (Data Manipulation) التي نتحدث عنها.

توفر Jet SQL عبارة خاصة هي عبارة الأمر INSERT INTO من أجل إضافة السجلات إلى جدول. لهذه العبارة القدرة على إضافة سجل واحد أو أكثر من سجل مرة واحدة، ولهذا فإن لها شكلين:

  • واحد تحدد فيه القيم الجديدة يدوياً، ويستخدم لإضافة سجل واحد فقط في المرة الواحدة،
  • وشكل آخر يستخدم العبارة SELECT لإحضار صف أو أكثر من جدول (أو استعلام) آخر، يسمى المصدر، إلى الجدول (أو الاستعلام) الوجهة (نعم، يمكن أن تضيف إلى استعلام؛ إن كان الاستعلام مبنياً على أكثر من جدول، ولم تنس حقول المفاتيح الأساسية والأجنبية، فإن الصف ستتم إضافته إلى الحقول المناسبة في جداول الاستعلام).

دعنا الآن نر هذا الأمر وهو يعمل. من أجل إضافة صف واحد إلى جدول الموظفين، يمكن استخدام العبارة التالية:
 INSERT INTO tblEmployee (EmpNO, EmpName, EmpManager, EmpHireDate, EmpSal, EmpPhone, EmpDept) VALUES (9999, "AHMAD", NULL, #28/10/2009#, 3000, "0123034880", 50) 


لاحظ التالي:

  • بعد تحديد اسم الجدول، تم سرد كل حقول الجدول بين قوسين. هذا ليس ضرورياً إذا لم تكن عازماً على إدخال قيم في كل الحقول؛ يمكن فقط أن تحدد الحقول التي ستستقبل بيانات. طبعاً كل الحقول المفتاحية والمطلوبة يجب أن تكون من ضمن الحقول المحددة. في الحقيقة، هذا الجزء بين القوسين ليس ضرورياً إن كنت ستحدد قيماً لكل الحقول، بالترتيب الصحيح في الجزء التالي.
  • الجزء التالي ضروري، وهو الكلمة VALUES، وبعد ذلك بين قوسين، قيم كل الحقول المذكورة في الجزء السابق، أو قيم كل الحقول بالترتيب الصحيح في حالة عدم تحديد أسماء الحقول المطلوبة.
  • في حالة عدم وجود قيمة حاضرة لحقل ما، لاحظ كيف تم تحديد القيمة الخالية NULL للحقل.
  • القيم النصية تكتب بين علامتي تنصيص كالعادة، كذلك قيم التاريخ تحدد بين علامتي هاش #.

يصبح جدولنا بعد العبارة السابقة كالتالي:

post-70171-12597709722228_thumb.jpg

يمكن كذلك إضافة مجموعة من الصفوف إلى الجدول باستخدام الصيغة الثانية للعبارة INSERT INTO، وذلك باستخدام استعلام لجلب الصفوف المدخلة من جدول أو استعلام آخر. بافتراض أن هنالك جدول آخر (tblTemp) يحوي قيماً لأرقام وأسماء وأقسام موظفين، يمكن كتابة العبارة التالية لإضافة هؤلاء الموظفين إلى جدولنا:

 INSERT INTO tblEmployee ( EmpNo, EmpName, EmpDept ) SELECT EmpNo, EmpName, EmpDept FROM tblTemp 

بلغة الأكسس، يسمى هذا القسم من أقسام معالجة البيانات باستعلام الإلحاق Append Query.

تعديل السجلات

يستخدم الأمر UPDATE في عبارة خاصة من أجل تعديل بيانات موجودة في قاعدة البيانات. يسمى هذا النوع باستعلام التعديل Update Query. مثال بسيط يوضح كيفية استخدام هذه العبارة هو تعديل راتب آخر موظف قمنا بإضافته في المثال السابق. لنقم من باب التفاؤل بزيادة راتبه إلى 5000 مادام يعمل في قسم تقنية المعلومات:

UPDATE tblEmployee SET EmpSal = EmpSal + 2000 WHERE EmpNo = 9999

من المهم جداً بالطبع التنبه إلى تقييد التعديل بشرط، وإلا تم التعديل على كل صفوف الجدول (لن يكون المدير ممنوناً لك). كما ترى، بعد الأمر UPDATE تحدد اسم الجدول أو الاستعلام (أو الجداول كما سنرى بإذن الله قريباً) التي تريد تعديل بيانات فيها. بعد ذلك الأمر SET، ثم الحقول التي تريد تعديل قيمها مع القيم الجديدة. في حالة تعديل أكثر من حقل، افصل كل حقل مع قيمته الجديدة عن الآخر بفاصلة. لاحظ كيف قمنا بتعديل الراتب بإضافة 2000 إلى الراتب الحالي، كما قمنا بتحديد موظف بعينه بواسطة رقمه.

كمثال أوسع قليلاً، دعنا نجرب تعديل اسم قسم مع زيادة رواتب موظفيه في نفس الوقت في عبارة واحدة. أسماء الأقسام موجودة في جدول الأقسام، في حين أن رواتب الموظفين موجودة في جدول الموظفين. نحتاج كالعادة إلى الربط بين الجدولين، بواسطة حقل رقم القسم (مفتاح أساسي في جدول الأقسام، ومفتاح أجنبي في جدول الموظفين). لا نريد بطبيعة الحال تعديل كل صفوف الدولين، لذا سنختار فقط القسم رقم 50 (IT)، فنغير اسمه إلى (Information Technology)، ونزيد رواتب موظفيه بمقدار 500. لاحظ ان الصف المتأثر هو فقط صف واحد لأننا لا نملك إلا موظفاً واحداً في هذا القسم:

UPDATE tblDepartment INNER JOIN tblEmployee ON tblDepartment.dptNo=tblEmployee.EmpDept SET dptName = "Information Technology", EmpSal = EmpSal+500 WHERE dptNo=50 

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

حذف السجلات

حذف السجلات هي أسهل عمليات المعالجة. بسبب هذه السهولة وبسبب ما قد ينجم عنها من أثر وخيم (فقدان البيانات إلى الأبد) فهي من أخطر العمليات. ينبغي الاحتراز عند استخدام هذه العملية، كما ينبغي الاحتياط بأخذ نسخ احتياطية من البيانات بشكل دوري. صيغة عبارة الحذف مباشرة للغاية، وتحوي الأمر DELETE (كلمة معبرة)، مع اسم الجدول المراد حذف أحد صفوفه (أو أكثر)، ثم بالتأكيد أي شرط لتحديد الصف أو الصفوف المراد حذفها. لا تهمل شرط المقطع WHERE لأن ذلك يعني حذف كل صفوف الجدول. لأن الحذف يتم على مستوى صفوف كاملة، فإنك لا تحتج إلى تحديد أي حقول من أجل الحذف، كل الصف سيتم حذفه، وهذا يعني أنه من أجل حذف الموظف الذي قمنا بإضافته، وزيادة راتبه للتو (هذا المسكين)، يمكن ان نكتب التالي:

DELETE * FROM tblEmployee WHERE EmpNo = 9999

إذا أردت التخلص من قيمة محددة في حقل محدد (وليس من كامل الصف)، فإن بإمكانك بالطبع استخدام الأمر UPDATE مع تحديد قيمة الحقل بـNULL. كما قد تجدر الإشارة إلى أن الأمر DELETE يحذف البيانات من الجدول، ولا يحذف الجدول.

خاتمة

بهذه اللمحة السريعة على قسم معالجة البيانات من اللغة SQL أختم هذه الدورة. لست أنوي الخوض في قسم تعريف البيانات حالياً (ربما في جزء لاحق). لقد طالت هذه الدورة (السريعة) أكثر مما يجب، لكنني أرجو أن يكون ذلك قد أضاف شيئاً ما إلى المصادر العربية. المشكلة الكبيرة هنا أن هناك انعداماً تاماً في المردود (سلباً أو إيجاباً) من أجل معرفة أوجه القصور أو الجودة، ومن أجل الاستفادة من الأخطاء، أو توضيح الغامض أو تمديد المقتضب أو إيجاز المسهب. لكن تكرار ذلك أصبح بالفعل مملاً.

تم تعديل بواسطه أحمد مبارك الحيقي
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الأخ العزيز مالك،

أتفق معك فيما أشرت إليه، من جهة، هناك استخفاف بالتعليمات المرفقة مع أدوات التطوير ومترجمات اللغات، على غرار الاستخفاف بتعليمات البرامج التطبيقية والمنتجات الأخرى، لكن الناس يتجاهلون الفرق بين برنامج تستطيع استخدامه بالتجربة والاستكشاف، وبين وسيلة للتطوير والبرمجة تحتاج إلى معرفة تفاصيلها بصورة منهجية من أجل الاستخدام الصحيح دع عنك الاستخدام الأمثل، بل من أجل الاطلاع على وجود الوظائف المتاحة بالأساس.

كما أن حاجز اللغة قضية في غاية الأهمية. وأنا أرى دوماً أن من أهم العوامل التي تميز بين الطلاب، ثم المبرمجين عاملي اللغة (الإنجليزية)، والخلفية. ضعف اللغة يسلبك ليس فقط القدرة على الاطلاع على المراجع، بل القدرة على الفهم الصحيح للمراجع. في حالة كنت تعمل في هذا المجال، على الأقل في الوقت الحالي، أظن أن تنمية القدرة على القراءة بالإنجليزية من أولويات التعلم.

الأخ الكريم صايل،

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

الإخوة الكرام جميعاً متابعي هذه السلسلة، والمدير محمد ندا على رأسهم بالطبع:

أنا الآن أفكر في التوقف في هذا الموضوع بعد أن طال كثيراً لدرجة أن ملته النفوس، وأن أراجع ما سبق من أجل إخراجه (بالتعاون مع بعض الإخوان) بشكل كتاب، على أن يكون هذا خاتمة الجزء الأول من المذكرات، وربما أخرج دورة الSQL في جزء مستقل. ثم سأرى بإذن الله موضوعاً جديداً يكمل ما سبق (كجزء ثان)، وربما شرعت في موضوع جديد أرى أنه قد يفيد، ثم أعود لاستكمال المذكرات. ربما أقرر بإذن الله فيما بعد. أي مردود منكم هو على غاية من الترحيب.

أخوكم أحمد.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

نظامنا ومؤسساتنا ومجتمعنا العربي بحاجة ماسة إليكم وأمثالكم إذا أراد اللحاق بركب الحضارة.

عضو جديد مبهـــــــــــور

صايل عزام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاستاذ احمد الحيقي.

خاتمة

بهذه اللمحة السريعة على قسم معالجة البيانات من اللغة SQL أختم هذه الدورة. لست أنوي الخوض في قسم تعريف البيانات حالياً (ربما في جزء لاحق). لقد طالت هذه الدورة (السريعة) أكثر مما يجب، لكنني أرجو أن يكون ذلك قد أضاف شيئاً ما إلى المصادر العربية.

في نهاية هذة الدورة اريد اتقدم اليك بالشكر العميق , على كل هذة الدروس والمعلومات والتي من وجهة نظري, اضافت الكثير لمن يريد ان يتعلم قواعد البيانات بشكل علمي مبني على اساسيات لابد من معرفتها.

المشكلة الكبيرة هنا أن هناك انعداماً تاماً في المردود (سلباً أو إيجاباً) من أجل معرفة أوجه القصور أو الجودة، ومن أجل الاستفادة من الأخطاء، أو توضيح الغامض أو تمديد المقتضب أو إيجاز المسهب. لكن تكرار ذلك أصبح بالفعل مملاً.

اتمنى ان لايكون هذا هو السبب في انهاء الدورة , او ان يكون سبباً في عدم تقديم الجزء الثاني من هذه الدورة, استاذي العزيز في اعتقادي ان هذة الدروس ولو لم تلقى ما تستحق من تقدير كاف في الوقت الحالي الا ان ذلك لا يقلل من قيمتها او من فائدتها.بالتأكيد سوف تظل هذه المذكرات مرجعاً مهما .

أنا الآن أفكر في التوقف في هذا الموضوع بعد أن طال كثيراً لدرجة أن ملته النفوس، وأن أراجع ما سبق من أجل إخراجه (بالتعاون مع بعض الإخوان) بشكل كتاب، على أن يكون هذا خاتمة الجزء الأول من المذكرات، وربما أخرج دورة الSQL في جزء مستقل.

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

ثم سأرى بإذن الله موضوعاً جديداً يكمل ما سبق (كجزء ثان)، وربما شرعت في موضوع جديد أرى أنه قد يفيد، ثم أعود لاستكمال المذكرات. ربما أقرر بإذن الله فيما بعد. أي مردود منكم هو على غاية من الترحيب.

نحن منذ اللحظة في انتظار الجديد سواء كان استكمال الجزء الأول بجزء ثانً , او موضوع جديد , بالتاكيد ان ما سوف تكتبة لن يقل روعة عن ما قد قمت بكتابتة .

مع خالص التحية

مالك المقطري

تم تعديل بواسطه malekyem
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله الرحمن الرحيم

الأستاذ الفاضل / أحمد مبارك الحيقي

جزاك الله خيراً على الجهد الكبير المبذول فى إعداد هذه الدورة

والتى نتمنى من الله أن يجعلها فى ميزان حسناتك بإذن الله

وسواء أكانت هذه نهاية الدورة أم راحة مؤقتة (قصيرة / طويلة)؛ فأنت قد أسهمت فى تقديم الكثير من المفاهيم التى ستساعد الأخرين فى كيفية التعامل الصحيح مع قواعد البيانات بصفة عامة

جزاك الله خيراً مرة أخرى

وبالتوفيق لك فى الدنيا والآخرة

معتصم محمد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله الرحمن الرحيم

الإخوة الكرام جميعاً،

تم بحمد الله تجميع حلقات هذه السلسلة حتى تاريخه في كتاب يحتويه ملف PDF، بمناسبة اكتمال الجزء الأول من المذكرات. يتكون الكتاب من قمسين:

قسم يناقش مبادئ التحليل وتصميم قاعدة البيانات، ويضم في نهايته نقاش لتصميم جداول نظام مبيعات ومخازن.

قسم آخر مخصص للمقدمة إلى لغة SQL

كل مادة الكتاب هي من حلقات السلسلة هنا، مع حذف الردود، وبعض التنقيح... وهو مرفق مع هذه المشاركة

شكراً لكل الإخوة الذين شاركوا معي خلال ما يقل قليلاً عن الثمانية الأشهر الماضية... لقد سررت وتشرفت بالمشاركة معكم، وأرجو أن نستمر معاً في حلقات قادمة، وألا يكون هذا مجرد وقت مهدور بالنسبة لكم.

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

كذلك أشكر الأخ الكريم أبي رحمة لما بذله من جهد في تنقيح الحلقات (بطريقة أفضل في الحقيقة مما هو موجود في الكتاب)، لكنني حاولت مؤقتاً الحفاظ على ترتيب الحلقات كما هي في هذا الجزء على الأقل.

شكراً مرة أخرى للجميع بلا استثناء، وأرجو أن تكون هذه إضافة مفيدة للمصادر العربية...

في انتظار أي مردود من إخواني، والحمد لله...

أخوكم أحمد

مذكرات حول تصميم قواعد البيانات وتطبيقاتها.rar

6

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السادة المبرمجين بالمنتدى

السلام عليكم ورحمة الله وبركاته

الظاهر اننى وصلت متاخر قوى على السلسلة دىز

36 صفحة كاملة زززز عالعموم انا هبدأ النهاردة وربنا سهل بقى

عطعوط

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا لك والله يعطيك العافية

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك على ما قدمت في هذه السلسلة الجميلة والمفيدة

ونسئل الله العلي القدير ان ينفع بها الجميع ويرزقك من حيث لا تحتسب ويثيبك عليها

ودمت بخير وصحة وسلام .. وإلى الأماام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

جزاك الله خيرا وتمنياتى لك ولادارة المنتدى وجميع المشرفين وجميع الاعضاء بالتوفيق باذن الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سلمت يداك أخي

أحمد مبارك الحيقي

عن جد موضوعك جميل وأنا فعلاً محتاج أتعلم كيفية التصميم قبل البدء في المشروع

لكن فضلاً وليس أمراً لو تتكرم بوضع صور أو فيديوا يوضح لنا أكثر خطواتك

من وجه نظري لو تعمل ملفات فيديوا تختصر عليك كتابات كثيرة بحيث أن الصوت والصورة أبلغ من الكلام بكثير

وشُكراً لأنك أثرت موضوع مثل هذا

ونحن نتابع حلقة هذا الموضوع بإستمرار وإشتياق

ولك مني أجمل تحية

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

كيف حالك استاذي وخبيرنا احمد مبارك الحيقي

اسف على عدم متابعة الدروس واحتجت الى ثلاث ايام لارجع واقراء ما فاتني وحاب اعلق على الاتي

اولا ما كنت اعرف انه فيه شي اسمه استعلام فرعي ههههههههههه شي جديد علي وفعلا ممكن اتكون هناك طلبات من مستخدمي البرامج وممكن اتكون غريبه او ملحة بس اشلون نعملها الحين عرفت بعضها من شرحك

ثانيا الدوال بصراحة استفد كثير منها وشرحك بالنسبة للامثله المطروحه واضح بس شلك ما قلت يبيله اقراه اكثر من مره علشان استوعب البيانات وكنت اتمنى انك تشرح جميع الدوال هههههههههههههههه علشان يكون

مرجع لنا بس ما نبي انثقل عليك اكثر من جذيه المشكله في صعوبة العثور على المراجع باللغة العربية مع الامثله لها شكل ما قلت استاذي اللغة قد تكون عائق حيث المطلوب ليس فقط اللغة كمحادثة وقراءة عادية

بل الامام بمصطلحات خاصة مهمه في هذا المجال حتى يسهل الفهم وحاولت اطبق فكرة الذهاب الى محرر الفيجوال بيسك لكن المشكله الشرح كان باللغة الانجليزية الله المستعان انجرب قوقل في هذا الامر

ثالثا مشكور على كتاب السلسلة وايد منسق وحلو وان شاء الله يكون في ميزان حسناتك واسمح لنا على القصور وعدم متابعة السلسلة

وان شاء الله انشوف دروس اخرى منك استاذي

المشكله انا درسنا قواعد البيانات بالتجربة وقراءة بعض الكتب ولم ناخذها دراسة بطريقة منهجية من الاساس علشان جذيه اشياء كثير اتفوتنا

رحم الله والديك وجزاك الله الف خير وسلمت يدك ونفع الله بعملك الجميع

اخوك محمد المسيفري

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أريد أحد أعضاء المنتدى مساعدتي صارلي 5 أيام من تسجيلي في المنتدى ولكن حسابي ما راضي يتفعل ما قادر أشارك في أي منتدى أرجو مساعدتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

وصلت متأخر جدا ًً و حصلت على الاستفادة من جميع الأعضاء و بالأخص (الأستاذ/ احمد مبارك و وهو مبارك بمعنى الكلمة و الأستاذ القدير محمد ندا مدير السلسة) و جعل اجر هذة السلسة في ميزان الجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .