### مستندات پروژه پایگاه داده سیستم مدیریت خدمات پستی
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت خدمات پستی
**توضیح:** این پروژه برای مدیریت عملیاتهای مختلف خدمات پستی طراحی شده است. سیستم شامل مدیریت بستهها، مشتریان، شعبات پستی، کارمندان، و تراکنشهای مالی است. هدف اصلی این سیستم، بهبود کارایی در پیگیری بستهها، مدیریت شعبات، و سازماندهی فعالیتهای مالی و کارمندان است.
#### ۲. شرح جداول پایگاه داده
##### جدول مشتریان (`Customers`)
- **توضیح:** این جدول شامل اطلاعات مربوط به مشتریانی است که از خدمات پستی استفاده میکنند.
- **فیلدها:**
- **CustomerID:** شناسه منحصر به فرد برای هر مشتری (کلید اصلی).
- **FirstName:** نام مشتری.
- **LastName:** نام خانوادگی مشتری.
- **PhoneNumber:** شماره تماس مشتری.
- **Email:** آدرس ایمیل مشتری.
- **Address:** آدرس محل سکونت مشتری.
##### جدول شعبات پستی (`PostOffices`)
- **توضیح:** این جدول شامل اطلاعات مربوط به شعبات پستی مختلف است.
- **فیلدها:**
- **PostOfficeID:** شناسه منحصر به فرد برای هر شعبه (کلید اصلی).
- **Location:** محل شعبه (آدرس شعبه).
- **PhoneNumber:** شماره تماس شعبه.
- **ManagerName:** نام مدیر شعبه.
##### جدول بستهها (`Parcels`)
- **توضیح:** این جدول شامل اطلاعات مربوط به بستههایی است که در سیستم پستی ثبت شدهاند.
- **فیلدها:**
- **ParcelID:** شناسه منحصر به فرد برای هر بسته (کلید اصلی).
- **SenderID:** شناسه مشتری ارسالکننده بسته (کلید خارجی که به جدول `Customers` متصل است).
- **ReceiverID:** شناسه مشتری دریافتکننده بسته (کلید خارجی که به جدول `Customers` متصل است).
- **PostOfficeID:** شناسه شعبهای که بسته از آن ارسال یا در آن دریافت شده است (کلید خارجی که به جدول `PostOffices` متصل است).
- **Weight:** وزن بسته.
- **Dimensions:** ابعاد بسته.
- **Status:** وضعیت بسته (در حال حمل، تحویلشده، گمشده).
- **ShippedDate:** تاریخ ارسال بسته.
- **DeliveredDate:** تاریخ تحویل بسته.
##### جدول کارمندان (`Employees`)
- **توضیح:** این جدول شامل اطلاعات مربوط به کارمندان شعبات پستی است.
- **فیلدها:**
- **EmployeeID:** شناسه منحصر به فرد برای هر کارمند (کلید اصلی).
- **FirstName:** نام کارمند.
- **LastName:** نام خانوادگی کارمند.
- **PostOfficeID:** شناسه شعبهای که کارمند در آن مشغول به کار است (کلید خارجی که به جدول `PostOffices` متصل است).
- **Position:** سمت کارمند.
- **HireDate:** تاریخ استخدام کارمند.
- **PhoneNumber:** شماره تماس کارمند.
- **Email:** آدرس ایمیل کارمند.
##### جدول تراکنشهای مالی (`FinancialTransactions`)
- **توضیح:** این جدول شامل اطلاعات مربوط به تراکنشهای مالی مانند هزینه ارسال بستهها است.
- **فیلدها:**
- **TransactionID:** شناسه منحصر به فرد برای هر تراکنش (کلید اصلی).
- **ParcelID:** شناسه بستهای که تراکنش مربوط به آن است (کلید خارجی که به جدول `Parcels` متصل است).
- **TransactionDate:** تاریخ تراکنش.
- **Amount:** مبلغ تراکنش.
- **PaymentMethod:** روش پرداخت (نقدی، کارت اعتباری).
#### ۳. شرح روابط جداول
- **ارتباط بین جدول بستهها و جدول مشتریان:** هر بسته دارای یک فرستنده و یک گیرنده است که هر دو آنها مشتری هستند، بنابراین بین جدول `Parcels` و جدول `Customers` دو ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول بستهها و جدول شعبات پستی:** هر بسته از یک شعبه ارسال میشود و به یک شعبه دیگر تحویل داده میشود، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول کارمندان و جدول شعبات پستی:** هر کارمند در یک شعبه خاص مشغول به کار است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول تراکنشهای مالی و جدول بستهها:** هر تراکنش مالی مربوط به یک بسته خاص است، بنابراین بین این دو جدول یک ارتباط یک به یک (One-to-One) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `SenderID` و `ReceiverID` در جدول `Parcels` به جدول `Customers` و `PostOfficeID` در جدول `Parcels` و `Employees` به جدول `PostOffices` متصل است.
#### ۵. مثالهای استفاده
- **دریافت وضعیت بسته برای یک شماره پیگیری خاص:**
- با استفاده از `ParcelID` میتوان وضعیت و جزئیات بسته را از جدول `Parcels` استخراج کرد.
- **مشاهده تمامی بستههای ارسالشده از یک شعبه خاص:**
- با استفاده از `PostOfficeID` در جدول `Parcels` میتوان تمامی بستههایی که از یک شعبه خاص ارسال شدهاند را مشاهده کرد.
- **پیگیری تراکنشهای مالی برای یک بسته خاص:**
- با استفاده از `ParcelID` در جدول `FinancialTransactions` میتوان تمامی تراکنشهای مالی مربوط به آن بسته را مشاهده کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت خدمات پستی را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.