الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الأسس العلمية لقواعد البيانات

مثبّتمغلقرائج
بدأه InternetMaster في 4 نوفمبر 2003 · 236 رد · 400,402 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#101

مرحبا،،،

نستكمل...

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

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

عندما يقول Codd ممنوع فهو يقصد أنك تستطيع عمل هذا ولكنك لن تحصل على قاعدة بيانات متكاملة ومتماسكة.

كافة العمليات الحسابية تتم في الإستعلامات...

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

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

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

من جدول الآباء:

FatherNum

FatherName

من حدول الأبناء:

SonNum

SonName

نفذ هذا اٌستعلام --- ما هي النتيجة؟ من يقول لي ماذا تعني هذه النتيجية؟؟؟

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

لحساب كل ركز (كل) عملية شراء نضرب ItemCost في الكمية المشتراه Qty

في (عرض التصميم) للإستعلامات ستلاحظ أن السطر الأول هو Field أي الحقل ونحن ليس لدينا حقل نحن لدينا عملية حسابية

في عمود فارغ اكتب:

Qty*ItemsCost

لاحظ كيف يعدل الأكسس ...

نفذ الإستعلام،،، ماذا تعني نتيجة هذا الإستعلام؟؟؟ لن يجيب على هذه الأسئلة إلا الذين لديهم كل ما عملناه على ورق !!!

من قائمة (عرض) View إختر مجاميع Totals

ماذا تلاحظ ؟ نعم أتت خدمة جديدة (سطر جديد) عنوانه (إجمالي) وتحت كل حقل ظهرت جملة (تجميع حسب) Group By --- والمجاميع هي خاصية من أوامر لغة SQL وليس آكسس.

جملة Group By تحت FtherName تعني قم (ما اسطتعت) بتجميع الأباء المتشابهين أي لا تظهر الأب أكثر من مرة.

ولكن هناك Group BY او (تجميع حسب) تحت أسم الأب ورقم الإبن وإسم الإبن. وكذلك الحقل الحسابي..

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

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

مرة أخرى...

نريد رقم الأب، إسم الأب، رقم الطفل، إسم الطفل، إجمالي تكلفة مشترياته...

أعلم أن العملية صعبة شرحا بالكتابة، حبذا لو كنتم أمامي في قاعة تدريب لفتحت رؤوسكم (بسكين خاص لدي) وصببت فيه المعلومات صبا.

لنحاول وأنا تحت ضغط الوقت... حيث ما زال هناك الكثير لنتحدث عنه.

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

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

السؤال (ركــــــــــــــــــــــــــــز) إذا ضربنا الكمية في سعر الصنف نحصل على ... ماذا؟

الطفل 110 أجرى 5 عمليات شراء --- عند ضرب الكمية في سعر الصنف نحصل على ماذا؟ نعم......... نحصل على 5 إجماليات نوضح أكثر

الطفل الملقوف 110

قام بشراء 3 محايات بسعر المحاية 2 ريال الإجمالي 6 ريالات

قام بشراء 2 مسطرة بسعر المسطرة 4 ريالات الإجمالي 8 ريال

قام بشراء 7 أقلام رصاص بسعر القلم 1 ريال الإجمالي 7 ريال

قام بشراء 5 سبورات --- كمل للوصول للإجمالي

قام بشراء 9 دفاتر --- كمل للوصول للإجمالي

ولكم لحظة ............... توقف ---- ليس هذا هو المطلوب .....

المطلوب هو ما دفعه الأب ... أي اب الطفل 110 !!! ما هو؟ طبعا ليس عمليات الشراء الخمس بل هو ناتج مجموع العمليات الخمس كلها هو ما دفعه الأب لقاء مشتريات إبنه 110

أي هي ناتج جمع 6 و 8 و 7 و ... و...

لأن الحقل الحسابي الذي صنعناه هو عملية حسابية أريدك أن تختار من القائمة وتستبدل (تجميع حسب) ب Expression أي ناتج عملية حسابية.

إذا قمت بتنفيذ الإستعلام الآن ستحصل على خطأ لأن الآكسس وال MS SQL لن يستطيعوا عمل (تجميع) Group By للعمليات بدون إستخدام قانون آخر للسيد Codd وهو

Aggregate Functions ولا أعلم ترجمتها بالعربية !!!

هل من يساعدنا بالترجمة...

وهي موضوعنا في الدرس القادم...

تحياتي،،،

#102

Aggregate Functions = الوظائفُ الكليةُ

sob7ank.jpg

فرض على الناس أن يتوبوا**** لكن ترك الذنوب أوجب

والصبر في النائبات صعب**** لكن فوات الثواب أصعب

والدهر في صرفه عجيب**** لكن غفلة الناس أعجب

وكل ما قد يجي قريب****والموت للعبد من ذاك أقرب

#103

أعتقد أن أقرب ترجمة ل Aggregate Functions

هي دوال التجميع

و نظرا لانها ليست كلها تجميع فعليا ، فيمكننا أن نطلق عليها دوال الاحصاء إجتهادا

مرفق ملف وورد للمشاركات السابقة

و يمكن تنزيله من الايقون الصغير اسفل الموضوع لاي مشاركة فى المنتدي

الأساس_العلمي.rar

#104

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

#105

عزيزي Internetmaster سأقدم محاولتي في كيفية الحصول على إجمالي المبلغ الذي دفعه كل أب

ولكن قبل ذلك هناك سؤال محيرني أود لو تكرمت أن تجيبني عليه

وهو ذلك الحقل المسمى qty والذي أضفته في جدول SonsItems وعلى اعتبار أن المفتاح الأساسي في هذا الجدول هو مجموع بيانات الحقلين

sunnum وitemnum

سؤالي هو عندما أسجل في هذا الجدول السجل التالي

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

أما بالنسبة للواجب

فقمت بعمل استعلام اسمه qry وهذه جملة sql فيه

SELECT Fathers.FatherNum, Fathers.FatherName, SonsItems.itemnum, SonsItems.qty, Items.ItemCost, [Qty]*[itemCost] AS Expr1

FROM Items INNER JOIN ((Fathers INNER JOIN Sons ON Fathers.FatherNum = Sons.FatherNum) INNER JOIN SonsItems ON Sons.SonNum = SonsItems.sunnum) ON Items.ItemNum = SonsItems.itemnum

GROUP BY Fathers.FatherNum, Fathers.FatherName, SonsItems.itemnum, SonsItems.qty, Items.ItemCost, [Qty]*[itemCost];

وبعده قمت بعمل استعلام آخر مبني على استعلام 1 وهذه جملة sql فيه

SELECT qry.FatherName, Sum(qry.Expr1) AS SumExpr1

FROM qry

GROUP BY qry.FatherName;

وحصلت على الناتج أرجو أن يكون الحل صحيحا

تحياتي

#106

إلى الأخ الفاضل biskra ... إليك المثال الذي أعتمد استاذنا InternetMaster

FAMILY.rar

#107

شكراأخي hassaan100 على الاستجابة السريعة, وضاعف الله أجرك كثيرا.

#108

قمة

#109

اخي الكريم

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

الشهر الكريم ان يجعلنا وايكم من عتقائه من النار انه ولي ذلك والقادر عليه

واخيراً وليس اخر شكر وتقدير على ما تبذله من علم هنا وعلى المجهود الجبار الذي تقوم به

تحياتي وتقديري

#110

مرحبا،،،

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

وصلنا إلى Aggregate Functions وأشكر الأخوة على الترجمة وآمل أن تكون هي الترجمة العلمية --- ولا يهمنا هذا تعالوا نرى ما هي...

لا تنس أن هذه الدوال خاصة بلغة SQL ولا علاقة لها بالآكسس ... من يقول لي ماذا يعني هذا؟ وما أهميته؟

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

ِAVG --- وهي المتوسط الحسابي وفي الرياضيات هو مجموع الأقيام مقسوما على عددها Average

Count --- وهو العدد أي عدد السجلات في جدول ما --- او عدد الأطفال الإناث مثلا

Max --- أكبر قيمة Maximum

Min --- أقل قيمة Minimum

Sum --- المجموع Summation

StdEv --- أي الإنحراف المعياري Standard Deviation الخاص بالإحصاء

وهكذا....

لحل الإستعلام الذي وقفنا عنده:

