• 0
dot.net2008

إستفسار عن كيفية عمل الجداول ضمن قاعدة البيانات

سؤال

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

اخواني الكرام احياناً اصل لمرحلة في تصميم قاعدة البيانات تجعلني اقعد عن اكمال المشروع

مع ان الفكرة جداً متداولة علما اعتقد

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

عندي مثال حيجنّني :confused::confused: الرجاء التركيز معي إذا تكرمتم

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

المدراء

المشرفين

العمال

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

المشكلة الأولى :

1- يحق لكل المدارء الدخول للبرنامج من خلال اسم مستخدم وكلمة مرور تُعطى له .

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

السؤال الأن :

أولاً : هل أقوم بعمل جدول للمستخدمين اسميه (Users)

إذا كانت الإجابة بنعم : لماذا ووكيف ؟؟ وهل سأقوم بربطه من خلال الـ ID (لا اعتقد ان هذه الطريقة فعالة)..

إذا كانت الإجابة بلا : إذاَ ما الحل ؟؟ (بحيث لا أريد عمل تكرار للبيانات وبنفس الوقت لا اريد ان اكثر من عمليات البحث والإستعلام (Select))

--

ثانياً : إذا اقنعتني وتم إضافة جدول Users كيف سيتم اخد بيانات كلاً من المدراء والمشرفين

ولاتقلي انه حياخذ الـ id من هذا الـ Table ومن هذا الـ Table لانه ممكن يحصل صدفة ويصادف رقم الـ id الموجود بجدول المدراء يساوي رقم الـ ID الموجود في جدول المشرفيين !!!!

ماهو الحل يارعاكم الله ؟؟؟!

---------

المشكلة الثانية : ماذا لو تم ترقية مشرف ما , من رتبة مشرف إلى مرتبة مدير !!!

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

إذا ما الحل بهذه القضية ... :(

ساعدوني رجاء والله إني داخل بـ 600 حيط :D:D

وهل لديكم إقتراحات لعمل ذلك بطريقة مُثلى وتسهل علي فيما بعد التعديل على الـ TABLE وإضافة وتعديل الـ Columns

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

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

بالنسبة للمشكلة الأولى:

لا أنصحك بعمل جدول Users لعدة أسباب:

1-لأن ذلك قد يعرض البرنامج لخطر الإختراق عن طريق Sql Injection إذا كان كود البرنامج يحتوي على نقاط ضعف.

2-لأنه من الممكن الدخول للداتا بيز بشكل مباشر من خارج برنامجك.

3--لأنك لا تريد تكرار أسماء الأشخاص في جدول Users ولا تستطيع إستخدام الربط عن طريق Id لأنه من الممكن أن يتساوى Id في كلا الجدولين ( المشرفين والمدراء ).

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

بالنسبة للمشكلة الثانية :

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

ملاحظة :

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

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

تم تعديل بواسطه DOWNLOADER
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم كما قال الأخ DOWNLOADER ..

جدول واحد يكفي للكل فقط التغيير ما بينهم في صفوف الرتبة والصلاحيات ...

تحياتي :happy:

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخواني الكرام شكراً جزيلاً لكم على مساعدتي في الكيفية

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

----------

بارك الله فيكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .