### مستندات پروژه پایگاه داده سیستم مدیریت سازمانهای خیریه
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت سازمانهای خیریه
**توضیح:** این پروژه برای مدیریت عملیاتهای مختلف سازمانهای خیریه طراحی شده است. سیستم شامل مدیریت کمکها، اهداکنندگان، پروژههای خیریه، داوطلبان و گزارشها است. هدف اصلی این سیستم، بهبود کارایی در پیگیری کمکهای مالی، مدیریت پروژههای خیریه، و سازماندهی فعالیتهای داوطلبان است.
#### ۲. شرح جداول پایگاه داده
##### جدول اهداکنندگان (`Donors`)
- **توضیح:** این جدول شامل اطلاعات مربوط به افرادی است که کمکهای مالی به سازمان خیریه ارائه میدهند.
- **فیلدها:**
- **DonorID:** شناسه منحصر به فرد برای هر اهداکننده (کلید اصلی).
- **FirstName:** نام اهداکننده.
- **LastName:** نام خانوادگی اهداکننده.
- **Email:** آدرس ایمیل اهداکننده.
- **PhoneNumber:** شماره تماس اهداکننده.
- **Address:** آدرس محل سکونت اهداکننده.
##### جدول کمکها (`Donations`)
- **توضیح:** این جدول شامل اطلاعات مربوط به کمکهای مالی که از طرف اهداکنندگان دریافت میشود، است.
- **فیلدها:**
- **DonationID:** شناسه منحصر به فرد برای هر کمک (کلید اصلی).
- **DonorID:** شناسه اهداکننده که کمک را ارائه داده است (کلید خارجی که به جدول `Donors` متصل است).
- **DonationDate:** تاریخ دریافت کمک.
- **Amount:** مبلغ کمک.
- **DonationType:** نوع کمک (مالی، کالا، خدمات).
##### جدول پروژههای خیریه (`CharityProjects`)
- **توضیح:** این جدول شامل اطلاعات مربوط به پروژههای خیریه که توسط سازمان اجرا میشود، است.
- **فیلدها:**
- **ProjectID:** شناسه منحصر به فرد برای هر پروژه (کلید اصلی).
- **Title:** عنوان پروژه.
- **Description:** توضیحات پروژه.
- **StartDate:** تاریخ شروع پروژه.
- **EndDate:** تاریخ پایان پروژه.
- **Budget:** بودجه تخصیصیافته به پروژه.
- **Status:** وضعیت پروژه (در حال اجرا، تکمیلشده، لغو شده).
##### جدول داوطلبان (`Volunteers`)
- **توضیح:** این جدول شامل اطلاعات مربوط به افرادی است که بهعنوان داوطلب در پروژههای خیریه مشارکت میکنند.
- **فیلدها:**
- **VolunteerID:** شناسه منحصر به فرد برای هر داوطلب (کلید اصلی).
- **FirstName:** نام داوطلب.
- **LastName:** نام خانوادگی داوطلب.
- **Email:** آدرس ایمیل داوطلب.
- **PhoneNumber:** شماره تماس داوطلب.
- **Address:** آدرس محل سکونت داوطلب.
- **Skills:** مهارتها یا تخصصهای داوطلب.
##### جدول مشارکت داوطلبان (`VolunteerProjects`)
- **توضیح:** این جدول شامل اطلاعات مربوط به مشارکت داوطلبان در پروژههای خیریه است.
- **فیلدها:**
- **VolunteerProjectID:** شناسه منحصر به فرد برای هر مشارکت داوطلب (کلید اصلی).
- **VolunteerID:** شناسه داوطلب که در پروژه مشارکت کرده است (کلید خارجی که به جدول `Volunteers` متصل است).
- **ProjectID:** شناسه پروژهای که داوطلب در آن مشارکت دارد (کلید خارجی که به جدول `CharityProjects` متصل است).
- **Role:** نقش داوطلب در پروژه.
- **Hours:** تعداد ساعتهایی که داوطلب به پروژه اختصاص داده است.
##### جدول گزارشها (`Reports`)
- **توضیح:** این جدول شامل اطلاعات مربوط به گزارشهای مالی و پیشرفت پروژهها است.
- **فیلدها:**
- **ReportID:** شناسه منحصر به فرد برای هر گزارش (کلید اصلی).
- **ReportDate:** تاریخ تهیه گزارش.
- **ReportType:** نوع گزارش (مالی، پیشرفت پروژه).
- **Description:** توضیحات گزارش.
- **FilePath:** مسیر فایل گزارش در سیستم.
#### ۳. شرح روابط جداول
- **ارتباط بین جدول اهداکنندگان و جدول کمکها:** هر اهداکننده میتواند چندین کمک مالی ارائه دهد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول پروژههای خیریه و جدول مشارکت داوطلبان:** هر پروژه خیریه میتواند شامل چندین داوطلب باشد و هر داوطلب میتواند در چندین پروژه مشارکت کند، بنابراین بین این دو جدول یک ارتباط چند به چند (Many-to-Many) برقرار است که توسط جدول `VolunteerProjects` مدیریت میشود.
- **ارتباط بین جدول داوطلبان و جدول مشارکت داوطلبان:** هر داوطلب میتواند در چندین پروژه خیریه مشارکت کند، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول پروژههای خیریه و جدول گزارشها:** هر پروژه خیریه میتواند دارای چندین گزارش باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `DonorID` در جدول `Donations` به جدول `Donors` و `ProjectID` در جدول `VolunteerProjects` به جدول `CharityProjects` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمامی کمکهای مالی از یک اهداکننده خاص:**
- با استفاده از `DonorID` میتوان لیست تمام کمکهای مالی ارائهشده توسط یک اهداکننده خاص را از جدول `Donations` استخراج کرد.
- **پیگیری پروژههای خیریه که داوطلبی در آنها مشارکت دارد:**
- با استفاده از `VolunteerID` در جدول `VolunteerProjects` میتوان پروژههایی که یک داوطلب خاص در آنها مشارکت کرده است را مشاهده کرد.
- **مشاهده گزارشهای مالی مربوط به یک پروژه خاص:**
- با استفاده از `ProjectID` در جدول `Reports` میتوان گزارشهای مالی و پیشرفت مربوط به آن پروژه را مشاهده کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت سازمانهای خیریه را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.