نضع الحقول الأربعة التالية في الإستعلام ونختار من قائمة عرض (مجاميع) Totals

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

FatherName من جدول الأباء

SonNum من جدول الأبناء

SonName من جدول الأبناء

كل الحقول السابقة --- نختار لها Group By أو تجميع حسب

ثم نضيف الحقل الحسابي التالي في العمود الخامس ونختار له Expression للكناية عن عملية حسابية

sum(Qty*ItemCost)

صححوا الأقواس

لاحظ أن إستخدام دالة Sum --- لن أجيب --- من يقول لماذا تم إستخدام دالة Sum؟ ما الفائدة منها؟

نفذ الإستعلام للحصول على ما طلبناه.

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

(من يساعدني في شرح كيفية إدراج صور في أي مشاركة) !!!!

نفذ الإستعلام التالي:

أضف جدولي الآباء والأبناء ثم إختر من قائمة (استعلام) Query --- إختر (إستعلام جدولي) CrossTab Query

اضف حقل FatherName من جدول الآباء --- الإجمالي (تجميع حسب) وجدولي (عنوان الصف)

اضف حقل SonName من جدول الأبناء--- الإجمالي (تجميع حسب) وجدولي (عنوان العمود)

أضف حقل SonNum من جدول الأبناء --- الإجمالي (Count) وجدولي (القيمة)

نفذ الإستعلام... من يشرح لي هذا الإستعلام الرائع؟؟؟!!!!

لا ينسى أحد منكم (رجاء لا أمراً) ان يصرف وقتا طويلا بل طويلا جدا في ممارسة الإستعلامات --- كل قواعد البيانات بعد تنظيم وإنشاء الجداول تعتمد على قوة ووضوح الإستعلامات.

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

في قائمة إستعلام -- (وهي أهم قائمة) يوجد الخيارات التالية:

إستعلام تحديد Select Query --- وقد قمنا بتطبيقه

إستعلام جدولي CrossTab Query --- وقد قمنا بتطبيقه في المثال السابق

إستعلام إنشاء جدول Make-Table Query --- من يشرح لي هذا؟

إستعلام تحديث Update Query --- من يشرح لي هذا؟

إستعلام إلحاق Append Query --- من يشرح لي هذا؟

إستعلام حذف Delete Query --- من يشرح لي هذا؟

خاص ب SQL أي خاص بلغة SQL وفيها ثلاثة أنواع من الإستعلامات:

توحيد Union

تمريري Pass-Through

تعريف بيانات Data Definition

من يشرح لي ماذا يحدث عندما نختار أي من الثلاثة السابقة؟ لماذ يحدث هذا؟

قد يسعفنا الوقت لشرحها بالتفصيل فيما بعد.

انتظر إجابات...

تحياتي،،،

تم تعديل هذه المشاركة بواسطة InternetMaster في 10 نوفمبر 2003 في 18:41

#111

مرحبا،،،

قرر صاحب قاعدة البيانات أن يضيف جدولاً خاص بالزوجات !!!!

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

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

لا تنسوا أن قواعد البيانات تصمم من قبل فريق عمل...

فكروا...

تحياتي،،،

#112

اخي الكريم

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

هذه الدروس أنه محدود جدا المحدود كاالتالي:

إستعلام تحديث Update Query وهو استعلام تحديث للبيانات الموجوده في الجدول او الجداول ولكي يتم هذا التحديث ينبغي ان يكون لدينا قيم نسميها قيم قديمه تم الاستغناء عنها لا ستبدالها بقيم حديثة نحتاجها فمثلا لو اردنا تغيير رقم الاب 3000 الى رقم جديد 3500 ونستخدم هنا الامر Update والصيغة تكون كالاتي:

UPDATE fathers SET fathers.FatherNum = "3500"

WHERE (((fathers.FatherNum)="3000"));

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

اماإستعلام إلحاق Append Query فهو لاضافة قيم للجدول أو بمعنى اخر سجلات فاذا اردنا اضافة أب جديد يحمل الرقم 9500 لجدول الاباء فنستخدم هذا الامرInsert وهنا يمكن باستخدام هذا الاستعلام اضافة قيم لنفس الجدول او جدول اخر في نفس القاعده او جدول في قاعدة بيانات اخرى حسب الطلب وصيغته كالاتي:

