PDA

View Full Version : اتوماسیون اداری



elham366
یک شنبه 26 تیر 1390, 16:29 عصر
سلام
من دارم یه دیتابیس برای اتوماسیون اداری طراحی میکنم، یه سری گروههای کاری دارم که هر کدوم یه کارتابل دارن و هر کارتابلی یه لیست تماس داره که توش ایمیلهای کارکنان ذخیره میشه...
Groups{GroupId(PK),CartableId(FK)}
Cartable{CartableId(PK)}
Cartable_Contact{CartableId(PK,FK),StaffId(PK,FK)}
Account{StaffId(PK)}
میخواستم ببینم آیا این طراحی درسته؟

Galawij
یک شنبه 26 تیر 1390, 20:09 عصر
هر کدوم یه کارتابل دارن و هر کارتابلی یه لیست تماس داره که توش ایمیلهای کارکنان ذخیره میشه...

سلام
این قسمت از توضیحاتتون را متوجه نشدم میشه بیشتر توضیح بدید(مفهوم کارتابل یعنی چی؟)
همین الان بانک اطلاعاتیتون مشکل داره. مسئله را از دید تحلیلی بیان کنید تا بریم جلو.

elham366
دوشنبه 27 تیر 1390, 15:10 عصر
سلام
این قسمت از توضیحاتتون را متوجه نشدم میشه بیشتر توضیح بدید(مفهوم کارتابل یعنی چی؟)
همین الان بانک اطلاعاتیتون مشکل داره. مسئله را از دید تحلیلی بیان کنید تا بریم جلو.

ممنون از توجه تون
هر گروهی یه کارتابل داره، کارتابل مثل یه میز کاره... هر کسی که عضو گروه باشه میتونه کارتابل رو ببینه... زیاد کارتابل مهم نیست، بخشیش برام مهمه که کارمندان برای هم میخوان میل بفرستن، یه کانتکت لیست در هر کارتابل وجود داره که شامل ایمیلهای کارمندان است(اونایی که عضو گروه های دیگه هستن) یه چیزی مثل همین کانتکت لیست هایی که توی میل سرورها داریم میخوام...
یعنی به ازای هر گروه، یه کارتابل،چند تا عضو داریم
هر کارتابل 1 کانتکت لیست داره
هر کانتکت لیست، شامل چند تا ایمیل کارمنده

حمیدرضاصادقیان
دوشنبه 27 تیر 1390, 15:42 عصر
سلام.
ببینید برای طراحی کارتابل شما نیازی نیست کارتابلها رو جدا کنید.
کارتابل باید دارای ID اون پرسنل باشه که در سیستم تعریف میشه.
و هر پرسنلی که به پرسنل دیگه نامه ای ارسال میکنه یا ایمیلی میده یا ... باید نام گیرنده مشخص بشه.
نام گیرنده که مشخص میشه وقتی شما میخواهید در کارتابل اضافه کنید اون کد پرسنلی نام گیرنده رو در کد پرسنلی کارتابل قرار میدید.
اینجوری هر پرسنلی که وارد سیستم بشه با یک فیلتر روی جدول کارتابل میتونید لیست نامه هاشو بهش نمایش بدید.

Galawij
دوشنبه 27 تیر 1390, 19:20 عصر
سلام دوست من
همانطور که جناب صادقیان عرض کردند لازم نیست برای انواع کارتابل و نامه های (کانتکت لیستها) مربوط به هر کارتابل جداول جداگانه ای در نظر بگیرید. یک جدول کافیه.
توضیحات: ببینید وقتی یک پروژه از تجزیه و تحلیل شروع می شه بعد به بانک اطلاعاتی می رسه و بعد به طراحی فرم ها و نرم افزار به خاطر اینه که همیشه وقتی پروژه ای رو شروع می کنیم این دید تحلیلی و پایه اصلی نرم افزار هست که مسیر پیاده سازی را مشخص می کنه، نه با یک دید از نرم افزار پیاده سازی شده و یا نرم افزار های مشابه بخواهیم به تحلیل برگردیم (مهندسی معکوس در این مورد جواب نمی ده).
احساس می کنم شما مسئله را دارید از بالا به پائین نگاه می کنید درصورتی که باید عکس باشه. به نظر من مفهوم کارتابل و اینکه هر گروه کاربری یک کارتابل دارد به عنوان فرم ها و برچسبهای برنامه شما(در مرحله design) بر می گردد نه به تحلیل بانک اطلاعاتی.
شما اگر یک جدول برای انواع گروه کاربران تعریف کنید و از این جدول یک ارتباط یک به چند به جدول مشخصات کاربران بدید و با توجه به اینکه در جدول لیست نامه کد هر کاربر (چه به عنوان فرستنده نامه و چه به عنوان دریافت کننده نامه ) مشخص می شود، در نتیجه خیلی راحت گروه کاربری پرسنل مورد نظر نیز بدست می آید که می شود همان کارتابل.
امیدوارم منظورم را رسونده باشم.

