### مستندات پروژه پایگاه داده سیستم مدیریت هتل
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت هتل
**توضیح:** این پروژه برای مدیریت کارآمد عملیاتهای یک هتل از جمله اطلاعات مشتریان، اتاقها، رزروها، و پرداختها طراحی شده است. هدف از این سیستم، بهبود مدیریت رزروها، پیگیری پرداختها، و سازماندهی اطلاعات مهمانان است.
#### ۲. شرح جداول پایگاه داده
##### جدول مشتریان (`Guests`)
- **توضیح:** این جدول شامل اطلاعات مربوط به مهمانانی است که در هتل اقامت دارند یا رزرو انجام دادهاند.
- **فیلدها:**
- **GuestID:** شناسه منحصر به فرد برای هر مهمان (کلید اصلی).
- **FirstName:** نام مهمان.
- **LastName:** نام خانوادگی مهمان.
- **PhoneNumber:** شماره تماس مهمان.
- **Email:** آدرس ایمیل مهمان.
- **Address:** آدرس محل سکونت مهمان.
##### جدول اتاقها (`Rooms`)
- **توضیح:** این جدول اطلاعات مربوط به اتاقهای موجود در هتل را ذخیره میکند.
- **فیلدها:**
- **RoomID:** شناسه منحصر به فرد برای هر اتاق (کلید اصلی).
- **RoomNumber:** شماره اتاق.
- **RoomType:** نوع اتاق (مثلاً یکتخته، دوتخته، سوئیت).
- **PricePerNight:** قیمت هر شب اقامت در اتاق.
- **AvailabilityStatus:** وضعیت دسترسی اتاق (مثلاً خالی یا رزرو شده).
##### جدول رزروها (`Reservations`)
- **توضیح:** این جدول اطلاعات مربوط به رزروهای انجامشده توسط مهمانان را ذخیره میکند.
- **فیلدها:**
- **ReservationID:** شناسه منحصر به فرد برای هر رزرو (کلید اصلی).
- **GuestID:** شناسه مهمان که رزرو را انجام داده است (کلید خارجی که به جدول `Guests` متصل است).
- **RoomID:** شناسه اتاق رزروشده (کلید خارجی که به جدول `Rooms` متصل است).
- **CheckInDate:** تاریخ ورود.
- **CheckOutDate:** تاریخ خروج.
- **TotalAmount:** مبلغ کل رزرو (بر اساس تعداد شبها و قیمت اتاق).
##### جدول پرداختها (`Payments`)
- **توضیح:** این جدول اطلاعات مربوط به پرداختهای انجامشده برای رزروها را ذخیره میکند.
- **فیلدها:**
- **PaymentID:** شناسه منحصر به فرد برای هر پرداخت (کلید اصلی).
- **ReservationID:** شناسه رزروی که پرداخت مربوط به آن است (کلید خارجی که به جدول `Reservations` متصل است).
- **PaymentDate:** تاریخ پرداخت.
- **AmountPaid:** مبلغ پرداختشده.
- **PaymentMethod:** روش پرداخت (مانند کارت اعتباری، نقدی).
##### جدول کارکنان (`Staff`)
- **توضیح:** این جدول اطلاعات کارکنان هتل را ذخیره میکند.
- **فیلدها:**
- **StaffID:** شناسه منحصر به فرد برای هر کارمند (کلید اصلی).
- **FirstName:** نام کارمند.
- **LastName:** نام خانوادگی کارمند.
- **Position:** سمت یا وظیفه کارمند (مانند پذیرش، نظافت، مدیریت).
- **PhoneNumber:** شماره تماس کارمند.
- **Email:** آدرس ایمیل کارمند.
- **HireDate:** تاریخ استخدام.
#### ۳. شرح روابط جداول
- **ارتباط بین جدول مهمانان و جدول رزروها:** هر مهمان میتواند چندین رزرو داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول اتاقها و جدول رزروها:** هر اتاق میتواند چندین بار توسط مهمانان مختلف رزرو شود، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) وجود دارد.
- **ارتباط بین جدول رزروها و جدول پرداختها:** هر رزرو میتواند شامل چندین پرداخت باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `GuestID` در جدول `Reservations` به جدول `Guests` و `RoomID` به جدول `Rooms` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام رزروهای یک مهمان خاص:**
- با استفاده از `GuestID` میتوان لیست رزروهای مربوط به یک مهمان خاص را از جدول `Reservations` بازیابی کرد.
- **بررسی وضعیت دسترسی اتاقها:**
- با استفاده از فیلد `AvailabilityStatus` در جدول `Rooms` میتوان وضعیت دسترسی اتاقهای مختلف را بررسی کرد.
- **محاسبه کل درآمد هتل در یک بازه زمانی مشخص:**
- با جمعبندی مبالغ پرداختشده (`AmountPaid`) در جدول `Payments` برای رزروهای انجامشده در یک بازه زمانی مشخص، میتوان کل درآمد هتل را محاسبه کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت هتل را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.