سؤال

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

اعتمادا على موقف الموظف، سيكون لديهم سوى الوصول إلى سجلات الذين تحتها.

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

هل كانت مفيدة؟

المحلول

تستخدم طريقة واحدة شائعة لإبقاء هذا النوع من البيانات الهرمية في قاعدة بيانات فقط جدول واحد، مع وجود حقول مثل هذا:

  1. Userid (المفتاح الأساسي)
  2. اسم االمستخدم
  3. يشير المشرف (المفتاح الخارجي للإرشاد الذاتي "، إلى مستخدم آخر آخر في نفس الجدول)
  4. PositionCode (يمكن أن يكون بسيطا مثل 1 = Lakey، 2 = المشرف؛ أو مفتاح أجنبي يشير إلى جدول آخر من المواقف)
  5. ... أيا كان ما تحتاج إلى تخزين لكل موظف ...

ثم يستخدم تطبيقك استعلامات SQL لمعرفة الأذونات. لمعرفة الموظفين الذين يشرفون "x" (الذين يعتبر userid "3 '، على سبيل المثال) لمعرفة، يمكنك الاستعلام عن جميع الموظفين حيث المشرف = 3.

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

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

لقد وضعت موضة في هذا المثال في حال كنت تريد أن يكون لدى بعض الأشخاص أذونات مختلفة ... على سبيل المثال، قد يكون لديك رمز "99" لموظفي الموارد البشرية الذين لديهم الحق في رؤية قائمة جميع الموظفين.


ربما سأترك بعض الآخرين يحاولون شرح ذلك أفضل ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top