elham366
دوشنبه 27 تیر 1390, 23:47 عصر
در جواب آقای صادقیان:
من متوجه منظورتون نمیشم که میگید کارتابلها رو نمیخواد جدا کنی!!! یعنی چی؟؟!!! یعنی جدول کارتابل نگیرم؟
بعدش گفتید که :"اینجوری هر پرسنلی که وارد سیستم بشه با یک فیلتر روی جدول کارتابل میتونید لیست نامه هاشو بهش نمایش بدید."
پس یعنی شما میگید که یه جدول کارتابل داشته باشم؟
----------------------------------------------------------------------------------
در جواب galavezh (http://barnamenevis.org/member.php?60171-galavezh) :
اون جدول Cartable_Contact نوع خاصی از کارتابل نیست، بلکه مثلا شماره پرسنلی دوستان کارتابل جاریه! یعنی میگید این جدول نیازی نیست؟ مثلا توی همین سایت، مگه اسم دوستان من توی دیتابیس ذخیره نمیشه؟ چه جوری اینکارو میکنن؟
و اینکه میگید کارتابل به مرحله دیزاین برمیگرده رو باهاش موافقم،الان شما فک کنید من همون جدول Groups رو دارم و میخوام یه لیستی از دوستان هر گروه رو که داخل اون گروه نیستن رو بسازم،چیکار کنم؟

Galawij
سه شنبه 28 تیر 1390, 07:37 صبح
در جواب galavezh (http://barnamenevis.org/member.php?60171-galavezh) :
اون جدول Cartable_Contact نوع خاصی از کارتابل نیست، بلکه مثلا شماره پرسنلی دوستان کارتابل جاریه! یعنی میگید این جدول نیازی نیست؟ مثلا توی همین سایت، مگه اسم دوستان من توی دیتابیس ذخیره نمیشه؟ چه جوری اینکارو میکنن؟

شما مگر یک جدول برای لیست کاربران ندارید می تونید از این جدول استفاده کنید.

و اینکه میگید کارتابل به مرحله دیزاین برمیگرده رو باهاش موافقم،الان شما فک کنید من همون جدول Groups رو دارم و میخوام یه لیستی از دوستان هر گروه رو که داخل اون گروه نیستن رو بسازم،چیکار کنم؟
از طریق یک دستور Select و با یک شرط Like قابل بازیابی هستند.تحلیل درست رو پایه ریزی کنید گزارش گیری به هر طریقی ممکن می شه.

حمیدرضاصادقیان
سه شنبه 28 تیر 1390, 08:27 صبح
من قبلا روی سیستم اتوماسیون کامل کار کردم.
ببینید من ابتدا شیوه تئوری رو توضیح میدم.
1- در سیستم اتوماسیون ما ابتدا میایم لیست پرسنل شرکت رو تعریف می کنیم.این پرسنل در جدول جداگانه ای ذخیره می شود و مشخصات آنها مثل عکس ، نام ، امضا ، آدرس و غیره نگهداری می شود.
2- برای هر پرسنل در جدول کاربران یک ردیف ایجاد می کنیم و یک نام و پسورد به اون پرسنل می دهیم.در جدول کاربران ما فقط کد پرسنل رو داریم و یک UserName,PAssword.
3- وقتی که نامه وارد جریان اداری میشه ابتدا باید این نامه مشخصاتش ثبت بشه. که در یک جدول جداگانه مشخصات ثبت میشه.
4- این نامه یک ID داره که در تمام سیستم با این ID شناخته خواهد شد.
5- ما این نامه رو وارد دبیرخانه مرکزی میکنیم. برای تعریف دبیرخانه ما یک جدول جداگانه داریم که لیست دبیرخانه ها هست.
6- یک جدول داریم که در زیر مجموعه هر دبیرخانه پرونده ها مشخص میشه.
7- این نامه با ID مربوطه وارد دبیرخانه مرکزی میشه. که میتونه یا نامه رو بایگانی کنه یا ارجاع بده به اشخاص.
8- در جدول کارتابل که یک جدول بیشتر نیست ما این پارامترها برامون خیلی اهمیت داره .
1-8- شماره نامه
2-8- کد پرسنل گیرنده
3-8- کد ارجاع دهنده
4-8- وضعیت نامه
5-8- توضیحات نامه
و...
شماره نامه که همون ID هست که ابتدای ورود به نامه ما ثبت کردیم.
کد پرسنل گیرنده و کد ارجاع دهنده همون کد پرسنل هستند که وارد سیستم شده اند.
وضعیت نامه نیز از جدولی به همین نام یا یک جدول Lookup که این پارامترها داخل اون تعریف شده مشخص خواهد شد.
وقتی مثلا مدیر مجموعه وارد سیستم میشه با کد پرسنلی 10.
اینجا میاد نامه رو ارجاع میده مثلا به من که کد پرسنلی من هست 12.
حالا در کارتابل کد ارجاع دهنده 10 ثبت میشه و کد گیرنده 12.
خیلی راحت میشه با یک Join لیست کاربران رو فهمید.
حالا فرض کنید شما میخواهید فقط نامه های کاربر 10 رو ببینید.
یک Select ساده که در شرطش مثلا می نویسید Where PersId=10 ، به شما نمایش داده خواهد شد.
بعد میتوانید براساس کد وضعیت نامه نیز نامه ها رو تقسیم بندی کنید.
مثلا فرض کنید یک نامه در دست اقدام هست، یکی پیگیری هست و... که با کدهایی که بهش میدیم میشه اینارو از هم تفکیک کرد.

امیدوارم توضیحات واضح بوده باشه.

elham366
سه شنبه 28 تیر 1390, 10:32 صبح
شما مگر یک جدول برای لیست کاربران ندارید می تونید از این جدول استفاده کنید.

از طریق یک دستور Select و با یک شرط Like قابل بازیابی هستند.تحلیل درست رو پایه ریزی کنید گزارش گیری به هر طریقی ممکن می شه.

جدول Account همون جدول لیست کاربرانی است که شما می فرمایید،Groups هم که همون گروههاست، با توجه به توضیحاتی که من دادم رابطه این دو جدول چند به چنده(هر گروه چند تا دوست داره و هر شخص میتونه در لیست دوستان چند گروه باشه) پس اینجا یه جدول احتیاج داریم که این رابطه چند به چند رو بشکنه! همون جدول Group_Contact هستش که حکم weak entity رو داره! سوال من از ابتدا این بود که اینکار برای ذخیره سازی لیست دوستان درسته؟

elham366
سه شنبه 28 تیر 1390, 10:45 صبح
8- در جدول کارتابل که یک جدول بیشتر نیست ما این پارامترها برامون خیلی اهمیت داره .
1-8- شماره نامه
2-8- کد پرسنل گیرنده
3-8- کد ارجاع دهنده
4-8- وضعیت نامه
5-8- توضیحات نامه
و...

من واقعا ممنونم از شما
توی قسمت 8 که فرمودید کد پرسنل گیرنده هم ذخیره میشه، اگر نامه بیش از یک گیرنده داشته باشه چی؟ آیا نباید یه جدول جدا برای گیرنده ها داشته باشم؟ که فقط آی دی نامه ها با گیرنده ها توش باشه.

حمیدرضاصادقیان
سه شنبه 28 تیر 1390, 11:45 صبح
نه نیازی به این کار نیست
برای هر گیرنده شما یک ردیف ثبت میکنید.
چون مجزا کردن جدول کارتابل بعد در گزارشات مشکل ساز خواهد شد.
فرض کنید یک مدیر نیاز هست کارتابل افراد مختلف رو ببینه.
در اینجا Join های اضافی با جدول گیرنده ها به وجود میاد.
ولی در یک کارتابل تمام گردش نامه ها هست. و اگر یک نامه به چند نفر ارسال شده ترکیب کد نامه با گیرنده نامه میشه کلید اصلی شما .

Galawij
سه شنبه 28 تیر 1390, 13:13 عصر
جدول Account همون جدول لیست کاربرانی است که شما می فرمایید،Groups هم که همون گروههاست، با توجه به توضیحاتی که من دادم رابطه این دو جدول چند به چنده(هر گروه چند تا دوست داره و هر شخص میتونه در لیست دوستان چند گروه باشه) پس اینجا یه جدول احتیاج داریم که این رابطه چند به چند رو بشکنه! همون جدول Group_Contact هستش که حکم weak entity رو داره! سوال من از ابتدا این بود که اینکار برای ذخیره سازی لیست دوستان درسته؟
بله درسته از یک weak entity (جدول کمکی ) استفاده می کنیم. ولی قاعدتاً Id این جدول دو بار (کد پرسنل گیرنده و کد ارجاع دهنده) در جدول کارتابل(لیست نامه های ارسالی و دریافتی) وارد می شه.