### مستندات پروژه پایگاه داده سیستم مدیریت رستورانهای زنجیرهای
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت رستورانهای زنجیرهای
**توضیح:** این پروژه به منظور مدیریت عملیاتهای مختلف در رستورانهای زنجیرهای از جمله مدیریت شعب، منوها، سفارشات، مشتریان، و کارکنان طراحی شده است. هدف اصلی این سیستم، بهبود کارایی در ارائه خدمات، پیگیری سفارشات و مدیریت منابع انسانی است.
#### ۲. شرح جداول پایگاه داده
##### جدول شعبهها (`Branches`)
- **توضیح:** این جدول شامل اطلاعات مربوط به شعب مختلف رستورانهای زنجیرهای است.
- **فیلدها:**
- **BranchID:** شناسه منحصر به فرد برای هر شعبه (کلید اصلی).
- **BranchName:** نام شعبه.
- **Location:** موقعیت مکانی شعبه.
- **PhoneNumber:** شماره تماس شعبه.
- **ManagerID:** شناسه مدیر شعبه (کلید خارجی که به جدول `Staff` متصل است).
##### جدول کارکنان (`Staff`)
- **توضیح:** این جدول اطلاعات مربوط به کارکنان رستورانهای زنجیرهای را ذخیره میکند.
- **فیلدها:**
- **StaffID:** شناسه منحصر به فرد برای هر کارمند (کلید اصلی).
- **FirstName:** نام کارمند.
- **LastName:** نام خانوادگی کارمند.
- **Position:** سمت یا وظیفه کارمند (مانند سرآشپز، گارسون، مدیر).
- **PhoneNumber:** شماره تماس کارمند.
- **Email:** آدرس ایمیل کارمند.
- **BranchID:** شناسه شعبهای که کارمند در آن فعالیت میکند (کلید خارجی که به جدول `Branches` متصل است).
##### جدول منو (`Menu`)
- **توضیح:** این جدول اطلاعات مربوط به آیتمهای موجود در منوی رستورانها را ذخیره میکند.
- **فیلدها:**
- **MenuItemID:** شناسه منحصر به فرد برای هر آیتم منو (کلید اصلی).
- **ItemName:** نام آیتم منو.
- **Description:** توضیحات مربوط به آیتم.
- **Price:** قیمت هر آیتم.
- **Category:** دستهبندی آیتم (مانند غذای اصلی، دسر، نوشیدنی).
##### جدول سفارشات (`Orders`)
- **توضیح:** این جدول شامل اطلاعات مربوط به سفارشات ثبت شده توسط مشتریان در شعب مختلف رستورانها است.
- **فیلدها:**
- **OrderID:** شناسه منحصر به فرد برای هر سفارش (کلید اصلی).
- **BranchID:** شناسه شعبهای که سفارش در آن ثبت شده است (کلید خارجی که به جدول `Branches` متصل است).
- **CustomerID:** شناسه مشتری که سفارش را ثبت کرده است (کلید خارجی که به جدول `Customers` متصل است).
- **OrderDate:** تاریخ ثبت سفارش.
- **TotalAmount:** مبلغ کل سفارش.
##### جدول جزئیات سفارشات (`OrderDetails`)
- **توضیح:** این جدول اطلاعات جزئیات هر سفارش، شامل آیتمهای منو و تعداد آنها را ذخیره میکند.
- **فیلدها:**
- **OrderDetailID:** شناسه منحصر به فرد برای هر جزئیات سفارش (کلید اصلی).
- **OrderID:** شناسه سفارشی که جزئیات به آن مربوط است (کلید خارجی که به جدول `Orders` متصل است).
- **MenuItemID:** شناسه آیتم منو که در سفارش وجود دارد (کلید خارجی که به جدول `Menu` متصل است).
- **Quantity:** تعداد آیتمهای سفارش داده شده.
- **ItemPrice:** قیمت واحد آیتم در زمان سفارش.
##### جدول مشتریان (`Customers`)
- **توضیح:** این جدول اطلاعات مربوط به مشتریان رستورانها را ذخیره میکند.
- **فیلدها:**
- **CustomerID:** شناسه منحصر به فرد برای هر مشتری (کلید اصلی).
- **FirstName:** نام مشتری.
- **LastName:** نام خانوادگی مشتری.
- **PhoneNumber:** شماره تماس مشتری.
- **Email:** آدرس ایمیل مشتری.
- **LoyaltyPoints:** امتیازهای وفاداری که مشتری از خریدهای گذشته به دست آورده است.
#### ۳. شرح روابط جداول
- **ارتباط بین جدول شعبهها و جدول کارکنان:** هر شعبه میتواند چندین کارمند داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول شعبهها و جدول سفارشات:** هر شعبه میتواند چندین سفارش داشته باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول مشتریان و جدول سفارشات:** هر مشتری میتواند چندین سفارش ثبت کند، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول سفارشات و جدول جزئیات سفارشات:** هر سفارش میتواند شامل چندین آیتم منو باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول منو و جدول جزئیات سفارشات:** هر آیتم منو میتواند در چندین سفارش مختلف وجود داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `BranchID` در جدول `Staff` به جدول `Branches` و `MenuItemID` در جدول `OrderDetails` به جدول `Menu` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام سفارشات ثبتشده در یک شعبه خاص:**
- با استفاده از `BranchID` میتوان لیست تمام سفارشات ثبتشده در یک شعبه خاص را استخراج کرد.
- **بررسی وضعیت مشتریان وفادار:**
- با استفاده از `LoyaltyPoints` در جدول `Customers` میتوان مشتریانی که بیشترین امتیاز وفاداری را دارند شناسایی کرد.
- **محاسبه درآمد کل یک شعبه در یک بازه زمانی مشخص:**
- با جمعبندی `TotalAmount` در جدول `Orders` برای سفارشات ثبتشده در یک بازه زمانی مشخص، میتوان درآمد کل آن شعبه را محاسبه کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت رستورانهای زنجیرهای را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.