INSERT INTO fathers ( FatherNum )

SELECT fathers.FatherNum

FROM fathers

WHERE (((fathers.FatherNum)="3000"));

والاستعلام إستعلام حذف Delete Query هو لحذف اي سجل او قيم لا نريدها في الجدول او الجداول ونستخدم الامر delete

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

DELETE fathers.FatherNum

FROM fathers

WHERE (((fathers.FatherNum)="3000"));

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

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

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

هذا والله الموفق

ولكم مني خالص التحية والتقدير

تم تعديل هذه المشاركة بواسطة AhmdMu في 10 نوفمبر 2003 في 20:08

#113

مرحبا،،،

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

اما إجاباته فهي أكثر من رائعة وينقصها ما يلي:

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

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

شكراً للأخ الصاحي معنا (AhmdMu).

أضف جدول الزوجات Wives بالحقول التالية:

WifeNum نص 2 --- مفتاح أساسي

WifeName نص

WifeAge رقم

WifeNationality --- وهو موضوعنا الآن

FatherNum --- حقل غريب للربط

أضف الحقل التالي في جدول الأبناء:

SonSex --- وهو موضوعنا الآن

نعود للسيد Codd --- ماذا يقول؟ --- أحد القواعد والقوانين العامة ينص على:

تحييد اللغة !!!!!!!!!!

ماذا يعني تحييد اللغة --- يعني وببساطة شديدة عدم الإعتماد على (النصوص) في قاعدة البيانات، لماذا؟؟

لملايين الأسباب...

تسهيل عمليات الإدخال

تسهيل ترجمة قاعدة البيانات من لغة إلى أخرى

تلافي أخطاء الكتابة والإملاء --- من يذكر مشكلة أنثى وانثى وغيرها

تصغير حجم قاعدة البيانات

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

نحمد الله أننا نتعامل مع جدول كله نساء الآن وبالتالي سيكون لدينا:

سعودية

كويتية

قطرية

مصرية

...

ولن يكون لدينا أبدا في هذا الجدول

سعودي

كويتي

قطري

مصري

...

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

إنما لمشكلة ما زالت قائمة حتى مع كون الجدول بكامله يتعلق بنساء، ما هي المشكلة:

سعودية

سعوديه

لاحظ (الهاء) مقارنة مع (التاء المربوطة) --- في علم قواعد البيانات ما سبق جنسيتان مختلفتلن... كيف نضمن مدخل البيانات؟ كيف نحل هذه المشكلة؟

إتصال هاتفي مع السيد Codd --- ساعدنا تكفى...

شكرا سيد Codd --- الحل هو بإستخدام الجداول المساعدة Help Tables

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

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

إما إدخال يدوي وتعديل 100 ألف سجل يدوياً وهذا قطعا إنتحار...

أو تصميم إستعلام Update لتحديث بيانات هذا الحقل وتغييره من (سعوودية) إلى (سعودية) ولكن لحظة...

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

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

إنشأ الجدول المساعد التالي:

NationalityNum نص 2 -- مفتاح رئيسي

Nationality نص

إحفظه بإسم Nationalities

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

ماذا نفعل بعد هذا؟ صح !! نربط جدول الجنسيات بجدول الزوجات ولكن يتطلب الأمر أولا تعديل الحقل WifeNationality في جدول الزوجات.... ليصبح ماذا؟ من يجيب؟

أجب قبل القراءة....

نعدل الحقل WifeNationality إلى NationalityNum على هيئة نص وبطول 2 ليصبح حقلا غريبا.

إربط بين الحقلين NationalityNum بالسحب من جدول Nationalities إلى جدول Wives وضع علامة صح على المربعات الثلاثة... والعلاقة الآن واحد إلى متعدد.

أضف السجلات التالية في جدول الجنسيات:

01 سعودية

02 قطرية

03 كويتية

04 مصرية

05 إماراتية

06 يمنية

07 عراقية

08 عمانية

09 بحرينية

10 سورية

لاحظ أن التهجئة (الإملاء) للجنسيات غير مهم حاليا (تحييد اللغة) لأن الربط يتم مع رقم الجنسية وليس النص وهو الجنسية نفسها.

قم بربط جدول الآباء مع جدول الزوجات --- قطعا لن أشرح كيف تقوم بهذا !!!!!

ثم أضف السجلات التالية إلى جدول الزوجات Wives:

WifeNum WifeName WifeAge NationalityNum FatherNum

80 غادة سعيد آل محمد 42 02 4000

81 منى طلال خالد 22 10 4000

82 سارة خليل الدوسري 36 02 4000

83 مها عبد الرحمن الخليل 19 07 9000

84 سارة سعيد السالم 51 09 6000

88 عفاف محمد اليوسف 39 01 5000

واجب منزلي...

كيف نربط جنس الطفل؟ ماذا يحل لنا من مشاكل؟

كيف ننشأ إستعلام يوضح عدد الزوجات لكل أب وعدد الأطفال؟

كم عدد زوجات كل أب من كل جنسية؟

من يستطيع ن يقول لي متوسط أعمار زوجات كل أب؟

إسأل نفسك 100 سؤال وأجب عليها وإستمتع بقواعد البيانات. !!!

تحياتي،،،

#114

ممتاز

تم تعديل هذه المشاركة بواسطة ha98 في 10 نوفمبر 2003 في 22:45

#115

مرحبا،،،

وصلنا إلى حقل جنس الطفل وسمى هذا النوع من الحقول (الحقول ثنائية القيمة) أي لا يوجد إلا قيمتين إثنتين فقط:

إنثى

ذكر

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

في الحقول ثنائية القيمة مثل:

ذكر - أنثى

ليل - نهار

فترة صباحية -- فترة مسائية

أو في حقول النفي والإثبات مثل:

متزوج -- غير متزوج

مدخن -- غير مدخن

عصبي -- غير عصبي

وهكذا...

فإننا نستخدم حقول من نوع Bit في MS SQL أو (نعم/لا) Yes/No في الآكسس.

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

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

Female=no

أي الجنس من غير الإناث.

نترك الآن قاعدة البيانات الخاصة بالعائلة ونقفل الآكسس أو أي برنامج قواعد بيانات آخر.

وعلى الورق فقط (كتابة فقط)

قل لي كيف نربط الجداول في قاعدة البيانات الخاصة بالمستوصف؟؟؟

تحياتي،،،

#116

اخي الكريم

Ahmdmu=====================> مايدري وين يودي وجهه

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

عذرأ ووعد والا اقللك يمكن ما اقدر اوفي بالوعد خليها بظروفها

نعود للواجب

اجابة السؤال الاول

كيف نربط جنس الطفل؟ ماذا يحل لنا من مشاكل؟

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

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

أن تكون خصائص الحق متشابهه قوانين سيد codd

يحل المشاكل التالية

يوحد البيانات ذكر , مذكر مؤنث أنثى الا على فكره ماهو مؤنث الانثى سؤال للعباقره فقط فاهمين

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

فعند أدخال مؤنث سنفقد السيدة أنثى وعند اخال ذكر سنفقد السيد مذكر

اجابة السؤال الثاني

الجزء الاول عدد الزوجات لكل أب

SELECT fathers.FatherNum, fathers.FatherName, Count(Wives.WifeNum) AS CountمنWifeNum

FROM fathers INNER JOIN Wives ON fathers.FatherNum = Wives.FatherNum

GROUP BY fathers.FatherNum, fathers.FatherName;

الجزء الثاني

عدد الابناء لكل أب

SELECT Count(Sons.Sunname) AS CountمنSunname, fathers.FatherName

FROM fathers LEFT JOIN Sons ON fathers.FatherNum = Sons.FatherNum

GROUP BY fathers.FatherName

HAVING (((Count(Sons.Sunname))<>0));

اجابة السؤال الثالث

كم عدد زوجات كل أب من كل جنسية؟

SELECT Count(Nationalities.Nationality) AS CountمنNationality, fathers.FatherName

FROM Nationalities INNER JOIN (fathers INNER JOIN Wives ON fathers.FatherNum = Wives.FatherNum) ON Nationalities.NationalityNum = Wives.NationalityNum

GROUP BY fathers.FatherName;

