### مستندات پروژه پایگاه داده سیستم مدیریت کارخانه
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت کارخانه
**توضیح:** این پروژه با هدف مدیریت فرآیندهای تولید، موجودی مواد اولیه، محصولات نهایی، و سفارشات در یک کارخانه طراحی شده است. این سیستم به بهبود کارایی در تولید، کنترل موجودی، و پیگیری سفارشات کمک میکند.
#### ۲. شرح جداول پایگاه داده
##### جدول مواد اولیه (`RawMaterials`)
- **توضیح:** این جدول اطلاعات مربوط به مواد اولیه مورد نیاز برای تولید محصولات را ذخیره میکند.
- **فیلدها:**
- **MaterialID:** شناسه منحصر به فرد برای هر ماده اولیه (کلید اصلی).
- **MaterialName:** نام ماده اولیه.
- **Supplier:** تامینکننده ماده اولیه.
- **UnitCost:** هزینه هر واحد از ماده اولیه.
- **StockQuantity:** مقدار موجودی از ماده اولیه در انبار.
##### جدول محصولات (`Products`)
- **توضیح:** این جدول اطلاعات مربوط به محصولات نهایی تولید شده در کارخانه را ذخیره میکند.
- **فیلدها:**
- **ProductID:** شناسه منحصر به فرد برای هر محصول (کلید اصلی).
- **ProductName:** نام محصول.
- **Category:** دستهبندی محصول.
- **ProductionCost:** هزینه تولید هر واحد از محصول.
- **SalePrice:** قیمت فروش هر واحد از محصول.
- **StockQuantity:** مقدار موجودی از محصول در انبار.
##### جدول تولیدات (`Production`)
- **توضیح:** این جدول فرآیندهای تولیدی که شامل مصرف مواد اولیه برای تولید محصولات نهایی است را ثبت میکند.
- **فیلدها:**
- **ProductionID:** شناسه منحصر به فرد برای هر فرآیند تولیدی (کلید اصلی).
- **ProductID:** شناسه محصول تولید شده (کلید خارجی که به جدول `Products` متصل است).
- **MaterialID:** شناسه ماده اولیه مصرفشده (کلید خارجی که به جدول `RawMaterials` متصل است).
- **QuantityUsed:** مقدار ماده اولیه مصرفشده.
- **ProductionDate:** تاریخ تولید محصول.
##### جدول سفارشات (`Orders`)
- **توضیح:** این جدول اطلاعات مربوط به سفارشات محصولات نهایی که توسط مشتریان ثبت شده است را ذخیره میکند.
- **فیلدها:**
- **OrderID:** شناسه منحصر به فرد برای هر سفارش (کلید اصلی).
- **CustomerID:** شناسه مشتری که سفارش را ثبت کرده (کلید خارجی).
- **OrderDate:** تاریخ ثبت سفارش.
- **TotalAmount:** مبلغ کل سفارش.
##### جدول مشتریان (`Customers`)
- **توضیح:** این جدول اطلاعات مربوط به مشتریانی که از کارخانه محصولات خریداری میکنند را ذخیره میکند.
- **فیلدها:**
- **CustomerID:** شناسه منحصر به فرد برای هر مشتری (کلید اصلی).
- **FirstName:** نام مشتری.
- **LastName:** نام خانوادگی مشتری.
- **PhoneNumber:** شماره تلفن تماس مشتری.
- **Email:** آدرس ایمیل مشتری.
- **Address:** آدرس مشتری.
- **City:** شهر محل اقامت مشتری.
- **PostalCode:** کد پستی مربوط به آدرس مشتری.
##### جدول جزئیات سفارشات (`OrderDetails`)
- **توضیح:** این جدول جزئیات مربوط به هر سفارش، شامل محصولات سفارش داده شده و تعداد آنها را ذخیره میکند.
- **فیلدها:**
- **OrderDetailID:** شناسه منحصر به فرد برای هر جزئیات سفارش (کلید اصلی).
- **OrderID:** شناسه سفارش مربوطه (کلید خارجی که به جدول `Orders` متصل است).
- **ProductID:** شناسه محصول سفارش داده شده (کلید خارجی که به جدول `Products` متصل است).
- **Quantity:** تعداد محصول سفارش داده شده.
- **UnitPrice:** قیمت واحد محصول در زمان سفارش.
#### ۳. شرح روابط جداول
- **ارتباط بین جدول مواد اولیه و جدول تولیدات:** هر ماده اولیه میتواند در چندین فرآیند تولیدی استفاده شود، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول محصولات و جدول تولیدات:** هر محصول نهایی ممکن است از ترکیب چندین ماده اولیه تولید شود، لذا بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول مشتریان و جدول سفارشات:** هر مشتری میتواند چندین سفارش داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول سفارشات و جدول جزئیات سفارشات:** هر سفارش میتواند شامل چندین محصول باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) وجود دارد.
- **ارتباط بین جدول محصولات و جدول جزئیات سفارشات:** هر محصول میتواند در چندین سفارش مختلف حضور داشته باشد، لذا بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `ProductID` در جدول `Production` به جدول `Products` و `MaterialID` به جدول `RawMaterials` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام محصولات تولید شده در یک تاریخ خاص:**
- با استفاده از فیلد `ProductionDate` در جدول `Production` میتوان تمامی تولیدات انجامشده در یک تاریخ مشخص را بازیابی کرد.
- **بررسی میزان مواد اولیه مصرفشده برای تولید یک محصول خاص:**
- با جستجو در جدول `Production` میتوان مقدار مواد اولیه مصرف شده برای تولید یک محصول را مشخص کرد.
- **محاسبه سود کل از فروش محصولات در یک بازه زمانی مشخص:**
- با جمعبندی قیمتهای فروش (`SalePrice`) در جدول `OrderDetails` و کسر هزینه تولید (`ProductionCost`) از جدول `Products`، میتوان سود کلی را محاسبه کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت کارخانه را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.