اذهب الي المحتوي
أوفيسنا

هل تريد ان تصمم قاعدة بيانات كاملة؟؟؟


osama ababneh

الردود الموصى بها

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

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

سيتم تقسيم هذا الشرح الى عدة اقسام وهي:

1 – قواعد عامة

2- الجداول والروابط والاستعلامات

3 – النماذج والوحدات النمطية (الكود)

4 – التقارير

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

قواعد عامة

1- عليك التفكير بمخرجات البرنامج أي التقارير المطلوبة من البرنامج قبل ان تفكر بما هي الجداول المطلوبة او النماذج وهذه تعتبر أول خطوة في البدء بتصميم برنامجك بشكل سليم

2- عليك التفكير بشكل كبير بمستخدم البرنامج ووضع جميع الاحتمالات التي ممكن ان يكون نوع المستخدم فيها.... فليس كل الناس متشابهين في القدرات وليس كلهم يفكرون بنفس طريقتك

3- حاول ان تستخدم رموز معينة اثناء تسمية الجداو او الاستعلامات لتمييزها فيما بعد فمثلا لتسمية الجداول استخدم رمز(Tbl)قبل اسم ايجدول وفي الاستعلامات رمز(Qry) وبالتالي تستطيع تمييز الجدول من الاستعلام عندما تكثر الجداول والاستعلامات واليك هذه الامثلة:

Employees = TblEmployees = QryEmployees

Salaries = TblSalaries = QrySalaries

4- لا تستخدم اللغة العربية في برنامجك وخصوصا الجداول مع اعتزازنا الشديد بلغتنا الام ولكن في البرمجة ستؤدي الى ارهاقك كثيرا ويمكنك تسمية الحقول باسمها بالعربي ولكن بالحروف الانجليزية مثلا Mouadhaf= موظف ....... وهكذا.

5- عند استخدامك للغة الانجليزية ابتعد عن استخدام اسماء محجوزة مثلا في التاريخ لا تسمي الحقل Date فيمكنك ان تضيف لها رمز ومثلا SC في البداية لتصبح ScDate

6- لا تستخدم الفراغات في التسمية مثلا Sc date ولكن يمكنك ان تصيغها بالشكل Sc_date او ScDate

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

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

وصايا حول الموضوع لاستاذنا العزيز رضوان

http://www.officena.net/ib/index.php?showtopic=13598

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

تم تعديل بواسطه osama ababneh
رابط هذا التعليق
شارك

أخي العزيز أسامة :

في البداية أود أن أشكرك على هذا الجهد و بارك الله بك .

و إذا سمحت لي ، فلي مداخلة صغيرة حول موضوع القواعد العامة و هي الإاضفة التالية :

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

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

3- أقترح قبل البدء بالشرح عن الجداول البدء بموضوع هام و هي أنواع البيانات ( Text,Number, Date,...) و تصنيفاتها كونها ستشكل بداية جيدة في مثل هذه الموضوعات ( طبعاً هذا بعد إذنك )

و الله المستعان ، ،، ،

رابط هذا التعليق
شارك

اخي العزيز ابو سليم

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

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

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

رابط هذا التعليق
شارك

الجداول

لاحظت مؤخرا ان اغلب الاستفسارات والمشاكل التي تطرح في المنتدى سببها الجداول والعلاقات والاستعلامات أي بناء قاعدة البيانات

قواعد عامة

1 لا تستخدم اللغة العربية في تسمية الحقول او الجداول نفسها لان ذلك سيرهقك في المراحل اللاحقة

2 لا تضع أي عمليات حسابية في الجداول (مثلا حقل للمجموع) يحسب آليا

اخواني هناك انواع من قواعد البيانات وهي:

1. قاعدة بيانات المسطحة

2. قواعد البيانات العلائقية

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

