### مستندات پروژه پایگاه داده سیستم مدیریت املاک و مستغلات
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت املاک و مستغلات
**توضیح:** این پروژه برای مدیریت اطلاعات مربوط به املاک و مستغلات طراحی شده است. سیستم شامل مدیریت املاک، مستأجرین، مالکان، معاملات و قراردادها است. هدف اصلی این سیستم، بهبود کارایی در مدیریت و پیگیری املاک، مستأجرین، معاملات و قراردادها و ارائه یک پلتفرم منسجم برای مدیریت املاک است.
#### ۲. شرح جداول پایگاه داده
##### جدول املاک (`Properties`)
- **توضیح:** این جدول شامل اطلاعات مربوط به املاک مختلف است.
- **فیلدها:**
- **PropertyID:** شناسه منحصر به فرد برای هر ملک (کلید اصلی).
- **Address:** آدرس ملک.
- **City:** شهر محل ملک.
- **State:** استان محل ملک.
- **ZipCode:** کد پستی.
- **PropertyType:** نوع ملک (مسکونی، تجاری، صنعتی و غیره).
- **Size:** مساحت ملک (متر مربع).
- **Price:** قیمت ملک.
##### جدول مالکان (`Owners`)
- **توضیح:** این جدول شامل اطلاعات مربوط به مالکان املاک است.
- **فیلدها:**
- **OwnerID:** شناسه منحصر به فرد برای هر مالک (کلید اصلی).
- **FirstName:** نام مالک.
- **LastName:** نام خانوادگی مالک.
- **Email:** آدرس ایمیل مالک.
- **PhoneNumber:** شماره تماس مالک.
- **Address:** آدرس محل سکونت مالک.
##### جدول مستأجرین (`Tenants`)
- **توضیح:** این جدول شامل اطلاعات مربوط به مستأجرینی است که املاک را اجاره میکنند.
- **فیلدها:**
- **TenantID:** شناسه منحصر به فرد برای هر مستأجر (کلید اصلی).
- **FirstName:** نام مستأجر.
- **LastName:** نام خانوادگی مستأجر.
- **Email:** آدرس ایمیل مستأجر.
- **PhoneNumber:** شماره تماس مستأجر.
- **Address:** آدرس محل سکونت مستأجر.
##### جدول معاملات (`Transactions`)
- **توضیح:** این جدول شامل اطلاعات مربوط به معاملات خرید و فروش املاک است.
- **فیلدها:**
- **TransactionID:** شناسه منحصر به فرد برای هر معامله (کلید اصلی).
- **PropertyID:** شناسه ملکی که معامله شده است (کلید خارجی که به جدول `Properties` متصل است).
- **OwnerID:** شناسه مالک فعلی ملک (کلید خارجی که به جدول `Owners` متصل است).
- **TenantID:** شناسه مستأجر (در صورت وجود) (کلید خارجی که به جدول `Tenants` متصل است).
- **TransactionDate:** تاریخ معامله.
- **TransactionType:** نوع معامله (خرید، فروش، اجاره).
- **Amount:** مبلغ معامله.
##### جدول قراردادها (`Contracts`)
- **توضیح:** این جدول شامل اطلاعات مربوط به قراردادهای اجاره و فروش است.
- **فیلدها:**
- **ContractID:** شناسه منحصر به فرد برای هر قرارداد (کلید اصلی).
- **PropertyID:** شناسه ملکی که قرارداد برای آن تنظیم شده است (کلید خارجی که به جدول `Properties` متصل است).
- **TenantID:** شناسه مستأجر (در صورت وجود) (کلید خارجی که به جدول `Tenants` متصل است).
- **StartDate:** تاریخ شروع قرارداد.
- **EndDate:** تاریخ پایان قرارداد.
- **RentAmount:** مبلغ اجاره (در صورت اجاره).
- **DepositAmount:** مبلغ ودیعه.
- **ContractType:** نوع قرارداد (اجاره، فروش).
#### ۳. شرح روابط جداول
- **ارتباط بین جدول املاک و جدول مالکان:** هر ملک متعلق به یک مالک خاص است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول املاک و جدول معاملات:** هر معامله مربوط به یک ملک خاص است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول معاملات و جدول مالکان:** هر معامله ممکن است شامل یک مالک خاص باشد، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول املاک و جدول قراردادها:** هر قرارداد مربوط به یک ملک خاص است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
- **ارتباط بین جدول قراردادها و جدول مستأجرین:** هر قرارداد اجاره مربوط به یک مستأجر خاص است، بنابراین بین این دو جدول یک ارتباط چند به یک (Many-to-One) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `OwnerID` در جدول `Properties` به جدول `Owners` و `PropertyID` در جدول `Transactions` به جدول `Properties` متصل است.
#### ۵. مثالهای استفاده
- **دریافت جزئیات ملکهای متعلق به یک مالک خاص:**
- با استفاده از `OwnerID` در جدول `Properties`، میتوان لیست تمامی ملکهای متعلق به یک مالک خاص را مشاهده کرد.
- **مشاهده معاملات مربوط به یک ملک خاص:**
- با استفاده از `PropertyID` در جدول `Transactions`، میتوان لیست تمامی معاملات مربوط به یک ملک خاص را مشاهده کرد.
- **پیگیری قراردادهای اجاره برای یک مستأجر خاص:**
- با استفاده از `TenantID` در جدول `Contracts`، میتوان لیست تمامی قراردادهای اجاره مربوط به یک مستأجر خاص را مشاهده کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت املاک و مستغلات را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.