Files
docs/archive/collected-docs/DataMigration/TABLE-MAPPINGS.md
T
masoodafar-web 5965b98728 update
2026-01-03 18:27:49 +03:30

7.0 KiB

📋 لیست کامل جداول و 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:

  1. Users ⚠️ مهم: پس از migration → Post-Migration Transformation
  2. OtpTokens
  3. UserRoles
  4. UserWallets
  5. UserWalletChangeLogs
  6. UserAddresses
  7. UserCarts

مرحله 3: جداول محصولات

FK به Categories و Products:

  1. Categories
  2. Products
  3. ProductImages
  4. ProductGalleries
  5. ProductCategories
  6. ProductTags

مرحله 4: جداول عضویت و کمیسیون

  1. ClubMemberships
  2. ClubMembershipHistories
  3. NetworkWeeklyBalances
  4. NetworkMembershipHistories
  5. CommissionPayoutHistories
  6. UserCommissionPayouts
  7. WeeklyCommissionPools

مرحله 5: جداول قراردادها و تراکنش‌ها

  1. Contracts
  2. UserContracts
  3. Transactions
  4. FactorDetails

مرحله 6: جداول کاربری پیشرفته

  1. UserOrders
  2. UserClubFeatures

مرحله 7: جداول سیستمی

  1. SystemConfigurationHistories
  2. WorkerExecutionLogs

تغییرات ساختاری مهم

1. Users Table

تبدیل Binary Tree:

  • قدیمی: ParentId (یک Parent ساده)
  • جدید: NetworkParentId + LegPosition (Binary Tree)

Post-Migration Script:

-- Script: Scripts/PostMigration_DataTransformation.sql
-- اجرا: خودکار بعد از migration (اگر RunPostMigrationTransformation=true)

چه کاری انجام می‌دهد:

  1. بررسی: آیا Parent ها بیشتر از 2 فرزند دارند؟ (ROLLBACK اگر دارند)
  2. کپی: ParentIdNetworkParentId
  3. تخصیص: LegPosition (فرزند اول=Left, فرزند دوم=Right)
  4. حل Orphan ها: Parent نداشته → NetworkParentId=NULL
  5. Validation نهایی: Binary Tree درست است؟
  6. آمار: تعداد کل، Left/Right distribution

Configuration در appsettings.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