ஜேங்கோ மாடல் இன்ஹெரிட்டன்ஸிற்கான ஒரு முழுமையான வழிகாட்டி, இதில் அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் மற்றும் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் நடைமுறை எடுத்துக்காட்டுகள் மற்றும் தரவுத்தள வடிவமைப்பு பரிசீலனைகளுடன் விளக்கப்பட்டுள்ளன.
ஜேங்கோ மாடல் இன்ஹெரிட்டன்ஸ்: அப்ஸ்ட்ராக்ட் மாடல்கள் vs. மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ்
ஜேங்கோவின் ஆப்ஜெக்ட்-ரிலேஷனல் மேப்பர் (ORM) தரவுகளை மாடலிங் செய்வதற்கும் தரவுத்தளங்களுடன் தொடர்புகொள்வதற்கும் சக்திவாய்ந்த அம்சங்களை வழங்குகிறது. ஜேங்கோவில் திறமையான தரவுத்தள வடிவமைப்பின் முக்கிய அம்சங்களில் ஒன்று மாடல் இன்ஹெரிட்டன்ஸைப் புரிந்துகொண்டு பயன்படுத்துவதாகும். இது பொதுவான ஃபீல்டுகள் மற்றும் நடத்தைகளை பல மாடல்களில் மீண்டும் பயன்படுத்த உங்களை அனுமதிக்கிறது, இதன் மூலம் கோட் டூப்ளிகேஷனைக் குறைத்து, பராமரிப்பை மேம்படுத்துகிறது. ஜேங்கோ இரண்டு முதன்மை வகை மாடல் இன்ஹெரிட்டன்ஸை வழங்குகிறது: அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் மற்றும் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ். ஒவ்வொரு அணுகுமுறைக்கும் அதன் சொந்த பயன்பாட்டு வழக்குகள் மற்றும் தரவுத்தள கட்டமைப்பு மற்றும் வினவல் செயல்திறனில் தாக்கங்கள் உள்ளன. இந்த கட்டுரை இரண்டையும் பற்றிய ஒரு விரிவான ஆய்வை வழங்குகிறது, ஒவ்வொரு வகையையும் எப்போது பயன்படுத்த வேண்டும் மற்றும் அவற்றை எவ்வாறு திறம்பட செயல்படுத்துவது என்பது குறித்து உங்களுக்கு வழிகாட்டுகிறது.
மாடல் இன்ஹெரிட்டன்ஸைப் புரிந்துகொள்ளுதல்
மாடல் இன்ஹெரிட்டன்ஸ் என்பது பொருள்-சார் நிரலாக்கத்தின் ஒரு அடிப்படைக் கருத்தாகும், இது ஏற்கனவே உள்ள கிளாஸ்களின் (ஜேங்கோவில் மாடல்கள்) அடிப்படையில் புதிய கிளாஸ்களை உருவாக்க உங்களை அனுமதிக்கிறது. புதிய கிளாஸ் பெற்றோர் கிளாஸின் பண்புகளையும் மெத்தட்களையும் மரபுரிமையாகப் பெறுகிறது, இது கோடை மீண்டும் எழுதாமல் பெற்றோரின் நடத்தையை நீட்டிக்க அல்லது சிறப்பிக்க உங்களை அனுமதிக்கிறது. ஜேங்கோவில், மாடல் இன்ஹெரிட்டன்ஸ் பல மாடல்களில் ஃபீல்டுகள், மெத்தட்கள் மற்றும் மெட்டா விருப்பங்களைப் பகிர்ந்து கொள்ள பயன்படுத்தப்படுகிறது.
ஒரு நல்ல கட்டமைப்பு மற்றும் திறமையான தரவுத்தளத்தை உருவாக்க சரியான வகை இன்ஹெரிட்டன்ஸைத் தேர்ந்தெடுப்பது மிகவும் முக்கியம். இன்ஹெரிட்டன்ஸை தவறாகப் பயன்படுத்துவது செயல்திறன் சிக்கல்களுக்கும் சிக்கலான தரவுத்தள ஸ்கீமாக்களுக்கும் வழிவகுக்கும். எனவே, ஒவ்வொரு அணுகுமுறையின் நுணுக்கங்களையும் புரிந்துகொள்வது அவசியம்.
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள்
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் என்றால் என்ன?
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் என்பவை பிற மாடல்களால் மரபுரிமையாகப் பெற வடிவமைக்கப்பட்டவை, ஆனால் நேரடியாக இன்ஸ்டன்ஷியேட் செய்யப்படாதவை. அவை மற்ற மாடல்களுக்கான வரைபடங்களாகச் செயல்படுகின்றன, அனைத்து சைல்ட் மாடல்களிலும் இருக்க வேண்டிய பொதுவான ஃபீல்டுகள் மற்றும் மெத்தட்களை வரையறுக்கின்றன. ஜேங்கோவில், மாடலின் Meta கிளாஸின் abstract பண்பை True என அமைப்பதன் மூலம் நீங்கள் ஒரு அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸை வரையறுக்கிறீர்கள்.
ஒரு மாடல் ஒரு அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸிலிருந்து மரபுரிமையாகப் பெறும்போது, ஜேங்கோ அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸில் வரையறுக்கப்பட்ட அனைத்து ஃபீல்டுகளையும் மெத்தட்களையும் சைல்ட் மாடலில் நகலெடுக்கிறது. இருப்பினும், அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ் தரவுத்தளத்தில் ஒரு தனி அட்டவணையாக உருவாக்கப்படவில்லை. இது மல்டி-டேபிள் இன்ஹெரிட்டன்ஸிலிருந்து ஒரு முக்கிய வேறுபாடு.
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களை எப்போது பயன்படுத்துவது
பல மாடல்களில் நீங்கள் சேர்க்க விரும்பும் பொதுவான ஃபீல்டுகளின் தொகுப்பு உங்களிடம் இருக்கும்போது, ஆனால் அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸை நேரடியாக வினவ வேண்டிய அவசியம் இல்லாதபோது அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் சிறந்தவை. சில பொதுவான பயன்பாட்டு வழக்குகள் பின்வருமாறு:
- நேரமுத்திரையிடப்பட்ட மாடல்கள்: பல மாடல்களில்
created_atமற்றும்updated_atஃபீல்டுகளைச் சேர்த்தல். - பயனர் தொடர்பான மாடல்கள்: ஒரு குறிப்பிட்ட பயனருடன் தொடர்புடைய மாடல்களில் ஒரு
userஃபீல்டைச் சேர்த்தல். - மெட்டாடேட்டா மாடல்கள்: SEO நோக்கங்களுக்காக
title,description, மற்றும்keywordsபோன்ற ஃபீல்டுகளைச் சேர்த்தல்.
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ் உதாரணம்
நேரமுத்திரையிடப்பட்ட மாடல்களுக்கு ஒரு அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸின் உதாரணத்தை உருவாக்குவோம்:
from django.db import models
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Article(TimeStampedModel):
title = models.CharField(max_length=200)
content = models.TextField()
def __str__(self):
return self.title
class Comment(TimeStampedModel):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
text = models.TextField()
def __str__(self):
return self.text
இந்த எடுத்துக்காட்டில், TimeStampedModel என்பது created_at மற்றும் updated_at ஃபீல்டுகளுடன் கூடிய ஒரு அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ் ஆகும். Article மற்றும் Comment மாடல்கள் இரண்டும் TimeStampedModel-இலிருந்து மரபுரிமையாகப் பெறுகின்றன மற்றும் தானாகவே இந்த ஃபீல்டுகளைப் பெறுகின்றன. நீங்கள் python manage.py migrate ஐ இயக்கும்போது, ஜேங்கோ Article மற்றும் Comment என்ற இரண்டு அட்டவணைகளை உருவாக்கும், ஒவ்வொன்றிலும் created_at மற்றும் updated_at ஃபீல்டுகள் இருக்கும். `TimeStampedModel`-க்காக எந்த அட்டவணையும் உருவாக்கப்படாது.
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களின் நன்மைகள்
- கோட் மறுபயன்பாடு: பல மாடல்களில் பொதுவான ஃபீல்டுகள் மற்றும் மெத்தட்களை டூப்ளிகேட் செய்வதைத் தவிர்க்கிறது.
- எளிமைப்படுத்தப்பட்ட தரவுத்தள ஸ்கீமா: அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ் ஒரு அட்டவணையாக இல்லாததால், தரவுத்தளத்தில் உள்ள அட்டவணைகளின் எண்ணிக்கையைக் குறைக்கிறது.
- மேம்படுத்தப்பட்ட பராமரிப்பு: அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸில் செய்யப்படும் மாற்றங்கள் அனைத்து சைல்ட் மாடல்களிலும் தானாகவே பிரதிபலிக்கின்றன.
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களின் தீமைகள்
- நேரடி வினவல் இல்லை: நீங்கள் அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸை நேரடியாக வினவ முடியாது. நீங்கள் சைல்ட் மாடல்களை மட்டுமே வினவ முடியும்.
- வரையறுக்கப்பட்ட பாலிமார்பிசம்: ஒரே வினவல் மூலம் அப்ஸ்ட்ராக்ட் கிளாஸில் வரையறுக்கப்பட்ட பொதுவான ஃபீல்டுகளை அணுக வேண்டியிருந்தால், வெவ்வேறு சைல்ட் மாடல்களின் இன்ஸ்டன்ஸ்களை ஒரே மாதிரியாகக் கையாள்வது கடினம். நீங்கள் ஒவ்வொரு சைல்ட் மாடலையும் தனித்தனியாக வினவ வேண்டும்.
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ்
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் என்றால் என்ன?
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் என்பது ஒரு வகை மாடல் இன்ஹெரிட்டன்ஸ் ஆகும், இதில் இன்ஹெரிட்டன்ஸ் வரிசையில் உள்ள ஒவ்வொரு மாடலுக்கும் அதன் சொந்த தரவுத்தள அட்டவணை உள்ளது. ஒரு மாடல் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தி மற்றொரு மாடலில் இருந்து மரபுரிமையாகப் பெறும்போது, ஜேங்கோ தானாகவே சைல்ட் மாடலுக்கும் பெற்றோர் மாடலுக்கும் இடையில் ஒரு ஒன்-டு-ஒன் உறவை உருவாக்குகிறது. இது சைல்ட் மாடலின் ஒரு இன்ஸ்டன்ஸ் மூலம் சைல்ட் மற்றும் பெற்றோர் மாடல்களின் ஃபீல்டுகளை அணுக உங்களை அனுமதிக்கிறது.
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸை எப்போது பயன்படுத்துவது
ஒரு பொதுவான மாடலுடன் தெளிவான "is-a" உறவைக் கொண்ட சிறப்பு மாடல்களை நீங்கள் உருவாக்க விரும்பும்போது மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் பொருத்தமானது. சில பொதுவான பயன்பாட்டு வழக்குகள் பின்வருமாறு:
- பயனர் சுயவிவரங்கள்: வெவ்வேறு வகையான பயனர்களுக்கு (எ.கா., வாடிக்கையாளர்கள், விற்பனையாளர்கள், நிர்வாகிகள்) சிறப்பு பயனர் சுயவிவரங்களை உருவாக்குதல்.
- தயாரிப்பு வகைகள்: வெவ்வேறு வகையான தயாரிப்புகளுக்கு (எ.கா., புத்தகங்கள், மின்னணுவியல், ஆடை) சிறப்பு தயாரிப்பு மாடல்களை உருவாக்குதல்.
- உள்ளடக்க வகைகள்: வெவ்வேறு வகையான உள்ளடக்கங்களுக்கு (எ.கா., கட்டுரைகள், வலைப்பதிவு இடுகைகள், செய்திகள்) சிறப்பு உள்ளடக்க மாடல்களை உருவாக்குதல்.
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் உதாரணம்
பயனர் சுயவிவரங்களுக்காக மல்டி-டேபிள் இன்ஹெரிட்டன்ஸின் ஒரு உதாரணத்தை உருவாக்குவோம்:
from django.db import models
from django.contrib.auth.models import User
class Customer(User):
phone_number = models.CharField(max_length=20, blank=True)
address = models.CharField(max_length=200, blank=True)
def __str__(self):
return self.username
class Vendor(User):
company_name = models.CharField(max_length=100, blank=True)
payment_terms = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.username
இந்த எடுத்துக்காட்டில், Customer மற்றும் Vendor மாடல்கள் இரண்டும் உள்ளமைக்கப்பட்ட User மாடலில் இருந்து மரபுரிமையாகப் பெறுகின்றன. ஜேங்கோ மூன்று அட்டவணைகளை உருவாக்குகிறது: auth_user (User மாடலுக்காக), customer, மற்றும் vendor. customer அட்டவணை auth_user அட்டவணையுடன் ஒரு ஒன்-டு-ஒன் உறவைக் (மறைமுகமாக ஒரு ForeignKey) கொண்டிருக்கும். இதேபோல், vendor அட்டவணை auth_user அட்டவணையுடன் ஒரு ஒன்-டு-ஒன் உறவைக் கொண்டிருக்கும். இது Customer மற்றும் Vendor மாடல்களின் இன்ஸ்டன்ஸ்கள் மூலம் நிலையான User ஃபீல்டுகளை (எ.கா., username, email, password) அணுக உங்களை அனுமதிக்கிறது.
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸின் நன்மைகள்
- தெளிவான "is-a" உறவு: மாடல்களுக்கு இடையே ஒரு தெளிவான படிநிலை உறவைக் குறிக்கிறது.
- பாலிமார்பிசம்: வெவ்வேறு சைல்ட் மாடல்களின் இன்ஸ்டன்ஸ்களை பெற்றோர் மாடலின் இன்ஸ்டன்ஸ்களாகக் கருத அனுமதிக்கிறது. நீங்கள் அனைத்து `User` ஆப்ஜெக்ட்களையும் வினவலாம் மற்றும் `Customer` மற்றும் `Vendor` இன்ஸ்டன்ஸ்கள் உட்பட முடிவுகளைப் பெறலாம்.
- தரவு ஒருமைப்பாடு: ஒன்-டு-ஒன் உறவின் மூலம் சைல்ட் மற்றும் பெற்றோர் அட்டவணைகளுக்கு இடையில் ரெஃபரென்ஷியல் இன்டெக்ரிட்டியை அமல்படுத்துகிறது.
மல்டி-டேபிள் இன்ஹெரிட்டன்ஸின் தீமைகள்
- அதிகரித்த தரவுத்தள சிக்கல்: தரவுத்தளத்தில் அதிக அட்டவணைகளை உருவாக்குகிறது, இது சிக்கலை அதிகரிக்கலாம் மற்றும் வினவல்களை மெதுவாக்கலாம்.
- செயல்திறன் மேல்நிலை: பல அட்டவணைகளை உள்ளடக்கிய தரவுகளை வினவுவது ஒரு அட்டவணையை வினவுவதை விட குறைவான செயல்திறன் கொண்டது.
- தேவையற்ற தரவுகளுக்கான சாத்தியம்: நீங்கள் கவனமாக இல்லாவிட்டால், பல அட்டவணைகளில் ஒரே தரவை சேமிக்க நேரிடலாம்.
ப்ராக்ஸி மாடல்கள்
அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் மற்றும் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் போன்ற மாடல் இன்ஹெரிட்டன்ஸின் ஒரு வகையாக கண்டிப்பாக இல்லாவிட்டாலும், ப்ராக்ஸி மாடல்கள் இந்த சூழலில் குறிப்பிடத் தக்கவை. ஒரு ப்ராக்ஸி மாடல் ஒரு மாடலின் தரவுத்தள அட்டவணையை மாற்றாமல் அதன் நடத்தையை மாற்றியமைக்க உங்களை அனுமதிக்கிறது. மாடலின் Meta கிளாஸில் proxy = True என அமைப்பதன் மூலம் ஒரு ப்ராக்ஸி மாடலை வரையறுக்கிறீர்கள்.
ப்ராக்ஸி மாடல்களை எப்போது பயன்படுத்துவது
நீங்கள் விரும்பும்போது ப்ராக்ஸி மாடல்கள் பயனுள்ளவை:
- ஒரு மாடலில் தனிப்பயன் மெத்தட்களைச் சேர்க்க: மாடலின் ஃபீல்டுகள் அல்லது உறவுகளை மாற்றாமல்.
- ஒரு மாடலின் இயல்புநிலை வரிசையை மாற்ற: குறிப்பிட்ட வியூக்கள் அல்லது சூழல்களுக்கு.
- ஒரு மாடலை வேறு ஜேங்கோ ஆப் மூலம் நிர்வகிக்க: அசல் ஆப்பில் உள்ள அடிப்படை தரவுத்தள அட்டவணையை அப்படியே வைத்துக்கொண்டு.
ப்ராக்ஸி மாடல் உதாரணம்
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.BooleanField(default=False)
def __str__(self):
return self.title
class PublishedArticle(Article):
class Meta:
proxy = True
ordering = ['-title']
def get_absolute_url(self):
return f'/articles/{self.pk}/'
இந்த எடுத்துக்காட்டில், PublishedArticle என்பது Article-க்கான ஒரு ப்ராக்ஸி மாடல் ஆகும். இது Article-இன் அதே தரவுத்தள அட்டவணையைப் பயன்படுத்துகிறது, ஆனால் வேறுபட்ட இயல்புநிலை வரிசையைக் (ordering = ['-title']) கொண்டுள்ளது மற்றும் ஒரு தனிப்பயன் மெத்தடைச் (get_absolute_url) சேர்க்கிறது. புதிய அட்டவணை எதுவும் உருவாக்கப்படவில்லை.
சரியான இன்ஹெரிட்டன்ஸ் வகையைத் தேர்ந்தெடுத்தல்
பின்வரும் அட்டவணை அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் மற்றும் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடுகளை சுருக்கமாகக் கூறுகிறது:
| அம்சம் | அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் | மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் |
|---|---|---|
| தரவுத்தள அட்டவணை | தனி அட்டவணை இல்லை | தனி அட்டவணை |
| வினவல் | நேரடியாக வினவ முடியாது | பெற்றோர் மாடல் மூலம் வினவலாம் |
| உறவு | வெளிப்படையான உறவு இல்லை | ஒன்-டு-ஒன் உறவு |
| பயன்பாட்டு வழக்குகள் | பொதுவான ஃபீல்டுகள் மற்றும் மெத்தட்களைப் பகிர்தல் | "is-a" உறவுடன் சிறப்பு மாடல்களை உருவாக்குதல் |
| செயல்திறன் | எளிய இன்ஹெரிட்டன்ஸிற்கு பொதுவாக வேகமானது | ஜாயின்கள் காரணமாக மெதுவாக இருக்கலாம் |
சரியான இன்ஹெரிட்டன்ஸ் வகையைத் தேர்வுசெய்ய உதவும் ஒரு முடிவெடுக்கும் வழிகாட்டி இதோ:
- நீங்கள் பேஸ் கிளாஸை நேரடியாக வினவ வேண்டுமா? ஆம் எனில், மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தவும். இல்லை எனில், அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களைக் கருத்தில் கொள்ளவும்.
- தெளிவான "is-a" உறவுடன் சிறப்பு மாடல்களை உருவாக்குகிறீர்களா? ஆம் எனில், மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தவும்.
- நீங்கள் முக்கியமாக பொதுவான ஃபீல்டுகள் மற்றும் மெத்தட்களைப் பகிர வேண்டுமா? ஆம் எனில், அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களைப் பயன்படுத்தவும்.
- தரவுத்தள சிக்கல் மற்றும் செயல்திறன் மேல்நிலை பற்றி கவலைப்படுகிறீர்களா? ஆம் எனில், அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களை விரும்புங்கள்.
மாடல் இன்ஹெரிட்டன்ஸிற்கான சிறந்த நடைமுறைகள்
ஜேங்கோவில் மாடல் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தும்போது பின்பற்ற வேண்டிய சில சிறந்த நடைமுறைகள் இங்கே:
- இன்ஹெரிட்டன்ஸ் படிநிலைகளை ஆழமற்றதாக வைத்திருங்கள்: ஆழமான இன்ஹெரிட்டன்ஸ் படிநிலைகளைப் புரிந்துகொள்வதும் பராமரிப்பதும் கடினமாகிவிடும். உங்கள் இன்ஹெரிட்டன்ஸ் படிநிலையில் உள்ள நிலைகளின் எண்ணிக்கையைக் கட்டுப்படுத்துங்கள்.
- பொருத்தமான பெயர்களைப் பயன்படுத்துங்கள்: கோடின் வாசிப்புத்திறனை மேம்படுத்த உங்கள் மாடல்கள் மற்றும் ஃபீல்டுகளுக்கு விளக்கமான பெயர்களைத் தேர்வுசெய்யவும்.
- உங்கள் மாடல்களை ஆவணப்படுத்துங்கள்: உங்கள் மாடல்களின் நோக்கம் மற்றும் நடத்தையை விளக்க டாக்ஸ்ட்ரிங்குகளைச் சேர்க்கவும்.
- உங்கள் மாடல்களை முழுமையாகச் சோதிக்கவும்: உங்கள் மாடல்கள் எதிர்பார்த்தபடி செயல்படுவதை உறுதிசெய்ய யூனிட் சோதனைகளை எழுதுங்கள்.
- மிக்ஸின்களைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்: மிக்ஸின்கள் என்பவை பல மாடல்களில் சேர்க்கக்கூடிய மறுபயன்பாட்டு செயல்பாட்டை வழங்கும் கிளாஸ்கள் ஆகும். சில சமயங்களில் அவை இன்ஹெரிட்டன்ஸிற்கு ஒரு நல்ல மாற்றாக இருக்கலாம். ஒரு மிக்ஸின் என்பது மற்ற கிளாஸ்களால் மரபுரிமையாகப் பெறக்கூடிய செயல்பாட்டை வழங்கும் ஒரு கிளாஸ் ஆகும். இது ஒரு பேஸ் கிளாஸ் அல்ல, ஆனால் குறிப்பிட்ட நடத்தையை வழங்கும் ஒரு மாட்யூல். எடுத்துக்காட்டாக, ஒரு மாடலில் ஏற்படும் மாற்றங்களை தானாகவே பதிவுசெய்ய நீங்கள் ஒரு `LoggableMixin`-ஐ உருவாக்கலாம்.
- தரவுத்தள செயல்திறனில் கவனம் செலுத்துங்கள்: வினவல் செயல்திறனை பகுப்பாய்வு செய்வதற்கும் சாத்தியமான இடையூறுகளை அடையாளம் காண்பதற்கும் ஜேங்கோ டெபக் டூல்பார் போன்ற கருவிகளைப் பயன்படுத்தவும்.
- தரவுத்தள நார்மலைசேஷனைக் கருத்தில் கொள்ளுங்கள்: ஒரே தரவை பல இடங்களில் சேமிப்பதைத் தவிர்க்கவும். தரவுத்தள நார்மலைசேஷன் என்பது தரவுத்தள ஒருமைப்பாடு கட்டுப்பாடுகள் சார்புகளை சரியாக அமல்படுத்தும் வகையில் தரவுகளை அட்டவணைகளில் ஒழுங்கமைப்பதன் மூலம் தேவையற்ற தன்மையைக் குறைக்கவும் தரவு ஒருமைப்பாட்டை மேம்படுத்தவும் பயன்படுத்தப்படும் ஒரு நுட்பமாகும்.
உலகெங்கிலுமிருந்து நடைமுறை உதாரணங்கள்
பல்வேறு பயன்பாடுகளில் மாடல் இன்ஹெரிட்டன்ஸ் பயன்பாட்டை விளக்கும் சில உலகளாவிய உதாரணங்கள் இங்கே:
- இ-காமர்ஸ் தளம் (உலகளாவிய):
- வெவ்வேறு வகையான தயாரிப்புகளை (எ.கா., PhysicalProduct, DigitalProduct, Service) மாடலிங் செய்ய மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தலாம். ஒவ்வொரு தயாரிப்பு வகையும் அதன் சொந்த குறிப்பிட்ட பண்புகளைக் கொண்டிருக்கலாம், அதே நேரத்தில் பெயர், விளக்கம் மற்றும் விலை போன்ற பொதுவான பண்புகளை ஒரு பேஸ் Product மாடலிலிருந்து மரபுரிமையாகப் பெறலாம். ஒழுங்குமுறைகள் அல்லது லாஜிஸ்டிக்ஸ் காரணமாக தயாரிப்பு மாறுபாடுகளுக்கு தனித்துவமான மாடல்கள் தேவைப்படும் சர்வதேச இ-காமர்ஸிற்கு இது மிகவும் பயனுள்ளதாக இருக்கும்.
- அனைத்து இயற்பியல் தயாரிப்புகளுக்கும் 'shipping_weight' மற்றும் 'dimensions' போன்ற பொதுவான ஃபீல்டுகளைச் சேர்க்க அல்லது அனைத்து டிஜிட்டல் தயாரிப்புகளுக்கும் 'download_link' மற்றும் 'file_size' போன்றவற்றைச் சேர்க்க அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களைப் பயன்படுத்தலாம்.
- ரியல் எஸ்டேட் மேலாண்மை அமைப்பு (சர்வதேசம்):
- வெவ்வேறு வகையான சொத்துக்களை (எ.கா., ResidentialProperty, CommercialProperty, Land) மாடலிங் செய்ய மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தலாம். ஒவ்வொரு வகைக்கும் குடியிருப்பு சொத்துக்களுக்கு 'number_of_bedrooms' அல்லது வணிக சொத்துக்களுக்கு 'floor_area_ratio' போன்ற தனித்துவமான ஃபீல்டுகள் இருக்கலாம், அதே நேரத்தில் 'address' மற்றும் 'price' போன்ற பொதுவான ஃபீல்டுகளை ஒரு பேஸ் Property மாடலிலிருந்து மரபுரிமையாகப் பெறலாம்.
- சொத்து கிடைப்பதை கண்காணிக்க 'listing_date' மற்றும் 'available_date' போன்ற பொதுவான ஃபீல்டுகளைச் சேர்க்க அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களைப் பயன்படுத்தலாம்.
- கல்வித் தளம் (உலகளாவிய):
- வெவ்வேறு வகையான படிப்புகளை (எ.கா., OnlineCourse, InPersonCourse, Workshop) பிரதிநிதித்துவப்படுத்த மல்டி-டேபிள் இன்ஹெரிட்டன்ஸைப் பயன்படுத்தலாம். ஆன்லைன் படிப்புகளுக்கு 'video_url' மற்றும் 'duration' போன்ற பண்புகளும், நேரில் நடக்கும் படிப்புகளுக்கு 'location' மற்றும் 'schedule' போன்ற பண்புகளும் இருக்கலாம், அதே நேரத்தில் 'title' மற்றும் 'description' போன்ற பொதுவான பண்புகளை ஒரு பேஸ் Course மாடலிலிருந்து மரபுரிமையாகப் பெறலாம். இது மாறுபட்ட விநியோக முறைகளை வழங்கும் உலகளாவிய கல்வி முறைகளில் பயனுள்ளதாக இருக்கும்.
- அனைத்து படிப்புகளிலும் நிலைத்தன்மையை உறுதிப்படுத்த 'difficulty_level' மற்றும் 'language' போன்ற பொதுவான ஃபீல்டுகளைச் சேர்க்க அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்களைப் பயன்படுத்தலாம்.
முடிவுரை
ஜேங்கோ மாடல் இன்ஹெரிட்டன்ஸ் என்பது நன்கு கட்டமைக்கப்பட்ட மற்றும் பராமரிக்கக்கூடிய தரவுத்தள ஸ்கீமாக்களை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த கருவியாகும். அப்ஸ்ட்ராக்ட் பேஸ் கிளாஸ்கள் மற்றும் மல்டி-டேபிள் இன்ஹெரிட்டன்ஸ் ஆகியவற்றுக்கு இடையேயான வேறுபாடுகளைப் புரிந்துகொள்வதன் மூலம், உங்கள் குறிப்பிட்ட பயன்பாட்டு வழக்கிற்கு சரியான அணுகுமுறையை நீங்கள் தேர்வு செய்யலாம். உங்கள் முடிவை எடுக்கும்போது கோட் மறுபயன்பாடு, தரவுத்தள சிக்கல் மற்றும் செயல்திறன் மேல்நிலை ஆகியவற்றுக்கு இடையேயான வர்த்தகங்களைக் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள். இந்த கட்டுரையில் கோடிட்டுக் காட்டப்பட்டுள்ள சிறந்த நடைமுறைகளைப் பின்பற்றுவது திறமையான மற்றும் அளவிடக்கூடிய ஜேங்கோ பயன்பாடுகளை உருவாக்க உதவும்.