231 lines
7.0 KiB
Markdown
231 lines
7.0 KiB
Markdown
# 📋 لیست کامل جداول و Mapping ها
|
|
|
|
## تعداد کل: 33 جدول
|
|
|
|
### جداول با تغییر نام (10 جدول)
|
|
|
|
این جداول در دیتابیس قدیمی نامگذاری اشتباه دارند و در دیتابیس جدید اصلاح میشوند:
|
|
|
|
| # | نام قدیمی (Source) | نام جدید (Target) | دلیل تغییر |
|
|
|---|-------------------|-------------------|-----------|
|
|
| 1 | `Categorys` | `Categories` | جمع صحیح Category |
|
|
| 2 | `FactorDetailss` | `FactorDetails` | Detail تکی نیست، s اضافی |
|
|
| 3 | `ProductGalleryss` | `ProductGalleries` | Gallery → Galleries، s اضافی |
|
|
| 4 | `ProductImagess` | `ProductImages` | Image → Images، s اضافی |
|
|
| 5 | `Productss` | `Products` | s اضافی |
|
|
| 6 | `PruductCategorys` | `ProductCategories` | Pruduct → Product + جمع صحیح |
|
|
| 7 | `PruductTags` | `ProductTags` | Pruduct → Product |
|
|
| 8 | `Transactionss` | `Transactions` | s اضافی |
|
|
| 9 | `UserAddresss` | `UserAddresses` | Address → Addresses، s اضافی |
|
|
| 10 | `UserCartss` | `UserCarts` | s اضافی |
|
|
|
|
---
|
|
|
|
### جداول بدون تغییر نام (23 جدول)
|
|
|
|
این جداول نامگذاری صحیحی دارند:
|
|
|
|
| # | نام جدول |
|
|
|---|----------|
|
|
| 1 | `ClubFeatures` |
|
|
| 2 | `ClubMembershipHistories` |
|
|
| 3 | `ClubMemberships` |
|
|
| 4 | `CommissionPayoutHistories` |
|
|
| 5 | `Contracts` |
|
|
| 6 | `NetworkMembershipHistories` |
|
|
| 7 | `NetworkWeeklyBalances` |
|
|
| 8 | `OtpTokens` |
|
|
| 9 | `Packages` |
|
|
| 10 | `Roles` |
|
|
| 11 | `SystemConfigurationHistories` |
|
|
| 12 | `SystemConfigurations` |
|
|
| 13 | `Tags` |
|
|
| 14 | `UserClubFeatures` |
|
|
| 15 | `UserCommissionPayouts` |
|
|
| 16 | `UserContracts` |
|
|
| 17 | `UserOrders` |
|
|
| 18 | `UserRoles` |
|
|
| 19 | `Users` |
|
|
| 20 | `UserWalletChangeLogs` |
|
|
| 21 | `UserWallets` |
|
|
| 22 | `WeeklyCommissionPools` |
|
|
| 23 | `WorkerExecutionLogs` |
|
|
|
|
---
|
|
|
|
## ترتیب پیشنهادی برای Migration
|
|
|
|
### مرحله 1: جداول پایه (Independent Tables)
|
|
بدون FK، میتوانند اول migrate شوند:
|
|
|
|
1. `Roles`
|
|
2. `Tags`
|
|
3. `SystemConfigurations`
|
|
4. `ClubFeatures`
|
|
5. `Packages`
|
|
|
|
### مرحله 2: جداول کاربری
|
|
FK به Users:
|
|
|
|
6. `Users` ⚠️ **مهم**: پس از migration → Post-Migration Transformation
|
|
7. `OtpTokens`
|
|
8. `UserRoles`
|
|
9. `UserWallets`
|
|
10. `UserWalletChangeLogs`
|
|
11. `UserAddresses`
|
|
12. `UserCarts`
|
|
|
|
### مرحله 3: جداول محصولات
|
|
FK به Categories و Products:
|
|
|
|
13. `Categories`
|
|
14. `Products`
|
|
15. `ProductImages`
|
|
16. `ProductGalleries`
|
|
17. `ProductCategories`
|
|
18. `ProductTags`
|
|
|
|
### مرحله 4: جداول عضویت و کمیسیون
|
|
|
|
19. `ClubMemberships`
|
|
20. `ClubMembershipHistories`
|
|
21. `NetworkWeeklyBalances`
|
|
22. `NetworkMembershipHistories`
|
|
23. `CommissionPayoutHistories`
|
|
24. `UserCommissionPayouts`
|
|
25. `WeeklyCommissionPools`
|
|
|
|
### مرحله 5: جداول قراردادها و تراکنشها
|
|
|
|
26. `Contracts`
|
|
27. `UserContracts`
|
|
28. `Transactions`
|
|
29. `FactorDetails`
|
|
|
|
### مرحله 6: جداول کاربری پیشرفته
|
|
|
|
30. `UserOrders`
|
|
31. `UserClubFeatures`
|
|
|
|
### مرحله 7: جداول سیستمی
|
|
|
|
32. `SystemConfigurationHistories`
|
|
33. `WorkerExecutionLogs`
|
|
|
|
---
|
|
|
|
## تغییرات ساختاری مهم
|
|
|
|
### 1. Users Table
|
|
**تبدیل Binary Tree:**
|
|
- **قدیمی**: `ParentId` (یک Parent ساده)
|
|
- **جدید**: `NetworkParentId` + `LegPosition` (Binary Tree)
|
|
|
|
**Post-Migration Script:**
|
|
```sql
|
|
-- Script: Scripts/PostMigration_DataTransformation.sql
|
|
-- اجرا: خودکار بعد از migration (اگر RunPostMigrationTransformation=true)
|
|
```
|
|
|
|
**چه کاری انجام میدهد:**
|
|
1. ✅ بررسی: آیا Parent ها بیشتر از 2 فرزند دارند؟ (ROLLBACK اگر دارند)
|
|
2. ✅ کپی: `ParentId` → `NetworkParentId`
|
|
3. ✅ تخصیص: `LegPosition` (فرزند اول=Left, فرزند دوم=Right)
|
|
4. ✅ حل Orphan ها: Parent نداشته → `NetworkParentId=NULL`
|
|
5. ✅ Validation نهایی: Binary Tree درست است؟
|
|
6. ✅ آمار: تعداد کل، Left/Right distribution
|
|
|
|
---
|
|
|
|
## Configuration در appsettings.json
|
|
|
|
```json
|
|
{
|
|
"TableMappings": {
|
|
"Categorys": "Categories",
|
|
"ClubFeatures": "ClubFeatures",
|
|
"ClubMembershipHistories": "ClubMembershipHistories",
|
|
"ClubMemberships": "ClubMemberships",
|
|
"CommissionPayoutHistories": "CommissionPayoutHistories",
|
|
"Contracts": "Contracts",
|
|
"FactorDetailss": "FactorDetails",
|
|
"NetworkMembershipHistories": "NetworkMembershipHistories",
|
|
"NetworkWeeklyBalances": "NetworkWeeklyBalances",
|
|
"OtpTokens": "OtpTokens",
|
|
"Packages": "Packages",
|
|
"ProductGalleryss": "ProductGalleries",
|
|
"ProductImagess": "ProductImages",
|
|
"Productss": "Products",
|
|
"PruductCategorys": "ProductCategories",
|
|
"PruductTags": "ProductTags",
|
|
"Roles": "Roles",
|
|
"SystemConfigurationHistories": "SystemConfigurationHistories",
|
|
"SystemConfigurations": "SystemConfigurations",
|
|
"Tags": "Tags",
|
|
"Transactionss": "Transactions",
|
|
"UserAddresss": "UserAddresses",
|
|
"UserCartss": "UserCarts",
|
|
"UserClubFeatures": "UserClubFeatures",
|
|
"UserCommissionPayouts": "UserCommissionPayouts",
|
|
"UserContracts": "UserContracts",
|
|
"UserOrders": "UserOrders",
|
|
"UserRoles": "UserRoles",
|
|
"Users": "Users",
|
|
"UserWalletChangeLogs": "UserWalletChangeLogs",
|
|
"UserWallets": "UserWallets",
|
|
"WeeklyCommissionPools": "WeeklyCommissionPools",
|
|
"WorkerExecutionLogs": "WorkerExecutionLogs"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## چکلیست قبل از Migration
|
|
|
|
### 1. ساختار Target Database
|
|
- [ ] همه 33 جدول در Target ایجاد شدهاند
|
|
- [ ] Schema صحیح است: `[CMS].[TableName]`
|
|
- [ ] Column ها مطابقت دارند
|
|
- [ ] `Users` دارای `NetworkParentId` و `LegPosition` است
|
|
|
|
### 2. Connection Strings
|
|
- [ ] `SourceDatabase`: IP, Port, Username, Password صحیح
|
|
- [ ] `TargetDatabase`: IP, Port, Username, Password صحیح
|
|
- [ ] Firewall: IP شما مجاز است
|
|
- [ ] SQL User دسترسی `db_datareader` (Source) دارد
|
|
- [ ] SQL User دسترسی `db_datawriter` (Target) دارد
|
|
|
|
### 3. تنظیمات Migration
|
|
- [ ] `BatchSize`: مناسب با Network شما
|
|
- [ ] `MaxConcurrentTables`: 3 (پیشنهادی)
|
|
- [ ] `RunPostMigrationTransformation`: true
|
|
- [ ] `TableMappings`: همه 33 جدول لیست شده
|
|
|
|
### 4. Backup
|
|
- [ ] ⚠️ **حتماً** Target Database را Backup بگیرید
|
|
- [ ] فضای کافی روی Disk دارید
|
|
|
|
---
|
|
|
|
## آمار تخمینی
|
|
|
|
بر اساس backup file (`dbbkup/CMS.sql`):
|
|
|
|
| دسته | تعداد جداول | تخمین رکوردها |
|
|
|------|------------|---------------|
|
|
| **Core** (Users, Roles, etc.) | 5 | ~2,000 |
|
|
| **Products** (Categories, Products, etc.) | 8 | ~5,000 |
|
|
| **Club & Network** | 7 | ~10,000 |
|
|
| **Transactions & Orders** | 6 | ~20,000 |
|
|
| **System & Logs** | 7 | ~15,000 |
|
|
| **جمع کل** | **33** | **~50,000+** |
|
|
|
|
**زمان تخمینی:** 5-10 دقیقه (بسته به Network)
|
|
|
|
---
|
|
|
|
**نسخه:** 1.0
|
|
**تاریخ:** December 6, 2025
|
|
**وضعیت:** ✅ آماده برای Production
|