PDA

View Full Version : طراحی چارت سازمانی



mr.sirwan
دوشنبه 07 مهر 1399, 16:08 عصر
سلام دوستان
بنده یه نرم افزار دارم که باید چارت سازمانی داشته باشه حالا من دوتا جدول دارم یکی برای سازمان ها و واحدهاشون و اونیکی برای پرونده پرسنل که شامل کلید خارجی از جدول سازمان ها هست، به این شکل:

Organization: Id, Name, ParentId
Personnel: Id, Name, OrganId, Title, SupervisorId


ستون SupervisorId آیدی مافوق پرسنل هست
حالا با این پیاده سازی چنتا مشکل میاد سر راهم:
۱. اینکه هر پرسنل فقط یه جایگاه شغلی میتونه داشته باشه (ولی ممکنه توی بعضی سازمان ها یا هلدینگ ها یک شخص چندین جایگاه شغلی داشته باشه - اون پراپرتی Title برای مشخص کردن سمت یا جایگاه شغلی فرده که در این پیاده سازی جنسش استرینگه.)

۲. من میخوام طرف بتونه به این شکل چارت سازمانیشو طراحی کنه:
152210
اما مشکلی که هست به خاطر نحوه پیاده سازی جدول پرسنل و ارگان ها، همچین طراحی ای ممکن نیست، فک کنم خودتون هم حدس بزنید مشکل از چیه، مشکل اینه که اصلا سازمان ها نمیتونن زیر مجموعه یک پرسنل باشن و همچنین یک شخص هم نمیتونه به طور غیرمستقیم زیرنظر شخصی خارج از سازمان یا واحد خودش باشه، یعنی اگه برای یک شخص آیدی مافوق یا همون ستون SupervisorId رو ست کنیم، اون شخص مستقیما زیرمجموعه مافوق خواهد بود و دیگه نمیشه توی یک واحد جداگانه بذاریش، نتیجه این محدودیت ها میشه طراحی زیر که در حال حاضر باهاش مشکل دارم:
152211
حالا چیزی که به ذهنم رسیده اینه که طراحی رو یکم تغییر بدم به این شکل که توی جدول ارگان ها، یک پراپرتی دیگه اضافه کنم که مشخص کننده نوع رکورد باشه، حالا نوع رکورد دو مقدار خواهد داشت، یک: جنس سازمان، دو: جنس جایگاه شغلی
و همچنین توی جدول پرسنل ستون SupervisorId و ستون Title رو حذف کنم، طراحی جدید به این شکل درمیاد:
Organization: Id, Name, ParentId, RecordType
Personnel: Id, Name, OrganId

توی این طراحی سازمان ها و واحدها و جایگاه های شغلی توی جدول Organization ثبت میشن، و برای پرسنل آیدی رکوردی از جدول Organization ست میشه که از نوع جایگاه شغلی باشه
البته این طراحی رو فعلا پیاده سازی نکردم و نمیدونم توی عمل جوابگو خواهد بود یا نه، ولی بصورت تئوری این طراحی، مشکل دوم رو که بالا ذکر کردم رفع میکنه
برای مشکل اول هم فک کنم باید یه جدول واسط بسازم که هم آیدی Organization رو داشته باشه هم آیدی جدول Personnel رو که بشه برای یک شخص چندین جایگاه تعیین کرد، و اون ستون OrganId توی جدول پرسنل رو هم باید حذف کنم
اینا تحلیلایی هست که خودم انجام دادم اما خواستم با دوستان هم یه مشورتی داشته باشم ببینم آیا همین طراحی جوابگو خواهد بود یا راه بهتری هست برای اینکار؟

Mahmoud.Afrad
چهارشنبه 16 مهر 1399, 06:01 صبح
یک طراحی هم من میگم ببینید چطوره:
یک جدول برای شخص
یک جدول برای سازمان که خود ارجاع هست
یک جدول برای تعریف همه جایگاه های شغلی و سازمانی مثل مدیر، معاون، ... .
یک جدول برای ارتباط سازمان با جایگاه شغلی هر سازمان
یک جدول برای ارتباط شخص با سازمان و جایگاه شغلی

mr.sirwan
چهارشنبه 16 مهر 1399, 13:25 عصر
تشکر از پاسختون جناب افراد، منظور شما همچین طراحی ای هستش؟
Person: Id, Name

Organization: Id, Name, ParentId

Title: Id, Name

OrganTitle: Id, OrganId, TitleId

PersonOrganTitle: Id, PersonId, OrganTitleId

Mahmoud.Afrad
چهارشنبه 23 مهر 1399, 04:11 صبح
بله. ببینید به کارت میاد. کوئری رو بنویس ببین جواب میده

mr.sirwan
چهارشنبه 23 مهر 1399, 18:16 عصر
بله قبلا میخواستم این طراحی رو پیاده کنم ولی فک کنم مدیریت و کوئری هارو سخت میکنه، چون بنده نرم افزارم از قبل تکمیل شده، فقط الان میخوام این بخش تعریف چارت سازمانی رو یه دستی رو سر و روش بکشم، اگه بخوام از این طریق پیاده کنم کل نرم افزار و جاهایی که با عناوین یا سمت های شغلی و نام سازمان ها سرو کار دارن رو باید بازبینی و بازنویسی کنم و از همه مهمتر اینکه باور کنید خیلی از مشتری ها با طراحی قبلی هم که فقط میبایست در دو مرحله، اول سازمان هارو تعریف کنند و در مرحله دوم پرسنل رو، بازم تو تعاریفشون مشکل دارن و بعضا نمیتونن اینکارو بکنن که خیلی خیلی ساده هم هستش، حالا با این طراحی جدید خودتون تصورشون کنید :لبخند::گیج:
ولی حتما یه امتحانی میکنم ممنون از راهنماییتون