اجابة السؤال الرابع

من يستطيع ن يقول لي متوسط أعمار زوجات كل أب؟

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

SELECT Avg(Wives.WifeAge) AS AvgمنWifeAge

FROM Wives;

الحمد لله حلينا الواجب بس أن شاء الله يكون صح ياستاذ والله الواجب كبير

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

#117

أستاذي الكريم

اسف جداً جداً يبدو أنني قمت بحل الواجب متأخرا

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

لك مني خالص التحية والتقدير

#118

اخي العزيز InternetMaster كلنا صاحيين معاك ومتابعين بكل دقه ولكن كما تعلم فهذه الدروس لتغيير مفاهيم قد تكون خاطئه وترسخت في الاذهان عليه لابد من التعمق في التفكير بشكل ادق والمقارنه بين ماكان في السابق وماسوف يكون حالياً .

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

تابع وفقك الله .

sob7ank.jpg

فرض على الناس أن يتوبوا**** لكن ترك الذنوب أوجب

والصبر في النائبات صعب**** لكن فوات الثواب أصعب

والدهر في صرفه عجيب**** لكن غفلة الناس أعجب

وكل ما قد يجي قريب****والموت للعبد من ذاك أقرب

#119
اقتباس
(من يساعدني في شرح كيفية إدراج صور في أي مشاركة) !!!!

السلام عليكم لادراج الصور في الموضوع

اذهب الى هذا الموقع

http://www.jeeran.com

ادخل اسم المستخدم / InternetMaster

الرقم السري /999999

يمكنك تغيير الرقم السري بعد الدخول

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

ستظهر لك عدة خيارات من ضمنها الخيار (تحميل ملفات من جهازك )

بعد الضغط عليه ستظهر صفحة تحميل الصور او غيرها

اختر الصوره ثم تحميل اكيد تعرفها كلها

بعد ذلك افتح الصوره وخذ اللينك الخاص بها

زي كذا يصير

http://internetmaster.jeeran.com/pp.gif

في المشاركة اظغط على الزر IMG سيظهر لك مربع الصق لينك الصورة فيه

وخلاص تظهر الصورة هنا مثل هاذي

pp.gif

ملاحظه : يجب ان تكون صيغة الصورة GIF لكي تظهر في المنتدى

تم تعديل هذه المشاركة بواسطة alhajri في 11 نوفمبر 2003 في 03:20

#120

مرحبا،،،

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

شكرا الأخ (alhajri) على كيفية وضع الصور.

ممتاز للأخ (AhmdMu) وسؤال شخصي لك هل تعرف كل هذا مما سبق؟ إذا كنت جيدا في قواعد البيانات (مو الآكسس) --- Microsoft SQL Server 2000 وقمت بعمل أية مشاريع أو نماذج من قبل... آمل إرسال بريد إلكتروني توضح لي فيه خبرتك بالظبط وإذا كان لديك رغبة في المشاركة في مشاريع حقيقية. آمل الإفادة اين أنت بالظبط (في أي بلد) حتى يتم التنسيق معك في أقرب فرصة بعد العيد بمشيئة الله. ستعمل (في حالة قبولك ورغبتك ايضا) ستعمل من جهازك من منزلك ولن يؤثر عليك شيئا. بالعكس سيكون لديك دخل مادي جديد. تحياتي

----

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

انا بالإنتظاااااااااااااااااااااااااااااار...

تحياتي،،،

تم تعديل هذه المشاركة بواسطة InternetMaster في 11 نوفمبر 2003 في 03:40

#121

السلام عليكم

بالنسبة لقاعدة بيانات المستشفى

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

والشيء الآخر هو العلاقة بين جدولي الأطباء والمرضى علاقة متعدد إلى متعدد

ولذلك نحتاج إلى جدول جديد ونضع فيه الحقول التالية :

رقم المريض ، رقم الطبيب المعالج ، وقت دخول المريض ويصبح مجموع الحقول الثلاثة كمفتاح أساسي ( مجرد اقتراح )

#122

مرحبا،،،

محاولة جيدة من الأخ (ha98) ........... على الأقل جالس يحاول !!! وين الجماعة،، شايف السحور دسم الليلة...

