The best قام بنشر الخميس at 13:34 قام بنشر الخميس at 13:34 السلام عليكم ورحمة الله وبركاته إخوتى وأساتذتى الأفاضل بمشيئة الله أنا بصدد تصميم برنامج لشئون العاملين بجهة عملى ومحتاج لمساعدتكم واقتراحاتكم مرحلة أولى فى المرفق التالى هل يصح وضع البيانات فى جدول واحد علشان عملت 3 جداول Personnel_affairs.rar
Foksh قام بنشر الخميس at 14:12 قام بنشر الخميس at 14:12 وعليكم السلام ورحمة الله وبركاته، بالنسبة لسؤالك حول وضع البيانات في جدول واحد أو توزيعها على عدة جداول ، فمن الأفضل استخدام 3 جداول منفصلة كما فعلت ( هذا بالنسبة لي طبعاً ) ، وذلك للأسباب التالية : 🔹 لماذا لا أفضل وضع البيانات في جدول واحد ؟؟؟ 1️⃣ تجنب تكرار البيانات :- إذا وضعت جميع البيانات في جدول واحد ، فقد تضطر إلى تكرار بيانات الموظف أكثر من مرة عند إضافة مؤهلاته أو تغيير بياناته الوظيفية . 2️⃣ تحسين الأداء وسهولة الاستعلامات :- الجداول الصغيرة تسهّل عمليات البحث والتحديث مقارنةً بجدول واحد ضخم يحتوي على بيانات مكررة . 3️⃣ التوسّع المستقبلي :- تقسيم البيانات يسهل إضافة ميزات جديدة مثل ترقيات الموظفين أو دورات تدريبية دون إعادة تصميم الجدول بالكامل . 🔹 ونقطة مهمة وهي كيف يتم الربط بين الجداول ؟؟؟ لضمان عمل الجداول بشكل صحيح ، يجب استخدام المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys) كما يلي :- ✅ جدول البيانات الشخصية (Personal_data) :- اجعل rkm_mlf (رقم الملف) هو المفتاح الأساسي (Primary Key) ، لأنه فريد لكل موظف . ✅ جدول البيانات الوظيفية (Functional_data) :- أضف Functional_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . ✅ جدول المؤهلات (Qualification_data) :- أضف Qualification_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . هذا وقد أكون قد غفلت عن شيء ، فإن كنت قد سهوت فعل الأخوة والأساتذة يساندني ويذكرها 😇 .
The best قام بنشر الخميس at 14:34 الكاتب قام بنشر الخميس at 14:34 19 دقائق مضت, Foksh said: وعليكم السلام ورحمة الله وبركاته، بالنسبة لسؤالك حول وضع البيانات في جدول واحد أو توزيعها على عدة جداول ، فمن الأفضل استخدام 3 جداول منفصلة كما فعلت ( هذا بالنسبة لي طبعاً ) ، وذلك للأسباب التالية : 🔹 لماذا لا أفضل وضع البيانات في جدول واحد ؟؟؟ 1️⃣ تجنب تكرار البيانات :- إذا وضعت جميع البيانات في جدول واحد ، فقد تضطر إلى تكرار بيانات الموظف أكثر من مرة عند إضافة مؤهلاته أو تغيير بياناته الوظيفية . 2️⃣ تحسين الأداء وسهولة الاستعلامات :- الجداول الصغيرة تسهّل عمليات البحث والتحديث مقارنةً بجدول واحد ضخم يحتوي على بيانات مكررة . 3️⃣ التوسّع المستقبلي :- تقسيم البيانات يسهل إضافة ميزات جديدة مثل ترقيات الموظفين أو دورات تدريبية دون إعادة تصميم الجدول بالكامل . 🔹 ونقطة مهمة وهي كيف يتم الربط بين الجداول ؟؟؟ لضمان عمل الجداول بشكل صحيح ، يجب استخدام المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys) كما يلي :- ✅ جدول البيانات الشخصية (Personal_data) :- اجعل rkm_mlf (رقم الملف) هو المفتاح الأساسي (Primary Key) ، لأنه فريد لكل موظف . ✅ جدول البيانات الوظيفية (Functional_data) :- أضف Functional_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . ✅ جدول المؤهلات (Qualification_data) :- أضف Qualification_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . هذا وقد أكون قد غفلت عن شيء ، فإن كنت قد سهوت فعل الأخوة والأساتذة يساندني ويذكرها 😇 . هكذا أستاذنا صح وكمان لسة فى جداول خاصة بالإجازات والتدريبات وتدرج الوظائف والجزاءات والعقوبات وغيرها أجهز تلك الجداول بالطريقة السابقة
Foksh قام بنشر الخميس at 14:41 قام بنشر الخميس at 14:41 3 دقائق مضت, The best said: هكذا أستاذنا صح نعم صحيح أخي الكريم .. وبالنسبة للجداول المتبقية ، فيفضل استخدامك لنفس الطريقة السابقة ، وطبعاً سيكون حقل المفتاح الفريد rkm_mlf هو الرابط بين الجداول لذا اربط الجداول كافة بجدول الموظفين لضمان تنظيم البيانات واسترجاعها بسهولة لاحقاً .
ابوخليل قام بنشر الخميس at 15:18 قام بنشر الخميس at 15:18 مشاركة مع اخي العزيز فادي واضافة الى ما افاد به وأجاد بعض الملاحظات البسيطة من واقع تجربة : ملاحظة فنية : - تسميات الحقول .. مثلا rkm_mlf في الجدول الرئيسي يجب ان يختلف في الجداول الأخرى اختلافا طفيفا اما بزيادة حرف او رقم .. وهذا ينطبق على جميع تسميات الحقول بين الجداول السبب في افضلية ايجاد فارق في التسمية هي احيانا تضطر الى ضم هذه الجداول في استعلام واحد .. حينها ستعرف فائدة التفرقة . ملاحظات في التصميم : تنقسم البيانات المتجددة الى نوعين .. 1- نوع يكون اصله في جدول الاسماء .. وما يستجد في جدول منفصل ، مع تحديث القيمة في جدول الاسماء عند كل حركة جديدة .. مثل الرتبة وترقياتها ، والوظيفة وتدرجاتها ، والنقل داخل المحافظة نفسها ( مكان العمل ) ، والمؤهل وتاريخه ونحو ذلك هذه الفكرة ستجد ثمرتها عظيمة مستقبلا عند البحث والتصفيات الجماعية وعمل التقارير .. ستكون سلسة وسريعة .. لان المصدر جدول واحد فقط التفاصيل الأخرى غالبا لن تحتاجها الا في الاستعلام عن موظف محدد بعينه 2- النوع الثاني الاصل يكون في جدول مستقل مثل الإجازات والتدريبات والجزاءات والعقوبات .. ونحو ذلك ------------------------------------- لا ننسى الجداول الخدمية وهي مهمة جدا مثل : جدول المؤهلات ، جدول الوظائف ... الخ وجميع الأشياء التي تتوقع البحث والاستعلام عنها يجب ان يكون لها جداول خدمية خاصة المهم يجب ان تعلم ان اي مشروع 80% منه هو اجادة وضبط الجداول فلا تخرج من الجداول ابدا حتى تتأكد انك استوفيت وأحكمت جميع اطراف مشروعك ناقش واعرض جداولك واستمر في المناقشة والاستفسار حتى تأخذ الضوء الاخضر من اخوانك هنا ..
Foksh قام بنشر الخميس at 15:56 قام بنشر الخميس at 15:56 20 دقائق مضت, ابوخليل said: تنقسم البيانات المتجددة الى نوعين .. هذه ملاحظة تصميمية رائعة جداً . حيث توضح أن البيانات المتغيرة يجب تقسيمها إلى نوعين بناءً على طبيعتها :- 🔹 النوع الأول وهو بيانات متغيرة تحتاج إلى تحديث مستمر في الجدول الأساسي . مثل الرتبة ، الوظيفة ، مكان العمل ، المؤهل ... إلخ . ويتم الاحتفاظ بأحدث قيمة داخل جدول الموظفين الرئيسي ، ويتم تحديثها عند حدوث تغيير . كما يتم تسجيل جميع الحركات السابقة في جدول منفصل ، بحيث يمكن الرجوع إليها عند الحاجة . برأيي هذه النقطة مهمة لأن البحث والتصفية على جدول واحد يكون أسرع وأسهل . أيضاً عند البحث عن بيانات حديثة لكل الموظفين ، لن تحتاج إلى جلب جميع الحركات السابقة ، بل فقط أحدث حالة لكل موظف . ويمكن تطبيق هذه الفكرة على سبيل المثال في الجدول personal_data ، أضافة حقول مثل :- current_rank ( الرتبة الحالية ) ، current_job ( الوظيفة الحالية ) ، current_workplace ( مكان العمل الحالي ) ، latest_qualification ( آخر مؤهل ) . وفي جداول الحركات ( مثل الترقيات والتعديلات ) ، يتم تسجيل جميع الحركات السابقة ، وعند حدوث تغيير جديد يتم تحديث الحقل المناسب في جدول الموظفين الرئيسي . 🔹 النوع الثاني من البيانات وهو بيانات مستقلة بالكامل . مثل الإجازات ، التدريبات ، الجزاءات ، العقوبات ... إلخ ، فهذه البيانات متغيرة لكنها لا تؤثر على المعلومات الأساسية للموظف بشكل مباشر . لكن لكل منها جدول مستقل ويتم ربطه بـ rkm_mlf . أيضاً هذه نقطة مهمة لأن الموظف يمكن أن يكون لديه عدد غير محدود من الإجازات والتدريبات والجزاءات ... إلخ ، وبالتالي لا يُفضل إضافتها إلى الجدول الرئيسي للموظفين . وكما أن الفصل بين البيانات يجعل الاستعلامات أكثر كفاءة ودقة ، حيث يمكنك البحث عن الإجازات دون التأثير على بيانات الموظفين الآخرين . وأيضاً يمكن تطبيق هذه الفكرة على سبيل المثال بحيث يكون لكل نوع بيانات جدول مستقل ، مثل :- Leave_data ( جدول الإجازات ) ، Training_data ( جدول التدريبات ) ، Penalty_data ( جدول الجزاءات ) ، Promotion_data ( جدول الترقيات ) . 💥 أما فيما يخص التسميات الخاصة بحقل الربط بين الجداول وكما أشار أستاذي @ابوخليل ؛ فبدلاً من استخدام rkm_mlf في جميع الجداول ، يمكن تسميته بشكل متمايز كما يلي :- rkm_mlf في جدول personal_data ( جدول الموظفين الرئيسي ) rkm_mlf_func في جدول functional_data rkm_mlf_qual في جدول qualification_data 1
ابوخليل قام بنشر الخميس at 16:02 قام بنشر الخميس at 16:02 2 دقائق مضت, Foksh said: هذه ملاحظة تصميمية رائعة جداً . حيث توضح أن البيانات المتغيرة يجب تقسيمها إلى نوعين بناءً على طبيعتها :- الأروع من ذلك شرحك الوافي الدقيق 1
Foksh قام بنشر الخميس at 16:06 قام بنشر الخميس at 16:06 2 دقائق مضت, ابوخليل said: الأروع من ذلك شرحك الوافي الدقيق جزاكم الله خيراً ، ونفع بكم وبعلمكم .. والحمد لله على ما تعلمناه بفضله ثم من توجيهاتكم في كثير من المواضيع ومتابعتي لخطواتكم
The best قام بنشر الخميس at 18:04 الكاتب قام بنشر الخميس at 18:04 سأحاول فعل ما تفضلتم به وسأعرضها على حضراتكم وبعد ذلك ننظر فيم سيحدث
The best قام بنشر الخميس at 21:51 الكاتب قام بنشر الخميس at 21:51 هل هذا هو المطلوب ؟ Personnel_affairs.rar
saud90 قام بنشر بالامس في 01:23 قام بنشر بالامس في 01:23 في نظري ما فعلته صحيح ولكن بقي كما قال الأستاذ أبو خليل ( لا ننسى الجداول الخدمية وهي مهمة جدا مثل : جدول المؤهلات ، جدول الوظائف ... الخ وجميع الأشياء التي تتوقع البحث والاستعلام عنها يجب ان يكون لها جداول خدمية خاصة) تحتاج جداول غير مرتبطة وبناء على جدول الموظفين تحتاج إلى جدول الديانات جدول الحالة الاجتماعية جدول الحنسية جدول المحافظات أو القرى جدول النوع ( ذكر - أنثى ) اعتقد هذا هو قصدك بالاضافة إلى الجداول المذكورة في كلمة الأستاذ أبو خليل الجداول الغير مرتبطة هي جداول تسهل عملية الادخال بدل الكتابة وتسهل عملية البحث والحصر عن طريق الاستعلام
The best قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات 13 ساعات مضت, saud90 said: في نظري ما فعلته صحيح ولكن بقي كما قال الأستاذ أبو خليل ( لا ننسى الجداول الخدمية وهي مهمة جدا مثل : جدول المؤهلات ، جدول الوظائف ... الخ وجميع الأشياء التي تتوقع البحث والاستعلام عنها يجب ان يكون لها جداول خدمية خاصة) تحتاج جداول غير مرتبطة وبناء على جدول الموظفين تحتاج إلى جدول الديانات جدول الحالة الاجتماعية جدول الحنسية جدول المحافظات أو القرى جدول النوع ( ذكر - أنثى ) اعتقد هذا هو قصدك بالاضافة إلى الجداول المذكورة في كلمة الأستاذ أبو خليل الجداول الغير مرتبطة هي جداول تسهل عملية الادخال بدل الكتابة وتسهل عملية البحث والحصر عن طريق الاستعلام بيانات النوع والمحافظة وتاريخ الميلاد محتاج استخرجهم من الرقم القومى
Foksh قام بنشر منذ 12 ساعات قام بنشر منذ 12 ساعات 18 ساعات مضت, The best said: هل هذا هو المطلوب ؟ تعديلاتك ممتازة جدًا! 1️⃣ العلاقة بين الجداول سليمة وصحيحة بالنسبة لي .. جدول personal_data أصبح الجدول الرئيسي ، ويرتبط بجميع الجداول الفرعية بعلاقة ( One-To-Many ) مما يعني أن كل موظف يمكن أن يكون له عدة سجلات في الجداول الأخرى كـ ( الإجازات ، العقوبات ، التدريبات ، ... إلخ ) . 2️⃣ فصل البيانات المتغيرة في جداول مستقلة .. التدريبات ، الإجازات ، العقوبات ، الوظائف ، المؤهلات كل منها في جدول مستقل ، مما يسهل عمليات البحث والاستعلام والتصفية . وهذا بالطبع سيجعل الاستعلامات أكثر كفاءة مقارنة بوضع جميع البيانات في جدول واحد 😉 . 3️⃣ تحسين التسمية .. وأيضاً واضح أنك استخدمت بادئة أسماء تمييزية (مثل rkm_mlf_Qual و rkm_mlf_Vaca ... إلخ ) لربط الجداول بـ personal_data بدون تكرار أسماء الحقول بشكل مربك . قد خطر ببالي أيضاً إضافة بسيطة :- 🔹 إضافة جداول دعم إضافية عند الحاجة ، مثل جدول أنواع الإجازات ، جدول أنواع الدورات التدريبية ، جدول أسباب العقوبات بدلاً من تخزينها كنصوص داخل الجداول الأساسية ، مما يسهل التعديل مستقبلاً .
The best قام بنشر منذ 9 ساعات الكاتب قام بنشر منذ 9 ساعات 2 ساعات مضت, Foksh said: تعديلاتك ممتازة جدًا! 1️⃣ العلاقة بين الجداول سليمة وصحيحة بالنسبة لي .. جدول personal_data أصبح الجدول الرئيسي ، ويرتبط بجميع الجداول الفرعية بعلاقة ( One-To-Many ) مما يعني أن كل موظف يمكن أن يكون له عدة سجلات في الجداول الأخرى كـ ( الإجازات ، العقوبات ، التدريبات ، ... إلخ ) . 2️⃣ فصل البيانات المتغيرة في جداول مستقلة .. التدريبات ، الإجازات ، العقوبات ، الوظائف ، المؤهلات كل منها في جدول مستقل ، مما يسهل عمليات البحث والاستعلام والتصفية . وهذا بالطبع سيجعل الاستعلامات أكثر كفاءة مقارنة بوضع جميع البيانات في جدول واحد 😉 . 3️⃣ تحسين التسمية .. وأيضاً واضح أنك استخدمت بادئة أسماء تمييزية (مثل rkm_mlf_Qual و rkm_mlf_Vaca ... إلخ ) لربط الجداول بـ personal_data بدون تكرار أسماء الحقول بشكل مربك . قد خطر ببالي أيضاً إضافة بسيطة :- 🔹 إضافة جداول دعم إضافية عند الحاجة ، مثل جدول أنواع الإجازات ، جدول أنواع الدورات التدريبية ، جدول أسباب العقوبات بدلاً من تخزينها كنصوص داخل الجداول الأساسية ، مما يسهل التعديل مستقبلاً . نأتى لمرحلة ادخال البيانات هل سيتم وضع الجداول فى استعلام واحد وكيف ومن ثم النموذج لادخال البيانات أم سيتم عمل نموذج لكل جدول ما هى الطريقة الصحيحة Personnel_affairs.accdb 1
Eng.Qassim قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات في 3/4/2025 at 18:18, ابوخليل said: لسبب في افضلية ايجاد فارق في التسمية هي احيانا تضطر الى ضم هذه الجداول في استعلام واحد نعم استاذنا ...في الاستعلام يظهر خطأ (العنوان مكرر) بصراحة في اعمالي استخدم العلاقات في الاستعلام او في النماذج ..اشعر بأن فيها مرونة والابتعاد عن الاخطاء 1
Foksh قام بنشر منذ 6 ساعات قام بنشر منذ 6 ساعات (معدل) 3 ساعات مضت, The best said: نأتى لمرحلة ادخال البيانات 🔹 قبل أن نصل إلى نقطة إدخال البيانات ، هناك بعض الأمور التي من الأفضل تجنبها لضمان تصميم سليم وقابل للتطوير . 1️⃣ استخدام مربعات التحرير والسرد داخل الجداول بشكل مباشر ليس فكرة جيدة ( من وجهة نظري وهي غير ملزمة طبعاً ) . 🔴 لماذا ؟ عند تخزين قيمة مثل "مصري" مباشرة داخل الجدول ، فإن أي استعلام أو كود VBA سيتعامل مع النصوص بشكل مباشر ، مما قد يبطئ عمليات البحث والاستعلامات . والأسباب التالية كفيلة بتغيير وجهة نظرك 😉 :- 1️⃣ يؤدي إلى تخزين القيم النصية بدلاً من القيم الرقمية المترابطة الى عدة مشاكل منها :- عند إدخال "مصري" مباشرةً داخل الحقل ، يصبح التعامل مع البيانات أبطأ عند تنفيذ الاستعلامات ، مقارنةً بتخزين رقم معرف (ID) وربطه بجدول منفصل يضم الجنسيات . فالأفضل هو تخزين القيم كأرقام مرجعية ( مثلاً ، 1 = مصري ، 2 = غير مصري ... إلخ ) وجلب النص عند الحاجة عبر الاستعلامات . 2️⃣ صعوبة في عمليات الفلترة والاستعلامات المتقدمة فعند الحاجة إلى إجراء استعلامات تعتمد على الجنسية ، مثلاً "كم عدد الموظفين المصريين؟" ، سيكون من الأفضل البحث باستخدام القيمة الرقمية (مثلاً gnsya = 1) بدلاً من البحث عن النصوص ( gnsya = "مصري" ) . فالبحث بالأرقام أسرع وأكفأ مقارنة بالبحث باستخدام النصوص . 3️⃣ تقييد التحديثات وإدارة البيانات عند الحاجة إلى تعديل اسم جنسية معينة ( مثلاً تغيير "مصرى" إلى "مصري" ) ، سيكون عليك تحديث جميع السجلات في الجدول ، مما يزيد من مخاطر الأخطاء . أما عند استخدام جدول منفصل للجنسيات ( كما فعلت ) ، فيكفي تحديثه في مكان واحد فقط وسينعكس التغيير تلقائيًا على جميع السجلات . 🎯 الخلاصة باختصار :- 1️⃣ التعامل مع الأرقام أكثر كفاءة في العمليات الحسابية ، الفلترة ، والبحث ... إلخ 2️⃣ عند الحاجة إلى تغيير اسم جنسية ، يتم تعديله في مكان واحد فقط وليس في جميع السجلات . 3️⃣ يتيح لك إنشاء علاقات أكثر قوة بين الجداول ويسهل بناء التقارير المستقبلية . تم تعديل منذ 5 ساعات بواسطه Foksh 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.