### مستندات پروژه پایگاه داده سیستم مدیریت کتابفروشی
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت کتابفروشی
**توضیح:** این پروژه برای مدیریت عملیاتهای مختلف یک کتابفروشی طراحی شده است. سیستم شامل مدیریت کتابها، نویسندگان، مشتریان، سفارشات و پرداختها است. هدف اصلی این سیستم، بهبود کارایی در مدیریت موجودی کتابها، پیگیری سفارشات و فروش، و مدیریت اطلاعات مشتریان و نویسندگان است.
#### ۲. شرح جداول پایگاه داده
##### جدول کتابها (`Books`)
- **توضیح:** این جدول شامل اطلاعات مربوط به کتابهای موجود در کتابفروشی است.
- **فیلدها:**
- **BookID:** شناسه منحصر به فرد برای هر کتاب (کلید اصلی).
- **Title:** عنوان کتاب.
- **ISBN:** شماره استاندارد بینالمللی کتاب.
- **AuthorID:** شناسه نویسنده کتاب (کلید خارجی که به جدول `Authors` متصل است).
- **PublicationDate:** تاریخ انتشار کتاب.
- **Publisher:** نام انتشارات.
- **Price:** قیمت کتاب.
- **StockQuantity:** تعداد موجودی کتاب.
##### جدول نویسندگان (`Authors`)
- **توضیح:** این جدول شامل اطلاعات مربوط به نویسندگانی است که کتابهایشان در کتابفروشی موجود است.
- **فیلدها:**
- **AuthorID:** شناسه منحصر به فرد برای هر نویسنده (کلید اصلی).
- **FirstName:** نام نویسنده.
- **LastName:** نام خانوادگی نویسنده.
- **Biography:** بیوگرافی کوتاه نویسنده.
- **Email:** آدرس ایمیل نویسنده.
##### جدول مشتریان (`Customers`)
- **توضیح:** این جدول شامل اطلاعات مشتریانی است که کتابها را از کتابفروشی خریداری کردهاند.
- **فیلدها:**
- **CustomerID:** شناسه منحصر به فرد برای هر مشتری (کلید اصلی).
- **FirstName:** نام مشتری.
- **LastName:** نام خانوادگی مشتری.
- **PhoneNumber:** شماره تماس مشتری.
- **Email:** آدرس ایمیل مشتری.
- **Address:** آدرس محل سکونت مشتری.
##### جدول سفارشات (`Orders`)
- **توضیح:** این جدول شامل اطلاعات مربوط به سفارشات ثبت شده توسط مشتریان است.
- **فیلدها:**
- **OrderID:** شناسه منحصر به فرد برای هر سفارش (کلید اصلی).
- **CustomerID:** شناسه مشتری که سفارش را ثبت کرده است (کلید خارجی که به جدول `Customers` متصل است).
- **OrderDate:** تاریخ ثبت سفارش.
- **TotalAmount:** مبلغ کل سفارش.
- **ShippingAddress:** آدرس ارسال سفارش.
- **OrderStatus:** وضعیت سفارش (مثلاً در حال پردازش، ارسالشده، تکمیلشده).
##### جدول جزئیات سفارشات (`OrderDetails`)
- **توضیح:** این جدول شامل جزئیات هر سفارش، از جمله کتابهای سفارش داده شده و تعداد آنها است.
- **فیلدها:**
- **OrderDetailID:** شناسه منحصر به فرد برای هر جزئیات سفارش (کلید اصلی).
- **OrderID:** شناسه سفارشی که جزئیات به آن مربوط است (کلید خارجی که به جدول `Orders` متصل است).
- **BookID:** شناسه کتاب سفارش دادهشده (کلید خارجی که به جدول `Books` متصل است).
- **Quantity:** تعداد کتابهای سفارش دادهشده.
- **UnitPrice:** قیمت واحد کتاب در زمان سفارش.
##### جدول پرداختها (`Payments`)
- **توضیح:** این جدول شامل اطلاعات مربوط به پرداختهای انجامشده برای سفارشات است.
- **فیلدها:**
- **PaymentID:** شناسه منحصر به فرد برای هر پرداخت (کلید اصلی).
- **OrderID:** شناسه سفارشی که پرداخت مربوط به آن است (کلید خارجی که به جدول `Orders` متصل است).
- **PaymentDate:** تاریخ پرداخت.
- **Amount:** مبلغ پرداختشده.
- **PaymentMethod:** روش پرداخت (مانند نقدی، کارت اعتباری).
#### ۳. شرح روابط جداول
- **ارتباط بین جدول کتابها و جدول نویسندگان:** هر کتاب توسط یک نویسنده نوشته شده است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول مشتریان و جدول سفارشات:** هر مشتری میتواند چندین سفارش داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول سفارشات و جدول جزئیات سفارشات:** هر سفارش میتواند شامل چندین کتاب باشد و هر کتاب میتواند در چندین سفارش وجود داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول کتابها و جدول جزئیات سفارشات:** هر کتاب میتواند در چندین سفارش موجود باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول سفارشات و جدول پرداختها:** هر سفارش ممکن است شامل یک یا چند پرداخت باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `CustomerID` در جدول `Orders` به جدول `Customers` و `BookID` در جدول `OrderDetails` به جدول `Books` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام کتابهای یک نویسنده خاص:**
- با استفاده از `AuthorID` میتوان لیست تمام کتابهای نوشتهشده توسط یک نویسنده خاص را از جدول `Books` استخراج کرد.
- **پیگیری وضعیت موجودی کتابها:**
- با استفاده از `StockQuantity` در جدول `Books` میتوان موجودی فعلی هر کتاب را بررسی کرد.
- **محاسبه کل درآمد کتابفروشی از پرداختهای انجامشده در یک بازه زمانی مشخص:**
- با جمعبندی `Amount` در جدول `Payments` برای پرداختهای انجامشده در یک بازه زمانی مشخص، میتوان کل درآمد کتابفروشی را محاسبه کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت کتابفروشی را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.