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

علاقة واحد إلى متعدد

مغلق
بدأه frozen في 17 يناير 2005 · 9 رد · 1,140 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

=========

الأخوة الكرام

لدى سؤال حيرنى منذ فترة كبيرة ولا أجد له جواب

-------------------------------------------------------

كلنا يعلم العلاقة الشهيرة One to Many بين جدولين

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

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

فهل من الممكن أن يحدث العكس

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

أرجو أن يكون السؤال واضح وأرجو المساهمة فى الرد

والسلام ختام

#2

كل عام وأنتم بخير

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

هل السؤال غير واضح

وشكرا

#3

الأخوة الكرام

==========

هل السؤال من الصعوبة بمكان

أم أنه من التفاهة بمكان بحيث أنه لا ينظر إليه

أم أن طريقة عرضى للسؤال غير واضحة بحيث أنه لم يفهمه أحد

وشكرا

#4

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

أخي الكريم

بلاشك تستطيع أن تبدأ بإدخال سجلات وبيانات جديدة في الجدول الفرعي (الابن) قبل الجدول (الأب) ، في حالتين وهما :-

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

أو

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

والله الموفق.

ibnmusqat.gif
#5

السلام عليكم

=========

مرحبا بك أخى الكريم وجزاك الله خيرا على ردك

ولكن لى تعقيب بسيط

لقد قمت بإنشاء علاقة بين الجدولين

لقد قمت بإنشاء التكامل المرجعى بين الجدولين

وللتوضيح أكثر :-

------------------

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

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

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

ولقد قمت بإنشاء جدولين جدول لأرقام التصاريح وجدول للمواعيد

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

ثم بعد ذلك يجب أن أدخل رقم التصريح فى الجدول التصاريح

فكيف يتم عمل ذلك

وجزاكم الله خيرا

#6

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

أخي الكريم

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

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

إقتراحي :

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

ولك خالص تحياتي.

ibnmusqat.gif
#7

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

مع أنني أميل إلى رأي أخي ابن مسقط في أن إرفاق ملف قد يؤدي إلى إيجاد حلول أخرى.

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

الحل:

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

وللجميع تحياتي

#8

السلام عليكم

=========

أخى الكريم إبن مسقط سأقوم بإرفاق جزء من الملف ويحتوى على

جدول الشركات

جدول البلاد

جدول الوكلاء

جدول الرحلات مجمعة

جدول رحلات مطار شرم الشيخ

جدول رحلات مطار الغردقة

جدول رحلات مطار مرسى علم

جدول رحلات مطار الأقصر

الأخ الكريم المزينى

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

ومطار الغردقة أكثر من ألفى سجل وشرم الى أكثر من ألف ونصف وكذلك الاقصر ومرسى علم

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

على سبيل المثال معظم الشركات تطلب أن تأتى إلى الغرقة ثم شرم ثم الاقصر او مرسى علم أى ان الطلب يحتوى علىأكثر من مطار كما انها تريد تنفيذ تلك الرحلات لفترة أى من 1/5/2005 الى 31/10/2005 كل يوم أحد واتنين واربعاء

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

أعتقد أنها عملية طويلة ولكن هذا ما إستطعت أن أقوم به

وشكرا على سعة صدوركم

تحياتى للجميع

Database.rar

#9

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

الأخ الكريم/ Forzen

لقد أطلعت على القاعدة التي وجدتها رفق مشاركتك ، وأتفق معك في التصميم المستقل للجداول التالية :

جدول الشركات

جدول البلاد

جدول الوكلاء

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

جدول الرحلات مجمعة

جدول رحلات مطار شرم الشيخ

جدول رحلات مطار الغردقة

جدول رحلات مطار مرسى علم

جدول رحلات مطار الأقصر

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

مقترحات :-

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

فما رأيكم جميعاً ؟

ibnmusqat.gif
#10

السلام عليكم

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

الجدول يحتوى على حقل Arrival_Time وكذلك Departure_Time

وبعض الطلبات تحتوى على أكثر من مطار على سبيل المثال

شركة تطلب القدوم من فيينا ثم الغردقة وستصل 1200 وتقلع 1300 وتصل شرم الشيخ 1345 وتغادر 1445 ثم فيينا ففى تلك الحالة حقل Arrival_Time , Departure_Time سيكون به أى توقيتات شرم الشيخ أم الغردقة

وهناك طلبت أخرى كثيرة مثل

LIME/HESH1200-1300/HEGN1345-1445/HELX1545-1645/LIME

وهذا هو خط السير وتتطلب فيه الشركة تنفيذ رحلة من برجامو بإيطاليا ثم وصول شرم سعت1200 وإقلاع 1300 ثم وصول الغردقة 1345 وإقلاع 1445 ثم وصول الأقصر 1545 وإقلاع 1645 ثم الى إيطاليا مرة أخرى

ففى تلك الحالة حقل Arrival_Time , Departure_Time على أى قيم المطارات سوف يشمل هل مطار شرم أم الغردقة أم الأقصر

هذا للعلم وشكرا وأرجو المتابعة وجزاك الله خيرا كثيرا

تحياتى

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

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