আপনার মাল্টি-কোম্পানি অ্যাপ্লিকেশনের জন্য Shift Management মডিউল আরও সঠিকভাবে ডিজাইন করার জন্য প্রতিটি টেবিলে কোম্পানির সম্পর্ক অন্তর্ভুক্ত করা হবে। এতে প্রতিটি রেকর্ড নির্দিষ্ট কোম্পানির অধীনে সঠিকভাবে সংরক্ষণ হবে, যাতে ডেটা সম্পূর্ণরূপে পৃথক থাকে। temporary_shift_schedules টেবিলে week_number ফিল্ডের পরিবর্তে তারিখের রেঞ্জ ব্যবহার করলে আরও ফ্লেক্সিবিলিটি আসবে, কারণ এতে কাস্টম ডেট রেঞ্জে টেম্পোরারি শিফট নির্ধারণ করা সহজ হবে।
আপডেটেড টেবিল ডিজাইন
1. shifts (প্রধান টেবিল)
| Field Name | Data Type | Description |
|---|---|---|
| shift_id | INT (PK) | প্রতিটি শিফটের জন্য ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি (যার সাথে শিফট সম্পর্কিত) |
| shift_name | VARCHAR(100) | শিফটের নাম |
| shift_code | VARCHAR(20) | শিফটের কোড (ইউনিক আইডেন্টিফায়ার) |
| description | TEXT | শিফটের বিবরণ |
| shift_type | ENUM | শিফটের ধরন (যেমন, Day, Night, Rotational) |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
| status | ENUM | শিফটের অবস্থা (Active, Inactive) |
রিলেশন:
company_idফিল্ডটি companies টেবিলের সাথে সংযুক্ত থাকবে, নিশ্চিত করবে প্রতিটি শিফট নির্দিষ্ট কোম্পানির অধীনে আছে।
2. shift_timings (শিফটের সময়সূচী টেবিল)
| Field Name | Data Type | Description |
|---|---|---|
| timing_id | INT (PK) | সময়সূচী বা শিডিউলের জন্য ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| shift_id | INT (FK) | শিফটের আইডি |
| start_time | TIME | শিফট শুরুর সময় |
| end_time | TIME | শিফট শেষের সময় |
| duration_hours | DECIMAL(4,2) | শিফটের মোট সময়কাল (ঘণ্টায়) |
| effective_date | DATE | কার্যকরী তারিখ |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
shift_idফিল্ডটি shifts টেবিলের সাথে সংযুক্ত থাকবে এবংcompany_idপ্রতিটি সময়সূচীকে নির্দিষ্ট কোম্পানির অধীনে রাখবে।
3. shift_assignments (শিফটে কর্মীদের অ্যাসাইনমেন্ট)
| Field Name | Data Type | Description |
|---|---|---|
| assignment_id | INT (PK) | অ্যাসাইনমেন্টের জন্য ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| shift_id | INT (FK) | শিফটের আইডি |
| employee_id | INT (FK) | কর্মীর আইডি |
| assignment_date | DATE | অ্যাসাইনমেন্টের তারিখ |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
company_idনিশ্চিত করবে যে প্রতিটি অ্যাসাইনমেন্ট নির্দিষ্ট কোম্পানির অধীনে এবংshift_idওemployee_idফিল্ডগুলো shifts ও employees টেবিলের সাথে সংযুক্ত থাকবে।
4. default_shift_assignments (ডিফল্ট শিফট নির্ধারণ)
| Field Name | Data Type | Description |
|---|---|---|
| default_assignment_id | INT (PK) | ডিফল্ট শিফট অ্যাসাইনমেন্টের ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| employee_id | INT (FK) | কর্মীর আইডি (ডিফল্ট শিফটের জন্য) |
| shift_id | INT (FK) | ডিফল্ট শিফটের আইডি |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
company_id,employee_id, ওshift_idemployees এবং shifts টেবিলের সাথে সংযুক্ত থাকবে, প্রতিটি কর্মীর জন্য নির্দিষ্ট ডিফল্ট শিফট নির্ধারণ করবে।
5. temporary_shift_schedules (টেম্পোরারি শিফট পরিকল্পনা)
| Field Name | Data Type | Description |
|---|---|---|
| temp_schedule_id | INT (PK) | টেম্পোরারি শিডিউলের ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| department_id | INT (FK) | ডিপার্টমেন্টের আইডি |
| shift_id | INT (FK) | টেম্পোরারি শিফটের আইডি |
| start_date | DATE | টেম্পোরারি শিফট শুরুর তারিখ |
| end_date | DATE | টেম্পোরারি শিফট শেষের তারিখ |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
company_id,department_idএবংshift_iddepartments এবং shifts টেবিলের সাথে সংযুক্ত থাকবে, যা প্রতিটি ডিপার্টমেন্টের জন্য সপ্তাহ ভিত্তিক টেম্পোরারি শিফট নির্ধারণ সহজতর করবে।
6. shift_breaks (শিফটের ব্রেক সময়)
| Field Name | Data Type | Description |
|---|---|---|
| break_id | INT (PK) | ব্রেক সময়ের জন্য ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| shift_id | INT (FK) | শিফটের আইডি |
| break_start_time | TIME | ব্রেক শুরুর সময় |
| break_end_time | TIME | ব্রেক শেষের সময় |
| break_duration | DECIMAL(4,2) | ব্রেকের সময়কাল (ঘণ্টায়) |
| description | TEXT | ব্রেকের বিবরণ |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
company_idএবংshift_idনিশ্চিত করবে প্রতিটি ব্রেক নির্দিষ্ট কোম্পানি ও শিফটের অধীনে থাকে।
7. shift_exceptions (শিফটে ব্যতিক্রম)
| Field Name | Data Type | Description |
|---|---|---|
| exception_id | INT (PK) | ব্যতিক্রমের জন্য ইউনিক আইডি |
| company_id | INT (FK) | কোম্পানির আইডি |
| shift_id | INT (FK) | শিফটের আইডি |
| employee_id | INT (FK) | কর্মীর আইডি |
| exception_date | DATE | ব্যতিক্রম প্রয়োগের তারিখ |
| exception_reason | TEXT | ব্যতিক্রমের কারণ |
| updated_start_time | TIME | পরিবর্তিত শুরুর সময় (যদি প্রযোজ্য) |
| updated_end_time | TIME | পরিবর্তিত শেষের সময় (যদি প্রযোজ্য) |
| created_at | TIMESTAMP | তৈরি করার তারিখ |
| updated_at | TIMESTAMP | আপডেট করার তারিখ |
রিলেশন:
company_id,shift_id, এবংemployee_idনিশ্চিত করবে যে প্রতিটি শিফট ব্যতিক্রম নির্দিষ্ট কোম্পানির অধীনে এবং কর্মী ও শিফটের সাথে সম্পর্কিত।
Shift Management মডিউলটি কীভাবে কাজ করবে তা দেখাতে পারি। ধরে নিচ্ছি আমাদের গার্মেন্টস কোম্পানির নাম “ABC Garments” এবং এতে বিভিন্ন ডিপার্টমেন্ট ও শিফট রয়েছে।
Step 1: Company Setup – ABC Garments
Company Table Entry:
- Company ID: 1
- Company Name: ABC Garments
- Other Details: (ঠিকানা, যোগাযোগ ইত্যাদি)
Step 2: Department Setup
আমাদের ABC Garments কোম্পানিতে বিভিন্ন ডিপার্টমেন্ট রয়েছে:
- ডিপার্টমেন্ট: সেলাই, কাটিং, ফিনিশিং, কিউসি (QC), প্যাকেজিং
Department Table Entries:
| Department ID | Company ID | Department Name |
|---|---|---|
| 1 | 1 | সেলাই |
| 2 | 1 | কাটিং |
| 3 | 1 | ফিনিশিং |
| 4 | 1 | কিউসি |
| 5 | 1 | প্যাকেজিং |
Step 3: Shift Setup
গার্মেন্টসের কাজ প্রায়শই বিভিন্ন শিফটে ভাগ করা হয়, যেমন দিন শিফট, রাত শিফট এবং রোটেশনাল শিফট।
Shifts Table Entries:
| Shift ID | Company ID | Shift Name | Shift Code | Shift Type | Status |
|---|---|---|---|---|---|
| 1 | 1 | দিন শিফট | DAY1 | Day | Active |
| 2 | 1 | রাত শিফট | NIGHT1 | Night | Active |
| 3 | 1 | রোটেশনাল | ROTATE1 | Rotational | Active |
Shift Timings Table Entries:
| Timing ID | Shift ID | Start Time | End Time | Effective Date |
|---|---|---|---|---|
| 1 | 1 | 08:00 AM | 04:00 PM | 2023-10-01 |
| 2 | 2 | 08:00 PM | 04:00 AM | 2023-10-01 |
| 3 | 3 | 06:00 AM | 02:00 PM | 2023-10-01 |
| 4 | 3 | 02:00 PM | 10:00 PM | 2023-10-01 |
Step 4: Employee Setup
কর্মী সংযোজন করা হবে তাদের ডিপার্টমেন্ট এবং ডিফল্ট শিফট অ্যাসাইনমেন্ট দিয়ে। উদাহরণস্বরূপ:
Employee Table Entries:
| Employee ID | Company ID | Department ID | Name | Designation |
|---|---|---|---|---|
| 101 | 1 | 1 | রাহিম | মেশিন অপারেটর |
| 102 | 1 | 2 | করিম | কাটিং অপারেটর |
| 103 | 1 | 3 | সুমন | ফিনিশার |
| 104 | 1 | 4 | মনিরা | QC ইন্সপেক্টর |
Default Shift Assignments Table Entries:
| Default Assignment ID | Employee ID | Shift ID |
|---|---|---|
| 1 | 101 | 1 |
| 2 | 102 | 2 |
| 3 | 103 | 1 |
| 4 | 104 | 3 |
Step 5: Shift Assignments
প্রত্যেক কর্মীকে একটি নির্দিষ্ট শিফটে অ্যাসাইন করা হবে:
Shift Assignments Table Entries:
| Assignment ID | Shift ID | Employee ID | Assignment Date |
|---|---|---|---|
| 1 | 1 | 101 | 2023-10-28 |
| 2 | 2 | 102 | 2023-10-28 |
| 3 | 1 | 103 | 2023-10-28 |
| 4 | 3 | 104 | 2023-10-28 |
Step 6: Temporary Shift Schedules
প্রয়োজনীয়তার ভিত্তিতে কিছু কর্মীকে ভিন্ন শিফটে কাজ করানোর জন্য টেম্পোরারি শিফট নির্ধারণ করা যেতে পারে।
Temporary Shift Schedules Table Entries:
| Temp Schedule ID | Department ID | Week Number | Shift ID | Start Date | End Date |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3 | 2023-11-01 | 2023-11-07 |
Step 7: Shift Breaks
শিফট অনুযায়ী ব্রেকের সময় ও এর ধরন নির্ধারণ করা যাবে।
Shift Breaks Table Entries:
| Break ID | Shift ID | Break Start Time | Break End Time | Description |
|---|---|---|---|---|
| 1 | 1 | 12:00 PM | 12:30 PM | Lunch Break |
Step 8: Shift Exceptions
শিফটের সময়ে যদি কোনো ব্যতিক্রম হয়, সেটাও রেকর্ড করা যাবে।
Shift Exceptions Table Entries:
| Exception ID | Shift ID | Employee ID | Exception Date | Exception Reason |
|---|---|---|---|---|
| 1 | 1 | 101 | 2023-10-29 | Late Arrival |
| 2 | 2 | 102 | 2023-10-29 | Early Leave |
ব্যবস্থাপনা চিত্র
- ABC Garments কোম্পানির সব কর্মীকে শিফটে অ্যাসাইন করা হয়েছে, ডিফল্ট ও টেম্পোরারি শিফট অনুযায়ী।
- শিফট ব্যতিক্রম ফিচারটি ব্যবহার করে কর্মীদের শিফটে অনুপস্থিতি, দেরি, বা সময়ের বাইরে কাজ করার জন্য একটি অতিরিক্ত রেকর্ড রাখা হয়েছে।
এভাবে Shift Management মডিউলটি গার্মেন্টস কোম্পানির শিফট, সময়সূচী এবং কর্মী অ্যাসাইনমেন্টগুলোর সুষ্ঠু ও সহজ ব্যবস্থাপনা নিশ্চিত করতে সহায়ক হবে।