لن أكمل قبل أن أرى من 10 إلى 15 محاولة !!!!!!!!!!

سأكون أول سبب من أسباب تساقط الشعر لديكم ... من كثرة التفكير والتمعن...

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

سأنتظر.... وأستمتع وأنا أرى كل واحد منكم يتعذب في حل المشكلة !!!!

تحياتي،،،

#123

اخي الكريم

جدول المرضى

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

اسم المريض نص

عمر المريض رقم

جنس المريض يفضل رقم او نص 2 بكيفكم

جدول الاطباء

رقم الطبيب نص 3 مفتاح

اسم الطبيب نص

عمر الطبيب رقم

جنس الطبيب يفضل رقم او نص 2

جدول العيادات

رقم العيادة نص 2 مفتاح

اسم العيادة نص

رقم الطابق رقم

رقم الجناح رقم

تفكير بصوت عالي (مزعج)

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

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

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

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

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

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

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

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

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

تحياتي وتقديري

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

أمل قرائتها والرد على نفس العنوان

#124

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

InternetMaster كتب:
إبدا معي بالكتابة في الصفحة التي ستحمل كافة حقول المشروع ولأن التطبيق يدوي فلن أكثر عليكم بالحقول سنزيدها عند التطبيق الفعلي على الآكسس لاحقا بمشيئة الله:

الحقول:

رقم المريض -- 10 خانات

إسم المريض -- 50 خانة

جنسية المريض -- 25 خانة

عمر المريض -- 2 خانة

جنس المريض -- 1 خانة

تشخيص المرض -- 350 خانة

العلاج -- 350 خانة

التكلفة المدفوعة من المريض --- 5 خانات

تاريخ دخول المريض --- 10 خانات

وقت دخول المريض --- 5 خانات

تاريخ خروج المريض --- 10 خانات

وقت خروج المريض --- 5 خانات

رقم الطبيب المعالج -- 10 خانات

إسم الطبيب -- 50 خانة

جنسية الطبيب -- 25 خانة

راتب الطبيب الشهري -- 5 خانات

بدل السكن للطبيب السنوي -- 5 خانات

بدل النقل للطبيب الشهري -- 5 خانات

جنس الطبيب -- 2 خانة

رقم العيادة -- 10 خانات

إسم العيادة -- 50- خانة

رقم الجناح الذي تقع فيه العيادة -- 2 خانة

رقم الطابق -- 2 خانة

ملاحظات -- 500 خانة

بنائاً على ما سبق أبدأ بالمحاولة (فقط محاولة):

1. نقوم بجعل رقم المريض في جدول المرضى عبارة عن مفتاح أساسي.

2. نقوم أيضاً بإضافة مفتاح أساسي لكل من رقم الطبيب المعالج في جدول الأطباء وكذلك رقم العيادة في جدول العيادات.

3. نقوم بإضافة حقل غريب لرقم العيادة في جدول المرضى . نقوم بتوصيل العلاقة.

4. نظراً لأنه من المحتمل أن يكون لكل مريض أكثر من طبيب وكذلك العكس فإنه يكون لدينا هنا علاقة من نوع متعدد إلى متعدد .

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

6. نقوم بتوصيل العلاقات السابقة . وبذلك نكون قد حصلنا على علاقة متعدد إلى متعدد.

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

تكمن الفائدة في الربط بين جدول المرضى والعيادات لمعرفة أين كان يوجد المريض فلان من بين العيادات الأخرى ..

أرجو أن تفيدوني في ذلك ...

8. نقوم بتصميم جداول الترميز (الجداول المساعدة) لكلا من (رقم الطبيب المعالج و أسم الطبيب) في جدول الأطباء ، وأيضاً (رقم العيادة ، اسم العيادة) في جدول العيادات.

أسأل الله لي ولكم التوفيق ..

تم تعديل هذه المشاركة بواسطة hassaan100 في 11 نوفمبر 2003 في 06:55

#125

الاخ Internet Master

الي فهمته من استخدام الجدول المساعد هو منع الخطا في ادخال المسميات مثل سعودية او سعوديه

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

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

تحملوني اخوكم لازال مبتدىء

db1.rar

1

هذا الموضوع مغلق.

مواضيع مشابهة