النتيجة << طبعا ستختلف طريقة ادخال البيانات من شخص لاخر مثلا في حقل المرحلة الدراسية في جدول الطلاب سيتم ادخال المرحلة كما يلي الأول,الاول,اول,الأولى.... وهكذا وعندها ستجد ان مراحل الدراسة اصبحت 50 مرحلة وليس 12 فقط لان الكمبيوتر يأخذ كل قيمة على انها قيمة مستقلة ولن يفهم ان هذه العبارات كلها لها نفس المعنى .

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

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

بسبب عقم هذا النوع في الكثير من الحالات ضهرت لدينا قواعد البيانات العلائقية والتي يتضح من اسمها أنها ذات علاقات مع بعضها (مرتبطة ببعضها) وكل الشرح اللاحق سيكون على هذا النوع

وهذه قواعدها العامة والتي يجب اللتزام بها عند تصميم جدول

1 يجب ان تضع مفتاح اساسي في كل جدول لكي يتميز كل سجل برقم فريد

2 افصل البيانات المتشابهه في جدول مستقل (كل مجموعة في جدول) مثلا في قاعدة بيانات المدرسة جدول للجنسيات , واخر للمراحل .... وهكذا

3 لا تقوم بإضافة حقل يظهر فية ناتج عملية حسابية معينة لان الجداول للادخال وليس لعرض النتائج

4 لا تستخدم حقل التسميات (الحروف) كمفتاح اساسي وانما اجعلة ارقاما مثلا ان تستخدم اسم الطالب في جدول الطلاب ,وانما اضف حقل لرقم الطالب واجعلة المفتاح الاساسي

5 اذا كان احد الحقول يحتوي على احد خيارين او ثلاثة مثلا الجنس (ذكر , انثى) ليس بالضرورة ان تصمم جدول جديد لها وانما تحدد المدخل باختيار احد القيم (ذكر او انثى) من نفس الخلية

وبناء على طلب اخينا ابو سليم سيتم التطرق الى نوع البيانات لكل صف

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

1 نص ومن الاسم يضهر لنا انه نص وفي العادة يكون طول النص في الخصائص 50 حرف وبامكانك ان تجعلة 255 حرف ويستخدم لادخال النصوص (حروف وارقام ورموز ....)

2 مذكرة وتستطيع ان تدخل فيها نص ولكنك غير مقيد بطول معين

3 رقم وتستطيع فيها ادخال الارقام فقط وغير مسموح ادخال الاحرف

4 تاريخ /\وقت وهي للتاريخ والوقت

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

6 كائن OLE ويستخدم لادراج كائن في الجدول مثلا ملف اكسل او صورة او صوت او .......

7 ارتباط تشعيبي وهو لاضافة ارتباط تشعيبي والكل اعتقد يعرف الارتباط التشعيبي مثلا ان تضع فية موقع www.officena.netوعند النقر يقوم بالذهاب الى الموقع

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

ولتسهيل ذلك اليكم هذا المثال المستمد من حياة كل واحد منا

الكل منا لدية أب Father وكل اب ممكن ان يكون لدية ابن او اكثر

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

1 – الجدول الاول باسم (TblFathers) ويحتوي على

• FatherNum ونوعة نص وحجمة 6

• FatherName ونوعة نص وحجمة 200

2- الجدول الثاني واسمة (TblSuns) ويحتوي على

• SunNum ونوعة نص وحجمة 6

• SunName ونوعة نص وحجمة 20

• SunSex ونوعة نص وطولة 10

واليكم هذه البيانات

FatherName==FatherNum

000001==نصر حامد امين

000002==عبد الرزاق محمد ابراهيم

000003==احمد رامي محمد

000004==محمد محمود محمد

000005==ايمن محمد راغب

000006==عمار محمد محمود

000007==ضيف الله محمد عزام

000008==موسى صالح محمد

000009==خلدون محمد خلاطي

000010==وليد خلف علي

SunSex ==SunName ==SunNum

000001 ===بيان ======انثى

000002 ===ناصر ======ذكر

000003 ===ريان ======ذكر

000004 ===عبد الرحمن ===ذكر

000005 ===محمد ======ذكر

000006 ===عمر ======ذكر

000007 ===علي ======ذكر

000008 ===بادي ======ذكر

000009 ===منى ======انثى

000010 ===ولاء ======انثى

000011 ===ماجد ======ذكر

000012 ===روان ======انثى

000013 ===مي ======انثى

000014 ===نيبال ======انثى

000015 ===يوسف ======ذكر

حيث سنستخدم هذا المثال في معظم الشرح اللاحق وقد وضعته لكم في المرفقات لتسهيل الامر واي استفسار او شيئ غامض ساحاول الاجابة علية بمشيئة الله

اكرر رجائي الى الاخوان تصويب اي خطأ ورد او سيرد والتكرم بالمشاركة بالملاحظات واي معلومة ترونها مفيدة ولكم جزيل الشكر

F_S.rar

رابط هذا التعليق
شارك

أخي العزيز أسامة :

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

مع جزيل شكري و إحترامي لك ...

أخوك ابو سليم ، ، ،

رابط هذا التعليق
شارك

تكملة الجداول

لغاية الان لدينا بيانات لا معنى لها ولا نعرف ما ذا تعني ولكن توجد علاقات بين افرادها حيث ان افراد الجدول Suns هم ابناء الافراد في جدول Fathers ولكن كيف سنعرف من ابن من ومن اب لمن؟؟؟؟؟؟؟

لمعرفة هذا الشيئ لا بد ان نضيف حقل الى احد الجدولين ليبين العلاقة بينهم والتساؤل الان اين نضيف هذا الحقل؟؟؟ وما هو هذا الحقل؟؟؟

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

شروط الحقل الغريب:

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

2.يجب ان يحمل نفس خصائص الحقل الاصلي (نوع البيانات وحجم الحقل..)

3.لا يجب ان يكون فارغ لانه سيؤدي الى وجود ايتام في الجدول

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

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

2.غير القيمة مصدر الصف من جدول\استعلام الى قائمة القيم

3.مقابل مصدر الصف ضع "ذكر";"انثى"

4.مقابل التزام بالقائمة اختر نعم

بهذه الطريقة حددنا المدخل باختيار احدى القيمتين فقط ومنعناه من الاجتهاد والخطا وتدمير قاعدة البيانات

الان نعود الى المثال ونضيف هذا الحقل في جدول الابناء ويصبح الجدول كالاتي

SunNum== SunSex==SunName==FatherNum

000001=== 000001=== بيان=== انثى

000002=== 000003=== ناصر=== ذكر

000003=== 000002=== ريان=== ذكر

000004=== 000007=== عبد الرحمن==ذكر

000005=== 000006=== محمد=== ذكر

000006=== 000004=== عمر=== ذكر

000007=== 000009=== علي=== ذكر

000008=== 000010=== بادي=== ذكر

000009=== 000008=== منى=== انثى

000010=== 000003=== ولاء=== انثى

000011=== 000002=== ماجد=== ذكر

000012=== 000003=== روان=== انثى

000013=== 000009=== مي=== انثى

000014=== 000010=== نيبال=== انثى

000015=== 000002=== يوسف=== ذكر

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

الان كيف سننشئ العلاقة بين الجدولين؟؟؟

العلاقات

هناك ثلاثة انواع من العلاقات وهي

1.علاقات من نوع ا إلى متعدد

2.علاقات من نوع ا إلى 1

3.علاقات من نوع متعدد إلى متعدد

لمزيد من المعلومات انظر الى شرح أستاذنا محمد طاهر

http://www.officena.net/Tips/Access-Relations.htm

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

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

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

معنى ذلك انه لدينا جدول جديد وهو جدول الالعاب (TblGames) ويحتوي على:

1.GameNum = نص= طولة 2

2.SunNum = نص= طولة 6 لانة الحقل الغريب ويجب ان يكون بنفس مواصفات الحقل الاصلي

3.GameName = نص = طوله 50

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

ارجع واحذف الحقل الغريب لان مكانة ليس هنا

GameNum==GameName

01===اللعبة 1

02===اللعبة 2

03===اللعبة 3

04===اللعبة 4

05===اللعبة 5

هل الحل هو ان يكون الحقل الغريب في جدول الابناء ؟؟؟ .... طبعا لا

لاننا اذا وضعناه في جدول الابناء سيكون

الان ما هو نوع العلاقة بين جدول الابناء وجدول الالعاب؟؟؟؟

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

انشئ جدول جديد اسمة TblSunGame وفية

1. SunNum = نص = طولة 6

2. =GameNum نص = طولة 2

الان كيف نضع المفتاح الاساسي ؟؟؟ هنا نستخدم مفتاحين اساسيين وليس واحد وذلك عن طريق تضليل الحقلين معا والضغط على مفتاح اساسي وهنا يكون المفتاح الاساسي الفعلي هو الناتج من دمج المفتاحين معا فلو كان الحقل الاول مفتاحة الرئيسي000001 والثاني 04 فان المفتاح الجديد سيكون 00000104

الان بعد ان تعرفنا على انواع الروابط سنتعرف على كيفية الربط

بعد ان انتهينا من تصميم الجداول الاربعة الان سنربطها مع بعضها وكما يلي

ادخل على علاقات واضف الجداول الاربعة

1. لربط جدول الاباء مع جدول الابناء اضغط على الخانة FatherNum الموجودة في جدول الاباء واسحبها الى الحقل الغريب FatherNum الموجود في جدول الابناء , ستفتح لك شاشة جديدة وما عليك الا ان تضع اشارة صح على فرض التكامل المرجعي او Enforce referential Integrity ثم تحديث الحقول الموجوده في الاسفل او Cascade update related field واخيرا حذف الحقولCascade delete related field

ووضيفة العبارتين الاخيرتين (التحديث والحذف) انه اذا قمنا بتحديث حقل فان كل السجلات المرتبطة ستتحدث تلقائيا واذا حذفناه فانه سيتم حذف السجلات المرتبطة به

2. لربط جدول الابناء مع الجدول التقاطعي (SunGame) اختر الخانة SunNum من جدول الابناء واسحبها الى القيمة المقابلة في الجدول التقاطعي واختر فرض التكامل المرجعي والتحديث والحذف

3. لربط جدول الالعاب استخدم نفس الطريقة السابقة

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

هنيئا الان لديك جداول منظمة ومرتبطة مع بعضها بعلاقات متينة ولا يشوبها أي عيب

وهذا المرفق بعد تعديلة في المرفقات

اكرر رجائي الى الاخوان تصويب اي خطأ ورد او سيرد والتكرم بالمشاركة بالملاحظات واي معلومة ترونها مفيدة ولكم جزيل الشكر

F_S.rar

رابط هذا التعليق
شارك

أخي الكريم بارك الله فيك على هذا المجهود الطيب

غير أني أرى خاصية Enforce referential Integrity مهمة جدا وتحتاج لوحدها درس طويل

والصدفة في ذلك أنها تتناسب مع مثالك هذا اي تستطيع بواسطة هذا المثال ان تشرح لنا الخاصية

التي تحمل شرطين هما التحديث + الحذف

وفي الأخير كان الله في عونك

رابط هذا التعليق
شارك

اخواني اشكركم على الردود المشجعة

اخي aideladha1

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

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

بالنسبة للتكامل المرجعي Enforce referential Integrity فانه يعني ان الحقل الغريب يجب ان تكون له قيمة من القيم الموجودة في المفتاح الاساسي للجدول الاخر المرتبط بهذا الجدول

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

وفائدة التكامل المرجعي تكمن في انه يمنع وجود ابناء ايتام .

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

وحسب المثال اذا غيرنا رقم الاب 000003 الى 000053 فان ابناء هذا الاب سيتم تعديل رقم الاب الخاص بهم وبالتالي يبقوا مرتبطين بهذا الاب

اما حذف الحقول المرتبطة فانها تعمل على حذف الحقول المرتبطة بهذا الحقل عند حذفة فاذا حذفنا الاب رقم 000003 فان كل ابناؤة سيتم حذفهم وبالتالي كل ما يرتبط بابناؤة من علامات او العاب او درجات ايضا سيحذف

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

ادعو الله ان اكون قد وفقت في توضيح الموضوع وادعو الله تعالى ان يوفقني في الشروحات اللاحقة

وارجو من اخواني في المنتدى عدم التردد في اي مداخلة او شرح يرونة ضروري

رابط هذا التعليق
شارك

الله يوفقك و يديمك

و أسال الله أن يمدك بالصحة ومزيد من التقدم أخي أسامة .

وبالفعل مشاركة الأخ aideladha1 صائبة حيث أن التكامل المرجعي من المواضيع المهمة في قواعد البيانات بشكل عام و بالآكسس بشكل خاص ، لما له من أهمية من الناحية التحليلية لقواعد البيانات و الجداول .

رابط هذا التعليق
شارك

أخي الكريم بارك الله فيك وشرحك جميل ومجهودك مثاب إنشاء الله

بما أني أتابع موضعك باهتمام بقي لي أن أسأل عن شيئ فيما يتعلق بالخاصية Enforce referential Integrity

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

أرجو أن يكون سؤالي واضحا و أن لا أكون أثقلت عليك

و في الأخير أقول لك كان الله في عونك

رابط هذا التعليق
شارك

اخي aideladha1

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

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

واليك هذا المثال للتبسيط

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

ولديك جدول للزبائن والمفتاح الاساسي فية رقم الهاتف والاخر للطلبيات

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

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

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

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

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

رابط هذا التعليق
شارك

الاستعلامات

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

طبعا يمكن ....... الحل هو استخدام الاستعلام

تعالوا الان نتعرف على الاستعلامات فما هي وما هي انواعها و و و ......

لمزيد من المعلومات راجع شرح أستاذنا محمد طاهر

http://www.officena.net/ib/index.php?showtopic=228

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

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

1. ادخل الى الاستعلام واختر انشاء استعلام في طريقة عرض التصميم واعمل إضافة للجداول التالية ( الاباء , الامهات, الابناء )

2. اخترما يلي بالنقر المزدوج (FatherName , MotherName, SunName)

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

الان بامكانك ان تعمل استعلام ليعطيك معلومات حسب طلبك مثلا الابناء مع الجنسيات والالعاب او الاباء و الابناء والالعاب ... الخ

يمكننا القول ان هناك استخدامين للاستعلامات

1. الاستعلامات من اجل عرض البيانات بالشكل والكيفية التي تريدها

2. الاستعلامات من اجل التحكم في الجداول (حذف , تعديل , إضافة)

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

http://www.officena.net/ib/index.php?showtopic=5605

الان اذا فتحت أي جدول ستجد ارقام في الحقل الغريب مثلا في جدول الابناء ستجد ان الاباء هي ارقام ولا نعرف لمن هذا الرقم ولتحويلة الى نص (الاسم) ادخل الى تصميم الجدول

ضع المؤشر على الخقل الغريب FatherNum في الاسفل ستجد خصائص الحقل

اختر بحث وغير القيمة الموجودة مربع نص الى مربع قائمة

ادخل على مصدر الصف ستفتح لك نافذة استعلام واضف فيها الجدول TblFathers وادرج الحقول FatherNum ثم FatherName اغلقة وقم بالحفظ

في عدد الاعمدة غير القيمة 1 لتصبح 2

في عرض الاعمدة اكتب 0سم;1 سم

اغلق واحفظ وافتح من جديد لترى النتيجة

طبق هذه العملية على كل الجداول

واليكم الملف بعد التعديل

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

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

F_S.rar

رابط هذا التعليق
شارك

تكملة الاستعلامات

الان تعالوا نتعرف على كيفية وضع شرط في الاستعلام

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

تصميم الاستعلامات حسب SQL

ان الاصل في الاستعلامات هو برمجة SQL وهي في الواقع ليست بالمعقدة او الصعبة حيث انها فعليا لا تحتوي الا على القليل من الاوامر (على الاقل التي نحتاجها في الاكسس)

ان عملية تصميم الاستعلام بالطريقه العادية هي نفسها بلغة SQL ولكن بطريقة قامت شركة مايكروسوفت بتبسيطها ويمكنك ان ترى ذلك بالدخول الى تصميم استعلام معين ثم اختيار عرض SQL وعندها سترى كود SQL الخاص بهذا الاستعلام.

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

http://www.officena.net/ib/index.php?showtopic=16932

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

رابط هذا التعليق
شارك

النماذج

بعد ان قمنا بانشاء الجداول والاستعلامات (قاعدة البيانات) الان سندخل الى تصميم واجهات الادخال (النماذج).

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

1- عام

2 – تصميم النماذج بشكل عام

3 – ربط النماذج بالاستعلامات والجداول

4- بعض الكودات الضرورية في العمل

5- ربط النماذج بالتقارير

6- بعض المشاركات المفيدة والتي انصحكم بالاطلاع عليها

اولا : عام

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

وفي الاكسس ممكن ان يكون النموذج اما نموذج عادي او ورقة بيانات (طبعا توجد اشكال اخرى) ولكن هذه هي الانواع هي الاكثر استخداما وممكن القول انها هي فقط التي يتم استخدامها.

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

ثانيا : تصميم النماذج بشكل عام

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

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

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

تصميم النماذج بشكل عام عملية سهلة وصعبة في نفس الوقت

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

ثالثا: ربط النماذج بالاستعلامات والجداول

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

فلنفرض اننا نريد ان يتم عرض السجلات في نموذج بناء على استعلام فتكون الخطوات

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

ان عملية وضع شرط في النموذج من الامور السهلة للغاية فما عليك سوى ان تقوم بوضع مربع نص في النموذج يعرض قيما معينة مثلا ذكر، انثى ونسمية SunSex ثم تذهب الى الاستعلام (مصدر النموذج) وتضع في الشرط اسفل الجنس الكود التالي

[forms]![form_name]![sunsex]=

ثم تقوم بعمل نموذج فرعي وتضع فية النموذج المبني على الاستعلام

ولفهم الية العمل لهذه الطريقة

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

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

طبعا انا لن اطيل في شرح الموضوع لانه موضوع لا نهاية له وهو ليس ببحر وانما محيط كبير

رابعا : بعض الكودات الضرورية في العمل وكيفية كتابة الكود

للاسف لن اقوم بشرح هذا الموضوع في هذه المشاركة حيث انني قمت بشرح جزئ من ذلك في مشاركة سابقة وهذا رابطها

http://www.officena.net/ib/index.php?showtopic=23698

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

خامسا: ربط النماذج بالتقارير

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

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

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

وارجو ان اكون قد وفقت من الله في تقديم وتبسيط هذا الموضوع .... ولا تنسونا من دعائكم

رابط هذا التعليق
شارك

  • 9 years later...

السلام عليكم

الاخ الكريم

السلام عليكم جميعا

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

وعتد ادخال بيانات مريض :

تكون شاشة الادخال بها بيانات المريض مع مستهلكاته

وبالنسبة للاستعلام:

يكون كالتالى :

استعلام عن مريض 

استعلام عن مريض بالمستهلكات 

استعلام عن المرضى فى فترة بالمستهلكات

بالنسبة لواجهة البرنامج كالتالى :

ادراج صورة

مريض 

البحث عن مريض

التقارير  كالتالى : مريض بالمستهلكات  و المرضى فى فترة معينة  بالمستهلكات

مع أمكانية طباعة التقرير

برجاء الاطلاع على هذا التصميم البسيط لأنى مشعارف اظبطه

BURNS.zip

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information