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

الى خبراء ال (PK)والعلاقات

مغلق
بدأه alhyaan في 3 أكتوبر 2001 · 12 رد · 865 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .. اما بعد

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

* هل اعيد تصميم الجدول من البداية وادخال مليون سجل ( غير معقول )

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

******

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

#2

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

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

اما ان كانت هناك تكرارات فالامر مختلف حيث عليك تصميم مجموعة من الجداول الجديدة المرتبطة معا و تقسيم البيانات بينها و التقسيم الاسرع يحدث بواسطة Visual Basic For Applications حيث كل ما عليك هو بناء حلقة تكرارية تقراء الجدول القديم سجل سجل و تقوم بتقسيم محتوياته الى الجداول الاخرى و هذه العملية قد تاخذ 10 دقائق.

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

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

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

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

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

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

#3

الأخ alhyaan

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

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

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

ولك تحياتي

#4

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

(اما ان كانت هناك تكرارات فالامر مختلف حيث عليك تصميم مجموعة من الجداول الجديدة المرتبطة معا و تقسيم البيانات بينها و التقسيم الاسرع يحدث بواسطة Visual Basic For Applications حيث كل ما عليك هو بناء حلقة تكرارية تقراء الجدول القديم سجل سجل و تقوم بتقسيم محتوياته الى الجداول الاخرى و هذه العملية قد تاخذ 10 دقائق.)

#5

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

قال الاخ خضر:

((اما ان كانت هناك تكرارات فالامر مختلف حيث عليك تصميم مجموعة من الجداول الجديدة المرتبطة معا و تقسيم البيانات بينها و التقسيم الاسرع يحدث بواسطة Visual Basic For Applications حيث كل ما عليك هو بناء حلقة تكرارية تقراء الجدول القديم سجل سجل و تقوم بتقسيم محتوياته الى الجداول الاخرى و هذه العملية قد تاخذ 10 دقائق.))

الاخ خضر يقصد DAO ولا اظن انها سوف تتم العملية في 10 دقائق، تحتاج لوقت كثير، بدليل الزمن الذي انتظره عند تنفيذ امر في نمادج اكسس حيث بعضها يحتاج 5 دقائق.

#6

الأخ سين ميم

ما هو الأمر الذي يحتاج تنفيذه عندك خمس دقائق في نماذج أكسس .

ولك تحياتي

#8

بالنسبة لموضوع العشرة دقائق :) ، معظم العمليات التي اقوم بها على قواعد البيانات تحدث لدينا في الشركة على الجهاز المركزي و الذي يعمل بواسطة تكنولوجيا SCSI و جيجا رام و معالجين 1000 ميجاهيرتز

فالظاهر انا تعودت على اختصار الوقت كثيرا

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

بالطبع لو كان الجدول في SQL Server و تمت معالجته بواسطة كود T-SQL فقد تختصر الوقت الى 10 بالمائة من الوقت الاصلي الذي ستحتاجة بواسطة Visual Basic for Applications و Microsoft Access نظرا لسرعة عمل TSQL مع SQL Server.

#9

الأخ سين ميم

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

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

ولك تحياتي

#10

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

الاخ ابو حمود...

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

الان لدي تقرير متكامل يتكون من صور وخطوط و مربعات سرد.

المشكلة: (1)الاشكال(الكائنات) صغيرة، (2) كل الالوان باللون الاسود،(3) الطابعة لا تطبع باللون الاسود لان اللون الاسود قد نفذ.

الحل اليدوي: (1) تكبير كل تلك الرسومات،(2)تحويل اللون الى الون اخرى.

النتيجة: مرة وصعبة لان لدي 180 كائن من خط الى صورة الى مربع سرد، تمثل كل العلاقات في التقرير.

الحل بالكود: كتبت الكود في حدث (عند الفتح)، بحيث يعمل المطلوب، ولا يحفظ التعديلات في التقرير، وتمت العملية في خمـــ5ــس دقائق.

التطبيق: بعد ان تنظم العلاقات، قم بامر طباعة العلاقات، ومن ثم احفظ التقرير، وفي الكود ضع الكود اعلاه.

والسلام.

#11

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

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

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

* اخي الكريم( خضر ترزي ) ارجوا منك ان تشرح لي ماسبق وان قلته انت ..

( اما ان كانت هناك تكرارات فالامر مختلف حيث عليك تصميم مجموعة من الجداول الجديدة المرتبطة معا و تقسيم البيانات بينها و التقسيم الاسرع يحدث بواسطة Visual Basic For Applications حيث كل ما عليك هو بناء حلقة تكرارية تقراء الجدول القديم سجل سجل و تقوم بتقسيم محتوياته الى الجداول الاخرى و هذه العملية قد تاخذ 10 دقائق. ) ... اريد شرح طريقة تصميم مجموعه من الجداول وكيف اقسم البيانات بينها وطريقة Visual Basic For Applications مع شكري العميق للجميع ..

#12

الأخ سين ميم

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

علما أن سرعة جهازي 800 .

ولك تحياتي

#13

قال الاخ ابو حمود:

((ولكن يمكن بسبب تكبيرك للكائنات وما أظن أن يصل الفرق إلى هذا الزمن ولكن الكود لايغير في حجم الكائنات))

وقال حفظه الله:

((فهل غيرته يدوي وحسبته من ضمن الوقت لطباعة العلاقات))

اخي ابو حمود...فقط توضيح للاستفادة.

لدي:

1 - 22 جدول، سوف يرمز لها ب 22 مربع سرد، كل مربع سرد في راسه مربع تسمية=22+22 =44 كائن

2 - 34 علاقة بين تلك الجداول=34 خط في طرفيه صورتين متعدد او رقم واحد 34 +34 +34= 102

3- اذا كانت العلاقة راس باطراف يتكون خط قصير اخر في راس العلاقة بجوار رمز الجدول اي كائنات اخرى لا تزيد على 34 اذا المجموع العام =44+102+34=180 كائن،

زين الحين نبى نغير الالوان لتلك الكائنات + تكبير الخطوط ال 34 الى 4 انش بدل 0.1563" انش وتغيير الوانها بعد، اي رسوميات كم يريد اكسس ليتم المهمة؟؟جهازي 133PENTIUM.

ملاحظة اخيرة: يفترض في الكود ان يجري تغيير في عرض الخطوط.

والهدف هو الاستفادة للجميع.

ارجو ان اكون ختمت هذا الجدل.

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

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