صفحة 2 من 3 الأولىالأولى 1 23 الأخيرةالأخيرة
النتائج 11 إلى 20 من 21
الموضوع:

الاسس العلمية لقواعد البيانات - ابدأ من هنا... - الصفحة 2

الزوار من محركات البحث: 294 المشاهدات : 3346 الردود: 20
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #11
    من المشرفين القدامى
    تاريخ التسجيل: June-2010
    الجنس: ذكر
    المشاركات: 1,532 المواضيع: 46
    صوتيات: 10 سوالف عراقية: 0
    التقييم: 1295
    مزاجي: خايف
    أكلتي المفضلة: سبانخخخخخ
    موبايلي: GS3
    آخر نشاط: 1/October/2024
    الاتصال: إرسال رسالة عبر ICQ إلى نـــائل إرسال رسالة عبر AIM إلى نـــائل إرسال رسالة عبر MSN إلى نـــائل إرسال رسالة عبر Yahoo إلى نـــائل
    مرحبا،،،

    توقفنا عند السؤال التالي:

    ما هي المشكلة من تكرار إدخال البيانات؟

    الجواب: مشاكل جمة لا عد ولا حصر لها !!!!

    أهم هذه المشاكل:

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


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

    العالم الخطير السيد CODD والذي يعمل في شركة IBM قام في عام 1969 ميلادية بطرح أول نظرية تقوم بعلاج مشاكل قواعد البيانات المسطحة Flat وتم تسميتها قواعد البيانات العلاقية Relational Databases

    صدق أو لا تصدق، مازالت هذه النظرية هي المعمول بها في كافة برامج قواعد البيانات الموجودة في العالم الآن وطبعا من ضمنها الآكسس.

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

    إن القوانين التي وضعها هذا العالم (الذكي جدا طبعا) تم تبنيها من قبل الشركات العالمية وبدأت تنتج برامج تعتمد على هذه القوانين وتتيح هذه البرامج لمستخدميها بتصميم قواعد بيانات علاقية Relational ولصعوبة هذه القوانين يكفي أن تعلم عزيزي القارىء أن أفضل قاعدة بيانات تم تصميمها في العالم إلتزمت ب 8 قوانين فقط من 12 الأصلية !!!

    أي أن التطوير في برامج قواعد البيانات مثل أوراكل وآكسس وSQL وغيرها مازال قاصرا عن الوفاء بكل قوانين السيد CODD.

    قبل الخوض في قواعد البيانات من النوع العلاقي Relational نقول التالي:

    أن قواعد البيانات من النوع Relational تقول بحل كافة مشاكل قواعد البيانات المسطحة بل تؤدي إلى Integrity (مين يذكر هذا المصطلح؟) أفضل بكثير وتسهل عمليات تحديث وتطوير قاعدة البيانات.

    ولكن الثمن المقابل لهذا الميزات غير رخيص !!!!

    فقواعد البيانات من النوع العلاقي:

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

    لا يوجد نوع آخر لقواعد البيانات في العالم غير هذين النوعين:

    مسطح Flat ذي تكلفة منخفضة في التصميم وتكلفة مرتفعة في الصيانة والتطوير ويعاب عليه تكرار البيانات التي تؤدي إلى رفع تكلفة التخزين وبطىء البحث والإسترجاع والإستعلام وغيره.

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

    تحياتي،،،

  2. #12
    من المشرفين القدامى
    مرحبا،،،

    إذا كنت تريد عمل قاعدة بيانات:

    أنت المصمم لها
    أنت المستخدم لها
    أنت مدخل البيانات
    أنت من سيقوم بعمل إحصائيات وتقارير سريعة
    انت تحت ضغط الوقت والتكلفة

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

    Access
    FoxPro
    Dbase
    Clipper
    Microsoft SQL Server
    Oracle
    Sybase
    إلخ...

    كذلك يمكنك تنفيذ قاعدة بيانات مسطحة بإستخدام EXCEL بشرط أن يكون عدد السجلات صغير نسبيا مثل عدة آلآف.

    أما....

    إذا كان مدخل البيانات يختلف عنك بصفتك مصمم لقاعدة البيانات
    أو أن القاعدة ستستخدم من قبل آخرين -- تريد بيعها في السوق مثلا أو ربطها بموقع على الإنترنت
    أو أن لديك متسع من الوقت
    أو لديك فريق عمل

    أو ريد أن تصمم القاعدة وفق الأسس العلمية والصحيحة لقواعد البيانات فيجب أن تقوم بالتصميم على أسلوب Relational العلاقي وبتطبيق قوانين السيد CODD

    ماذا يقول مستر CODD وسنبسط هنا (من يريد القوانين الفعلية يطلبها لإرسالها له ولكنها بالأسف باللغة الإنجليزية وتتطلب إحترافا في الإنجليزية وفي قواعد البيانات لترجمتها) أرغب ممن سيطلبونها ألا يقزموا بترجمتها حتى لا يوقعوا من يقرأها باللغة العربية في متاهات نحن في غنى عنها.

    قلنا أننا سنبسط قوانين مستر CODD والتبسيط له قوانين أيضا حيث أرغب ممن يقرأ ألا يقوم بالعد للحصول على 12 قانون لأننا قد نبسط قانونا واحد بقوانين متعددة أبسط وأسهل.

    قبل الدخول في قوانين مستر CODD سأطرح قوانين مستر InternetMaster، بالمناسبة هذا هو محدثكم !!!

    لا تستخدم اللغة العربية في كل مما يلي:
    إسم قاعدة البيانات
    أسماء الجداول
    أسماء الحقول داخل الجداول
    أسماء الإستعلامات

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

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

    كل ما لدينا (حسب ما قلناه سابقا) جداول وإستعلامات فقط (حتى تاريخه طبعا) وهي كلها موجودة في الطبقة الثالثةز (من يتذكر الطبقة الثالثة؟) وأين توجد؟

    إنتهت قوانيني !! لنعود إلى مستر CODD

    ما هي قوانينه؟

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

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

    لا بد من تمييز كل سجل في الجدول بحقل مميز (ويفضل أن يكون حقلا واحدا فقط) ويسمى مفتاح الجدول. في الآكسس مثلا يسمى Primary Key

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

    لا يسمح لبيانات حقل المفتاح الرئيسي أن تكون فارغة أو غير معلومة.

    نستكمل بعد فنجان من القهوة.

    تحياتي،،،

  3. #13
    من المشرفين القدامى
    مرحبا،،،

    أعتذر لطول فنجان القهوة لإستقبالي بعض الضييوف، وحقيقة يبدو أن الضيف شعر بأني أهيم في عالم آخر "قواعد البيانات" وما ألذه من عالم !!!

    ما زلنا نبحر من السيد CODD في قوانية الخاصة بقواعد البيانات العلاقية:

    نفتح في الدفتر صفحة جديدة ونبري قلم رصاص وتعالو بنا نعيد تصميم قاعدة البيانات خطوة خطوة (على الورق طبعا) مع إعتبار لقوانين العالم CODD

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

    أريدك عزيزي القارىء الآن أن تركز معي بشدة:

    تخيل أن كل جدول من الجداول الثلاثة يحتوي على 500 حقل !!

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

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

    إتفقنا؟

    الآن ولأننا نعمل بأيدينا على الورق فلا يوجد أي داعي لهدر الوقت بالكتابة سندرج ثلاثة حقول فقط في كل جدول.

    في منتصف الصفحة نكتب (تصميم القاعدة على طريقة العلاقات)

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

    الجدول الثاني -- جدول الأطباء -- فيه ثلاثة حقول -- إسم الطبيب -- عمر الطبيب -- جنس الطبيب إلخ وينطبق عليه ما جاء في جدول المرضى.

    الجدول الثالث -- جدول العيادات -- فيه ثلاثة حقول -- إسم العيادة -- رقم الجناح -- رقم الطابق إلخ وينطبق عليه ما جاء في أعلاه.

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

    في أول الصفحة على اليمين أكتب:

    جدول المرضى:
    إسم المريض
    عمر المريض
    جنس المريض

    جدول الأطباء:
    إسم الطبيب
    عمر الطبيب
    جنس الطبيب

    جدول العيادات:
    إسم العيادة
    رقم الطابق
    رقم الجناح

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

    ما الذي فعلناه حتى الآن؟

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

    السيد CODD يقول أنه يتوجب أن يكون هناك حقل أساسي يتم من خلاله تمييز كل سجل من سجلات الجدول وهذا الحقل ليس موجود لدينا، لماذا؟

    لماذا لا يكون الحقل الأساسي في جدول المرضى هو إسم المريض مثلا؟ من يجيب؟
    لماذا لا يكون الحقل الأساسي في جدول الأطباء هو عمر الطبيب مثلا؟ من يجيب؟

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

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

    لا تستغرب أن تكون قاعدة البيانات التي تقوم بتصميمها بأكثر من لغة -- قد نتحدث عن هذا يوما ما -- موضوع متقدم جدا جدا.

    بناء على هذا القانون سنضيف حقلاً جديدا لكل جدول من الجداول الثلاثة السابقة:

    رقم المريض
    رقم الطبيب
    رقم العيادة

    صدقوني سأغضب بشدة من أي قارىء متابع معنا يقول لي سأجعل هذا الحقل Auto Number في الآكسس أو Identity في SQL !!!

    هذا خطأ فادح جدا جدا جدا، حذار من إستخدام Auto Number في الحقل الرئيسي للجدول، هذا للمراهقين في تصميم قواعد البيانات وليس للمحترفين.. هذا إستخداماته محدودة جدا مسموح بها في الجداول المساعدة Help Tables والتي سنتحدث عنها لاحقا.

    ماذا لدينا الآن؟

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

    نستكمل بإذن الحق تبارك وتعالى.

    تحياتي،،،

  4. #14
    من المشرفين القدامى
    رحبا،،،

    الآن صفحة جديدة بيضاء (في الدفتر) -- في منتصف الصفحة -- قاعدة بيانات الآباء والأبناء.

    دعك من المستوصف الآن.

    تريد ان تنشأ قاعدة بيانات توضح الأباء والأبناء في عائلتك. حسب قوانين CODD لدينا جدولين وكل جدول فيه مفتاح رئيسي.

    دعنا نتفق ...

    عندما أقول برامج قواعد بيانات فأنا أقصد آكسس وSQL وأوراكل وغيرها
    عندما أقول قاعدة بيانات فأنا أقصد تلك التي تقوم أنت بتصميمها بإستخدامك لأي من البرامج المشار إليها أعلاه.

    من يجيبني على السؤال التالي: هل قوانين CODD للبرامج أم للقواعد؟ بمعنى آخر هل هي لشركة ميكروسوفت حتى تعطينا برنامج آكسس جيد أم هذه القوانين لك أنت عند تصميمك لقاعدة البيانات؟

    الجواب: للإثنين معاً !!!!!!!!!!!

    ماذا يعني هذا؟ ببساطة وركز معي بشدة أنك عندما تضع حقلا أساسيا في جدول ما ثم تدخل قيمة متشابهة لسجلين مختلفين لن يسمح لك برنامج قواعد البيانات وسيظهر لك خطأ ينبهك أن مستر CODD سيزعل منك !!!!

    لدينا في هذا التمرين جدولين واحد للأباء والآخر للأبناء:

    جدول الآباء:
    رقم الأب -- حقل رئيسي
    إسم الأب
    عمر الأب

    جدول الأبناء:
    رقم الإبن -- حقل رئيسي
    إسم الإبن
    عمر الإبن

    الآن في صفحة جديدة إرسم جدولا بالمسطرة وقلم الرصاص (رجاء للمرة المليون على الورق) حتى نفهم سويا، وسمه جدول الآباء وأدخل البيانات التالية وهي مرتبة رقم الأب إسم الأب عمر الأب

    452 خالد سعيد أحمد 32
    567 سمير حسين الأحمدي 63
    901 محمد أحمد عبد القادر 36

    أجب عن الأسئلة التالية:

    ماذا يحدث عند إضافة سجل جديد في جدول الآباء بالبيانات التالية:
    871 سمير حسين الأحمدي 63 --- ماذا يحدث؟
    901 سامي مطلق الدوسري 51 -- ماذا يحدث؟

    من لم يعرف الإجابة أقترح عليه أن يبدأ مرحلة إعادة القراءة مرة أخرى بتركيز أعلى

    نجيب فيما بعد بإذن الحق تبارك وتعالى.

    تحياتي،،،

  5. #15
    من المشرفين القدامى
    مرحبا،،،

    ماذا يحدث عند إضافة سجل جديد في جدول الآباء بالبيانات التالية:
    871 سمير حسين الأحمدي 63 --- ماذا يحدث؟ لن يحدث شيئا سجل جديد لا غبار عليه حتى وإن تشابه الإسم (وهو خطأ أيضا) لكنه غير مهم حاليا -- لا تنس الهدف وهو تماسك قاعدة البيانات.

    901 سامي مطلق الدوسري 51 -- ماذا يحدث؟ هذا يخالف أحد قوانين مخترع قواعد البيانات العلاقية السيد CODD والذي ينص على منع بل إستحالة تكرار المفتاح الأساسي لأكثر من سجل واحد. السؤال البديهي لماذا يمنع من تكرار 901 في سجلين مختلفين؟ أو بعبارة أخرى، لماذا لا نستطيع تكرار بيانات المفتاح الأساسي؟ والآن نبدأ في التركيز مرة أخرى. ملاحظة -- إذا وجدت برنامج قاعدة بيانات (وانا أشك في هذا) يسمح للك بإضافة مثل هذا السجل أو يسمح لك بتكرار رقم الأب 901 فهذا البرنامج لا يمت إلى عائلة برامج قواعد البيانات بأي صلة، لكن إذا استخدمت برنامجا قديما صمم قبل 1970 ميلادية فقطعا سيسمح لك لأن كل برامج قواعد البيانات قبل هذا التاريخ كانت Flat.

    يستكمل معي ذووي الأقلام والبريات والذين كتبوا فقط !!!

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

    ما هو الهدف من قاعدة بيانات الآباء والأبناء؟
    هو الحصول على تقرير أساسي يتم فيه سرد الأبناء لكل أب نختاره، فمثلا عند إختيار سامي مطلق الدوسري من قاعدة البيانات تقوم القاعدة بسرد كل الأبناء اللذين يقولون لسامي (بابا).

    من يشعر معي أنه يوجد هناك مشكلة الآن؟ حيث أن كافة الأبناء موجودون في جدول مختلف .... ممممممممممم --- من هنا جاءت كلمة قواعد البيانات العلاقية، اي أن يوجد علاقة ما بين الجداول وهذا قانون من قوانين CODD.

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

    كلام كبير، ما يعني؟ للحصول على الأبناء التابعين لأب ما يتطلب الأمر إنشاء (علاقة) بين الجدولين.

    في جدول الآباء الحقول التالية:
    رقم الأب -- حقل رئيسي
    إسم الأب
    عمر الأب

    وفي جدولالأبناء يوجد الحقول التالية:
    رقم الإبن -- حقل رئيسي
    إسم الإبن
    عمر الإبن

    لنفترض أنه يوجد في جدول الأبناء 8 سجلات، كيف نعرف أن السجل الثالث هو أحد أبناء خالد سعيد أحمد الموجود في سجل الآباء؟؟

    نعود ونسأل مستر CODD، بعد تفكير عميق وبضعة فناجين من القهوة يرد علينا هذا العالم ويقول لنا ------ ركززززززززززززززززززززززز زززززز --- إستخدم (الحقل الغريب)؟؟؟

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

    ممممممممم

    الحقل الغريب Foreign Field
    ماهو؟

    الحقل الغريب هو:
    حقل لا يمت للجدول الذي ينشأ فيه بأية صلة -- لأنه غريب عن هذا الجدول؟
    لا يمكن أن يكون مفتاحا رئيسيا في الجدول الذي ينشأ فيه
    يجب أن يوجد ما يشابهه في جدول آخر
    يجب أن يكون مشابها ومطابقا ونسخة مقلدة بالظبط من الحقل الأساسي في الجدول الآخر

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

    أين المشكلة هل هي في جدول الآباء أم في جدول الأبناء؟
    الإستنتاج المنطقي أنها في جدول الأبناء لماذا؟
    لأن جدول الأبناء يسمى جدولا غير مستقر لماذا؟ لآنه يحتوي على بينات متماسكة وغير منتمية، ماذا يعني هذا؟ لنفكر قليلا.

    في جدول الأبناء 8 سجلات، إذا نظرنا إلى هذا الجدول نرى أنه متماسك ومتناغم ولكن تكمن مشكلته في انه لا يدلنا على من أب هذا وأب هذا.

    طالما أن المشكلة في جدول الأبناء إذا الحقل الغريب يجب أن يكون في جدول الأبناء؟

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

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

    من أين نأتي بهذا الحقل الغريب؟ الجواب هو أن الحقل الغريب موجود دائما وأبدا في الجدول الذي تريد أن تنشأ معه العلاقة.

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

    هذا الحقل هو رقم الأب من جدول الآباء.

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

    نصف موضوع التماسك يدور ويلف حول الحقل الغريب.

    أصبح جدول الأبناء كما يلي:
    رقم الإبن -- حقل رئيسي
    إسم الإبن
    عمر الإبن
    رقم الأب

    لنعد إلى شروط مستر CODD الحقل الغريب يجب أن يكون مطايقا ونسخة مشابهة لتلك الموجودة في الجدول الأساسي، أي لو كان رقم الأب في جدول الآباء عبارة عن 6 خانات وعلى هيئة أرقام فيجب أن يكون كذلك في جدول الأبناء.

    لاحظ الآن وبتركيز شديد أنك لو قمت بإضافة 8 سجلات في جدول الأبناء انك ستواجه حقلا غريبا موجودا في جدول الأبناء ويتوجب عليك أن تضع فيه بيانات حيث لا يمكن أن يكون فارغا.

    لنركز...

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

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

    وين الصاحيين معي؟؟؟!!! هيا للأجوبة على الأسئلة الثلاثة السابقة:

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

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

    السؤال الثالث سخيف؟ لا بد ان تستطيع الإجابة عليه!!! تغيير طول الحقل الغريب عما هو في الجدول الذي أستعير منه سيخلق مئات المشاكل.

    ==============

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

    إفتح الآكسس وقم بإنشاء قاعدة بيانات جديدة وسمها Family إتفقنا ساببقا أن كل التسميات باللغة الإنجليزية.

    قم بأنشاء جدول إسمه Fathers وبه الحقول التالية:
    FatherNum-- Text - 4 -- مفتاح رئيسي من نوع نص وبطول 4 خانات
    FatherName-Text
    FatherAge--Number

    نشط الحقل FatherNum وإجعله Primary Key أي مفتاحا رئيسيا بالضغط على المفتاح بشريط الأدوات، إحفظ الجدول وأغلقه.

    قم بأنشاء جدول إسمه Sons وبه الحقول التالية:
    SonNum-- Number -- مفتاح رئيسي
    SonName-Text
    SonAge--Numbe
    FatherNum -- Number -- هذا هو الحقل الغريب

    نشط الحقل SonNum وإجعله Primary Key أي مفتاحا رئيسيا بالضغط على المفتاح بشريط الأدوات، إحفظ الجدول وأغلقه.

    من يقول لي ما هو الخطأ الفادح في تصميم الجدولين السابقيين؟؟؟!!
    فكر قبل قراءة الجواب؟؟؟

    الجواب هو الحقل الغريب FatherNum في جدول الأبناء نوعه Number بينما في الجدول الذي أستعير منه هو Text بطول 4 خانات وهذا مخالف للأسس والقوانين.

    عد مرة أخرى وقم بتعديل الحقل الغريب في جدول الأبناء ليصبح على شكل Text وبطول 4 خانات.

    الآن إفتح جدول الأباء وادخل البيانات التالية في السجل الأول:
    أدخل الإسم فقط: محمد أحمد عبد الله ثم إنتقل للسجل الثاني، ماذا حدث؟؟ نعم ظهرت رسالة خطأ، ما هي هذه الرسالة ولماذا ظهرت؟ مين يجيب؟؟؟

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

    إسمح السجل الأول وقم بإضافة البيانات التالية:
    3000 محمد سعيد أحمد 42
    4000 خالد عبد الله الصيعري 61
    5000 سعيد محمد المالكي 32
    6000 طلال عبد العزيز المسبحي 29
    7000 سمير خالد الجار الله 46
    أحفظ الجدول.

    إفتح جدول لآبناء وأدخل السجل التالي:
    9400 خالد 9 -- إترك الحقل الغريب فارغاً

    ماذا حدث؟ مين يجيييييييييييييييييب؟؟؟ واااووووووووو لم يحدث شيء، ولكن هذا ينافي قواعد السيد CODD حيث يقول ان هناك شروط:
    لا يمكن للحقل الغريب أن يكون فارغا
    يجب أن يحتوي الحقل الغريب على قيمة موجودة في الجدول الذي أستعير منه

    ولكن لم يظهر خطأ، لماذا؟؟

    الجواب: لأننا لم نقم حتى تاريخه بإنشاء العلاقة بين الجدولين.

    نفعل هذا بعد بضعة دقائق بإذن الحق تبارك وتعالى.

    تحياتي،،،

  6. #16
    من المشرفين القدامى
    سؤال:
    انا لا اعرف اللغة الانكليزية كيف استطيع ان اتجاوز هذا الامر هل استطيع بكتابة رموز مثلا؟؟

    مرحبا،،،

    لا يشترط أن تكون الأسماء معروفة ولن يحبذ جدا لأن العملية مع مرور الوقت تتفاقم في التعقيد خذ مثال أنني وأنت قمنا بتصميم قاعدة بيانات وأسماء الجداول فيها A,B,C,... وهكذا.

    ماذا يحدث عندما تصبح قاعدة البيانات فيها 150 جدول؟
    كيف نفرق بين الجداول واحد أسمه A30 والآخر T09 والحقول فيها G8 و U9 العملية ستتعقد بشكل كبير جدا.

    ما هو الحل لمن لديه عوائق في اللغة الإنجليزية؟

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

    الثانية: إحصل على قاموس عربي-إنجليزي وليس العكس بحيث تبعث في القاموس بإستخدام الحروف العربية للحصول على المعاني باللغة الإنجليزية.

    الثالثة: إستخدم Microsoft Word الوورد الذي يأتي مع الأوفيس تحت قائمة الأدوات إختر اللغة ثم الترجمة، يمكنك إختيار الترجمة من اللغة العربية للإنجليزية ، بعد هذا إكتب كلمة (أب) مثلا ستحصل على ترجمتها Father، إفتح صفحة جديدة في الدفتر وأكتب الكلمة 10 أو 15 مرة وأحفظها عن ظهر قلب.

    إذا فعلت هذا يوميا مع 10 كلمات فقط، في نهاية الشهر سيكون لديك ما يقارب 300 كلمة إنجليزية........... صدقني في اللغة الإنجليزية وللإستخدامات المتعددة جدا لن تحتاج لأكثر من 1500 كلمة -- لغة ضحلة جدا أي أنه في بضعة شهور سيكون لديك مجموعة ضخمة من الكلمات الإنجليزية التي تكفيك لكل إحتياجات البرمجة والتصميم بل صدقني ستكون بعدها قادرا على قراءة الكثير من الصفحات باللغة الإنجليزية.


    تحياتي،،،

  7. #17

  8. #18
    من المشرفين القدامى
    نعود إلى الآباء والأبناء، وتعالو سويا نكتشف بعض ملذات قواعد البيانات.

    نلخص أولأ.

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

    للمرة المليون: ما هو المفتح الأساسي؟
    هو حقل يميز كل سجل في قاعدة البيانات ويمنع تكرار البيانات فيه لأكثر من سجل واحد ولا يسمح أن يكون فارغا.

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

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

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

    للإجابة نعود للمشكلة الأساسية --- ركز -- فكر معي -- هل يمكن أن يكون لإبن أكثر من أب واحد؟ الإجابة لا. إذا أول إستنتاج هو أنه لا يوجد لأي أبن أكثر من أب واحد، ويمكن أن يكون للأب أكثر من إبن أو لا يكون لديه أبناء على الإطلاق.

    الآن سأترك إجابة هذا السؤال لكم وأعود إليه مرة أخرى فيما بعد، السؤال مرة أخرى لماذا لا يكون الحقل الغريب هو مستعارا من جدول الأبناء ويوضع في جدول الآباء؟ أي عكس ما فعلنا حتى الآن.

    وصلنا أنه يوجد حقل غريب في جدول الأبناء إسمه FatherNum تم إستعارته من جدول الآباء، وقلنا أن أحد شروط قواعد البيانات هو أن الحقل الغريب لا يمكن أن يكون فارغا ومع ذلك عندما قمنا بإضافة السجل:

    9400 خالد 9 -- إترك الحقل الغريب فارغاً

    إلى جدول الأبناء لم يحدث أية مشاكل لماذا؟ لأن قاعدة البيانات حتى الآن لا تعرف أن هناك علاقة بين الجدولين، السؤال البديهي، كيف ننشىء هذه العلاقة.

    قبل أن تستمر إحذف كافة السجلات من جدول الأبناء؟!! أين الأذكياء؟ من يقول لماذا؟

    قاعدة عامة: ركز -- إكتب - إحفظ -- تأكد دائما أن الجداول كلها فارغة بدون سجلات قبل أن تقوم بإنشاء العلاقات.

    لا تمسح بيانات جدول الآباء حتى وإن كان هذا يعارض القاعدة السابقة !! سنقول فيما بعد لماذا؟

    لدينا الآن جدولين جدول الآباء وفيه خمس سجلات لأباء مختلفين، وجدول الأبناء ولا يوجد فيه أية بيانات.

    أقفل الجدولين ثم من قائمة Tools (أدوات) إختر Relationships (علاقات).

    سيظهر لك صفحة في الخلفية وقائمة فيها أسمي الجدولين :
    نشط الجدول الأول واضغط زر إضافة Add
    نشط الجدول الثاني واضغط زر إضافة Add
    إضغط زر اغلاق أو اقفال Close

    كبر الصفحة...

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

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

    سأعود إليك بعد قليل.

    تحياتي،،،

  9. #19
    من المشرفين القدامى
    مرحبا،،،

    ماذا تسمي الأبن الذي فقد أباه -------- صح --- يتيم !!!

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

    أمامك نافذة إسمها (تحرير العلاقات) وتكاد تكون أخطر وأهم نافذة على الإطلاق في برامج قواعد البيانات --- كل البرامج وليس الآكسس فقط.

    ماذا نرى في هذه النافذة؟

    قائمتين مظللتين لا تستطيع تغيرهما واحدة فيها Fathers أي جدول الآباء والأخرى Sons أي جدول الأبناء --- تحتهما مباشرة قائمة إذا ضغت عليها ترى سرد لكافة حقول كل جدول.

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

    فقط اكتب الجملة دون تنشيط للمربع ثم أضغط على زر إنشاء أو موافق.

    ما الذي حدث --- تم رسم خط بين الجدولين --- هذا الخط يعني أن هناك علاقة ما بين الجدولين.

    أقفل صفحة العلاقات وأجب بنعم اذا طلب منك الحفظ.

    افتح جدول الأبناء وادخل البيانات التالية:

    9500 خالد 12 --- إترك الحقل الغريب فارغا وانتقل لسجل جديد -- ماذا حدث؟

    لم يحدث شيء !!!!!!!!!! --- لماذا؟؟

    الآن أدخل السجل التالي:
    7500 سعيد 10 -- وفي الحقل الغريب ادخل 1500 ثم انتقل للسجل الثالث
    ماذا حدث؟ ظهر خطأ؟؟؟؟؟ لمااااااااااااااااااااااا ذا؟؟؟؟

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

    في المحاولة الثانية حدث خطأ لماذا؟ لأننا أدخلنا قيمة 1500 في الحقل الغريب وهذه القيمة غير موجودة لأي أب في جدول الآباء وهذا ممنوع في الحقول الغريبة، هل تذكر عندما قلنا أن القيمة في الحقل الغريب يجب أن تكون قيمة موجودة في الجدول الذي تم الإستعارة منه؟!!

    ارقام الآباء في جدول الآباء هي 3000 4000 5000 6000 7000 فقط، إذا أدخلت في جدول الأبناء أي قيمة غير القيم الخمس السابقة فلن تقبل القيمة --- جرب أية أرقام تريدها إستمر بالمحاولة.... لن تستطيع ولن يتم إدخال السجل إلا بقيمة من الخمس المذكورة، لماذا؟ لسبب بسيط جدا أنه هذه هي الطريقة التي يتعرف بها البرنامج على الآباء، فإذا أردت معرفة أب خالد تأخذ الرقم من الحقل الغريب وتذهب إلى جدول الآباء وهناك تبحث بهذا الرقم عن صاحبه للحصول على الأب.

    والعكس صحيح اذا اردنا أن نعرف من هم ابناء اي اب نبحث عن كافة الابناء الذين يحملون رقم الاب في الحقل الغريب.

    تحياتي،،،

  10. #20
    من المشرفين القدامى
    مرحبا،،،

    صح --- ماقلتموه صح -- لن يظهر الخطأ، تعالوا نصحح ونرتب أفكارنا سويا...

    وتعالو بنا أيضا نجيب على الأسئلة التي تركناها...

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

    لقد قمت بحذف العلاقة بين الجدولين -- سنقوم بإنشائها مرة أخرى بعد قليل.

    تركنا سؤالا في غاية الأهمية ... لماذا قمنا بإستعارة المفتاح الأساسي من جدول الآباء ووضعناه في جدول الأبناء كحقل غريب؟ لماذا لم نفعل العكس؟

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

    قم بحذف الحقل الغريب FatherNum من جدول الأبناء، قم بإضافة حقل غريب في جدول الآباء وهو SonNum تأكد أن الحقل SonNum في كلا الجدولين هو نص Text بطول 3 خانات.

    افتح جدول الآباء وتعال معي نضيف طفلين لهذا الأب:
    9000 أحمد مبارك الحربي 42
    لاحظ أن الحقل الغريب الآن هو رقم الإبن --- لنفترض أن معلومات الطفلين هي
    888 سعيد 7
    777 طارق 9

    بمعنى أنه سنضع في الحقل الغريب الرقم 888 لإضافة الطفل الأول إلى الأب أحمد ولا مشكلة في هذا-- قم بوضع 888 لإستكمال إدخال بيانات اول طفل لأحمد

    نريد إضافة الإبن الثاني !!!!!!!!! ووووووووووووووو -- بدأت المشاكل صح؟
    مشاكل بالكيلو لا عد لها ولا حساب:

    أولها نسف كل قوانين CODD وكل أسس قواعد البيانات العلاقية، انت الآن مضطر إلى تكرار بيانات وهذا ممنوع لأن أحد قوانين CODD هو عدم إخال نفس البيانات أكثر من مرة واحدة، ليس هذا فقط

    بل لن تستطيع عمل هذا على الإطلاق من يجيب لماذا؟
    صح --- لأنك مضطر إلى إدخال سجل برقم أب متكرر وهذا يتنافى مع قواعد المفتاح الرئيسي وعليه فإن الإبن ذو الرقم 777 لن يضاف إطلاقا وبهذا لن نستطيع أن نضيف أكثر من إبن واحد لكل أب وهذا غير منطقي.

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

    إترك السجل 9000 في جدول الآباء مع ابنه 888 وألغي ادخال 777 بالضغط على ESC في لوحة المفاتيح.

    إذا ....

    إستعارة الحقل من جدول الأبناء خطأ...

    قم بحذف الحقل SonNum من جدول الآباء، قم بإضافة حقل غريب في جدول الأبناء FatherNum وتأكد انه نص Text بطول 4 خانات.

    اضغط أدوات Tools ثم علاقات Relationships ثم أسحب الحقل FatherNum من جدول الآباء وألقه على FatherNum في جدول الأبناء لنعود إلى نافذة تحرير العلاقات.

    واضح أن معظم من معي في هذه الدروس لديهم آكسس بالعربي (وهذا مصيبة أخرى) ولكني سأتجاوزها الآن ونعود إليها فيما بعد !!!!

    تأكد أن الحقلين الموجودين هما FatherNum من كلا الجدولين، إن لم يكونا فقم بإختيارهما،، تعالو نتأمل في هذه النافذة (تحرير العلاقات)

    يوجد أربعة أزار --- يهمنا الزر نوع الربط Join Type إضغط على هذا الزر وتعال نقرأ ونفهم سويا...

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

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

    الإختيار الثالث: أظهر الآباء الذين لديهم أبناء وكذلك الأبناء بدون آباء

    مستر CODD عمل لنا زحمة --- صح؟

    لا تفقد الهدف، الهدف هو ليس إنشاء قاعدة بيانات !!! الهدف هو كيف نصنع قاعدة بيانات متماسكة ومتكاملة.

    إختر الإختيار الأول وخزن وأخرج من نافذة العلاقات.

    في جدول الأبناء أضف السجلات التالية:
    100 خالد 7 3000
    110 محمد 4 3000
    120 سعيد 9 4000
    130 طارق 12 4000
    140 أحمد 5 5000
    150 سمير 17 5000
    160 فهد 1 5000
    170 مشاري 3 9000
    180 صالح 9 -- إترك الحقل الغريب فارغا -- هذا يتيم بلغة قواعد البيانات
    190 ناصر 11 -- إترك الحقل الغريب فارغا

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

    اقفل الجدول وإنتقل إلى الإستعلامات Queries
    أنشأ إستعلام جديد بدون إستخدام المعالج --- كل المعالجات في الآكسس للمراهقين والمقلدين وليس للمحترفين !!!

    نشط كل جدول على حدة وإضغط إضافة ثم أغلق النافذة.

    لاحظ أن العلاقة ما زالت موجودة بين الجدولين

    انقر نقرا مزدوجا على الحقول التالية بالترتيب

    من جدول الآباء Fathers
    FatherNum
    FatherName

    من جدول الأبناء Sons
    SonNum
    SonName
    FatherNum

    الآن ركز --- إنقر نقرا مزدوجا على الخط المرسوم بين الجدولين ستظر لك نافذة عنوانها (خصائص الرابط)

    هل ترى الإختيارات الثلاثة --- نعم هي نفسها التي رأيناها في نافذة العلاقات.

    الآن جاء دوري للإستمتاع بفنجان القهوة الذي بين يدي وجاء وقتك أن تتعذب وتتألم،

    أنا سأستمتع بوقتي وبقهوتي وأنت ستقوم بتنفيذ الإستعلام ثلاث مرات، كل مرة تختار خاصية مختلفة من خصائص الرابط ومن ثم تقول لي ما هي الفروق.

    أريدك أن تصرف عدة دقائق على هذا الإستعلام وترى الفروق بين الخصائص

    لنعود إلى CODD، الإختيارات أو الخصائص الثلاث السابقة تسمي

    Inner Join الربط الداخلي
    Left Outer Join الربط الخارجي من اليسار
    Right Outer Join الربط الخارجي من اليمين

    طبعا ليس لها علاقة أن يظهر الجدول سواء في اليمين أو الشمال أوكي؟؟؟

    لاحظ أنه يضاف سهم صغير عند تغيير خصائص الرابط--- من يشرح لي معنى هذا السهم؟

    بعد أن تتأمل كثير وتفكر أكثر في الإختلافات بين الخصائص الثلاثة أريدك في الإستعلام أن تقوم بتنشيط الخط الواصل بين الجدولين في الإستعلام ومن ثم تقوم بحذفه بالضغط على زر Delete في لوحة المفاتيح --- نفذ الإستعلام وقل لي ماذا حدث !!! كيف حصلنا على 60 سجل وااااااااااااااااااااو --- سأفرح كثيرا إن أجاب أحد على هذا السؤال.

    إفتح الدفتر وسجل بلغتك وبطريقتك كل ما قلناه هنا..

    نعود بعد قليل بمشيئة الحق تبارك وتعالى..

    تحياتي،،،

صفحة 2 من 3 الأولىالأولى 1 23 الأخيرةالأخيرة
تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال