PDA

View Full Version : طراحی دیتابیس گردش کار یه شرکت خصوصی



dehqhani
چهارشنبه 07 خرداد 1393, 15:19 عصر
با سلام

من میخوام با سیشارپ یه برنامه گردش کار بنویسم

نحوه کار باتوجه به عکسی که آپلود کردم اینجوری هست.


ما تو شرکتمون یک فرم داریم شبیه فرمی که در عکس اوردم .

این فرم طوری هست که واحد ثبت چند تا از مقادیر این فرم را پر میکنه و سپس این فرم رو به سرپرست مورد نظرش ارسال میکنه .و اون سرپرست فقط اجازه داره فیلدها را ببیند و این فرم را به کارشناس مربوطه ارسال کند .
و کارشناس فقط می تواند فیلدهایی که در عکس مشخص کردم را تکمیل و ثبت کنه و سایر فیلدها برایش نمایش پیدا کنه .و فقط خواندنی باشه براش


حالا من میخوام بهم کمک کنید که این فرم را به جدول تبدیل کنم


119593

emad4000
چهارشنبه 07 خرداد 1393, 19:49 عصر
حالا من میخوام بهم کمک کنید که این فرم را به جدول تبدیل کنم


بستگي به برنامتون داره
اگر اين فرم ثابت هست و قرار نيست در Runtime برنامه عوض بشه و نقش ها و اختياراتشون هم ثابتن كه كار راحته
كافيه جدولي بسازي كه 8 تا ستون معادل اين 8 فيلدي كه گفتي و به علاوه فيلدهاي كليداصلي و اعتبارسنجي و غيره داشته باشه
بعداً با كدنويسي بايد چك كني كه چه كساني مجوز دارن كدوم فيلدها رو ببينن و كدوم فيلدها رو ويرايش كنن

ولي در صورتي كه اينطور نيست دقيقاً معين كن كه فرم ها و نقش ها ثابت هستند يا پويا تا بريم سراغ طراحيش

dehqhani
پنج شنبه 08 خرداد 1393, 07:07 صبح
سلام

نقشها ثابت هست ولی ممکن هست در اینده تعدا فیلدها کم یا زیاد بشه

dehqhani
پنج شنبه 08 خرداد 1393, 13:54 عصر
سلام

میتونید یه کم بیشتر برام توضیح بدین تا مسئله برام روشن بشه

همونطور که گفتین بله وظایف ثابت هستن و فرمها هستند که ممکن هست بعدها که پروژه گسترش یافت تغییر کنن ولی نقشها با وظایفشون ثابت هست

همونطور که قبلا هم توضیح دادم رروال کار بصورت زیر هست:

مرحله اول: واحد ثبت فرم را با فیلدهایی که مشخص کردم پر میکنه و سپس سرپرست مورد نظرش رو انتخاب میکنه و او رو ارجاع میده به سرپرست
مرحله دوم : سرپرست وارد سیستم میشه و فرمهایی که براش اومده رو میبینه و سپس اونها رو میبینه و سپس فرم جاری رو به کارشناس مورد نظر ارجاع میده
مرحله سوم: کارشناس وارد سیستم میشه و فرمهایی که به اون ارجاع داده شده را میبیند و سپس آنها را باز میکند و فیلدهای مورد نظر را تکمیل و ثبت میکند .

در اینجا برای من جای سوال هست که چطور کاری کنم که برای هر گروه (واحدثبت، سرپرست، کارشناس) فیلدهای مربوط به خودشان را بتوانند ویرایش کنند .


***آیا نیاز به جدول کمکی هست
*** آیا باید فیلدهای جدولم را به چند قسمت تقسیم کنم و هر کدام را در جدول جداگانه قرار بدم


بهترین راهکار را چی هست.؟

با تشکر

emad4000
یک شنبه 25 خرداد 1393, 12:03 عصر
سلام
راه حل اول : سطح دسترسی در حد ستون
یه جدول بساز و اطلاعات جداول خودت رو توش بریز

TableProperties = {tID : int, tName : nvarchar, ... }


بعد یه جدول بساز و اطلاعات همه ستون های بقیه جداول رو توش بریز (ضمناً کلید خارجی به جدول قبلی هم داره

ColumnProperties = {cID : int, cName : nvarchar, tID : int, ... }


بعد جدولی برای نگه داری نقش ها بساز

Roles = {rID : int, rName : nvarchar, ... }


حالا جدول اصلی برای نگه داری مجوزها که یه کلیدخارجی به جدول نقش ها و یه کلید خارجی به جدول ستون ها داره

Permissions = {rID : int, cID : int, c : bool, r : bool, u : bool, d : bool, ... }

توی این جدول مشخص میکنی که فلان نقش (مثلاً سرپرست شرکت) در مورد ستون فلان (مثلاً کارشناس انتخاب شده) مجوزهای ثبت داده (Create) و خواندن داده (Read) و بروزرسانی (Update) و حذف (Delete) رو داره یا نه.

همچنین دو تا جدول برای ذخیره سازی افراد و نقش های منتسب به این افراد هم داریم
این روش برای مجوزدهی در سطح ستون ها هست. توی کدنویسیت هرکاربری باید قبل از انجام کارش، ببینه مجوزش رو داره یا نه.

حالا یه کار دیگه هم می تونی انجام بدی اینه که ستون های مربوط به هم رو توی جداول مجزا قرار بدی و از سطح دسترسی در حد جدول استفاده کنی، به این شکل که جدول ColumnProperties رو حذف کنی و در جدول مجوزها به جای کلید خارجی به cID از کلید خارجی به tID استفاده کنی. البته این روش رو بهت توصیه نمی کنم، چون هم ممکنه فیلدهات عوض بشه و هم ممکنه نرمال بودن جداولت به هم بخوره

در نهایت اینکه این روش ها برای افزایش کارایی پیچیده تر هم میشن، مثل ساخت گروه مجوز و ... که من اونارو نگفتم.

dehqhani
یک شنبه 25 خرداد 1393, 12:54 عصر
سلام


حالا من تو همین فرم یه مشکل دیگه هم دارم

این هست که من حالا که اطلاعات را داخل این فرم پر کردم و دکمه ثبت روزدم و به کمک گرید ویو نمایش دادم

میخوام طوری باشه که وقتی سرپرست یه فرمی رو انتخاب میکنه و به یکی ازکارشناسها ارسال میکنه

مثل همون جوری که برامون تو سایت یاهمو یا دیگر سایتها ایمیل جدید میاد و جدیدترین ایمیل در بالا قرار میگیره و ما میتونیم اونها رو گروه بندی کنیم

و یا داخل یک پوشه بزاریم

من میخوام این کار رو با این گردش کار کوچیکی که ساختم هم اعمال کنم

زبان asp و سی سارپ

اگه جوابش رو بدونین خیلی بهم کمک کردین

emad4000
دوشنبه 26 خرداد 1393, 13:25 عصر
اگه جوابش رو بدونین خیلی بهم کمک کردین

سوالي كه شما پرسيديد ديگه در چارچوب اين تاپيك نيست و پيشنهاد ميكنم در تالار بيشتر روي اين موضوع و بحث ارجاعات جستجو كنيد
ولي مختصر بگم كه با يه مرتب سازي براساس تاريخ ارجاعات به هدفتون مي رسيد.
موفق باشيد