জ্যাঙ্গোতে ডেটাবেস সম্পর্কগুলি বুঝুন

জ্যাঙ্গোতে ডেটাবেস সম্পর্কগুলি বুঝুন
আপনার মত পাঠকরা MUO সমর্থন করতে সাহায্য করে। আপনি যখন আমাদের সাইটে লিঙ্ক ব্যবহার করে একটি ক্রয় করেন, আমরা একটি অনুমোদিত কমিশন উপার্জন করতে পারি।

একটি ডাটাবেস সম্পর্ক বিভিন্ন ডাটাবেস টেবিলের মধ্যে সংযোগ বর্ণনা করে। সম্পর্কগুলি কীভাবে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করতে হয় তা নির্ধারণ করে। জ্যাঙ্গো রিলেশনাল ডাটাবেস সিস্টেম (RDBMS) এর সাথে ভাল কাজ করে। এটি, তাই, ডাটাবেস টেবিল সম্পর্ক সমর্থন করে।





সম্পর্কের ধরনগুলি আপনার অ্যাপ্লিকেশনের প্রয়োজনীয়তা এবং এটি যে ডেটা তৈরি করে তার উপর নির্ভর করে৷ জ্যাঙ্গো মডেল এবং ডাটাবেসের মধ্যে ভালো সম্পর্ক ডেটা রক্ষণাবেক্ষণকে উন্নত করে। এর মধ্যে রয়েছে ক্যোয়ারী পারফরম্যান্স উন্নত করা এবং ডেটা ডুপ্লিকেশন কমানো।





দিনের মেকইউজের ভিডিও

আপনি জানতে পারেন কিভাবে জ্যাঙ্গো ডাটাবেস সম্পর্ক তিনটি প্রধান ধরনের সম্পর্কের অন্বেষণ করে অ্যাপ্লিকেশন কর্মক্ষমতা প্রভাবিত করে।





ডাটাবেস সম্পর্ক

রিলেশনাল ডাটাবেস সিস্টেম তিন ধরনের ডাটাবেস সম্পর্ক সমর্থন করে। এই সম্পর্কগুলি এক-থেকে-অনেক, বহু-থেকে-অনেক এবং এক-থেকে-এক। ডাটাবেস সম্পর্কের ধরন আপনার অ্যাপ্লিকেশনের ব্যবহারের ক্ষেত্রে প্রভাবিত করে।

জ্যাঙ্গো মডেল অ্যাপে ডাটাবেস টেবিল প্রতিনিধিত্ব করে। একটি ভাল ডাটাবেস সিস্টেম তৈরি করতে আপনাকে অবশ্যই টেবিলের মধ্যে ভাল সম্পর্ক তৈরি করতে হবে। ডেটাবেস সম্পর্ক নির্ধারণ করে কিভাবে আপনার অ্যাপ্লিকেশনে ডেটা সঞ্চয় এবং উপস্থাপন করতে হয়।



ডাটাবেস সম্পর্ক বুঝতে, শুরু করুন একটি জ্যাঙ্গো প্রকল্প তৈরি করা নাম হুডস। অ্যাপটি একটি প্রতিবেশী সামাজিক নেটওয়ার্ক হবে। এটি বিভিন্ন আশেপাশের সামাজিক কার্যকলাপ, নিরাপত্তা এবং ব্যবসা পরিচালনা করবে।

বাসিন্দারা নিবন্ধন করতে, সাইন ইন করতে এবং প্রোফাইল তৈরি করতে পারেন। তারা প্রত্যেকের দেখার জন্য পোস্ট এবং ব্যবসার বিজ্ঞাপনও তৈরি করতে পারে।





কিভাবে উইন্ডোজ থেকে গুগল ড্রাইভ সরানো যায়

শুরু করতে, একটি ডাটাবেস তৈরি করুন যা সমস্ত আশেপাশের ডেটা সংরক্ষণ করবে৷ তারপরে, আপনি প্রোফাইল, নেবারহুড, ব্যবসা এবং পোস্ট মডেল তৈরি করবেন। মডেলগুলি তৈরি করতে, আপনাকে অবশ্যই ডেটাবেস টেবিলের প্রয়োজনীয় সম্পর্ক নির্ধারণ করতে হবে।

এক থেকে এক ডেটাবেস সম্পর্ক

এক-এক সম্পর্ক মানে জ্যাঙ্গো মডেলের একটি রেকর্ড অন্য মডেলের অন্য রেকর্ডের সাথে সম্পর্কিত। দুটি রেকর্ড একে অপরের উপর নির্ভর করে। এই ক্ষেত্রে, দ প্রোফাইল মডেল নির্ভর করে ব্যবহারকারী মডেল আবাসিক প্রোফাইল তৈরি করতে।





তাই অ্যাপে নিবন্ধিত প্রতিটি বাসিন্দার জন্য শুধুমাত্র একটি প্রোফাইল থাকতে পারে। এছাড়াও, ব্যবহারকারী ছাড়া, একটি প্রোফাইল বিদ্যমান থাকতে পারে না।

from django.db import models 
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = CloudinaryField('profile_picture', default='default.png')
location = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(null=True)

def __str__(self):
return f'{self.user.username} profile'

জ্যাঙ্গোর ইউজার মডেল জ্যাঙ্গোতে একটি অন্তর্নির্মিত প্রমাণীকরণ মডেল। এর জন্য আপনাকে কোনো মডেল তৈরি করতে হবে না। পরিবর্তে, এটি থেকে আমদানি করুন django.contrib.auth. দ্য OneToOneField() উপরে প্রোফাইল মডেল এক-এক সম্পর্ককে সংজ্ঞায়িত করে।

দ্য on_delete=models.CASCADE যুক্তি এই রেকর্ডগুলির একটি মুছে ফেলা প্রতিরোধ করে। আপনাকে অবশ্যই উভয় টেবিল থেকে রেকর্ড মুছে ফেলতে হবে।

আপনি আপনার অ্যাপে সম্পর্কটি কল্পনা করতে জ্যাঙ্গো অ্যাডমিন ইন্টারফেস ব্যবহার করতে পারেন। জ্যাঙ্গো অ্যাডমিনে লগ ইন করতে, আপনাকে অবশ্যই একজন প্রশাসক ব্যবহারকারী হিসাবে নিবন্ধন করতে হবে যা একটি নামে পরিচিত সুপার ব্যবহারকারী .

টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে একটি সুপারউজার তৈরি করুন:

python manage.py createsuperuser

আপনার ব্যবহারকারীর নাম, ইমেল এবং পাসওয়ার্ড প্রবেশ করার জন্য একটি অনুরোধ থাকবে। একবার আপনি এটি সম্পন্ন করলে, সার্ভার শুরু করুন।

কিভাবে mp3 ফাইলের সাইজ কমানো যায়

URL http://127.0.0.1:8000/admin ব্যবহার করে একটি ব্রাউজারে অ্যাডমিন পৃষ্ঠা খুলুন।

আপনি অ্যাডমিন পৃষ্ঠাটি দেখতে পাবেন যেখানে আপনি আগে তৈরি করা শংসাপত্রগুলি দিয়ে লগ ইন করতে পারেন। একবার লগ ইন করলে, আপনি দেখতে পাবেন গোষ্ঠী এবং ব্যবহারকারীদের বস্তু জ্যাঙ্গো প্রমাণীকরণ কাঠামো এই দুটি মডেল পরিচালনা করে। নীচে, আপনি দেখতে পাবেন প্রোফাইল মডেল।

খোলা প্রোফাইল মডেল এবং একটি প্রোফাইল যোগ করতে এগিয়ে যান। আপনি দেখতে পাবেন এটি নিম্নরূপ প্রদর্শিত হবে:

  জ্যাঙ্গো অ্যাডমিন প্রোফাইল এবং ব্যবহারকারী মডেলের মধ্যে সম্পর্ক প্রদর্শন করছে

লক্ষ্য করুন যে আপনার কাছে ব্যবহারকারীর জন্য একটি প্রোফাইল তৈরি করার বিকল্প রয়েছে। OneToOneField() ডেটা টাইপ আপনাকে প্রমাণীকৃত ব্যবহারকারীদের জন্য প্রোফাইল তৈরি করতে দেয়। এইভাবে অ্যাপটি এক থেকে এক সম্পর্ক পরিচালনা করে।

এক থেকে বহু সম্পর্ক

এক-থেকে-অনেক সম্পর্ক বোঝায় যে একটি মডেলের একটি রেকর্ড অন্য মডেলের অনেক রেকর্ডের সাথে যুক্ত। একে বহু-থেকে-এক সম্পর্ক হিসাবেও উল্লেখ করা হয়।

আপনার ক্ষেত্রে, একজন প্রশাসক বিভিন্ন এলাকা তৈরি করতে পারেন। কিন্তু প্রতিটি পাড়া শুধুমাত্র একজন অ্যাডমিনের অন্তর্গত হতে পারে। আপনি এই ধরনের সম্পর্ক সংজ্ঞায়িত করতে ForeignKey ডেটা টাইপ ব্যবহার করতে পারেন।

জ্যাঙ্গোতে একটি অন্তর্নির্মিত অ্যাডমিন ইন্টারফেস রয়েছে। এর জন্য আপনাকে কোনো মডেল তৈরি করতে হবে না। অ্যাডমিনের কন্টেন্ট পরিচালনা করার এবং অ্যাডমিন প্যানেল থেকে অ্যাপটি কল্পনা করার অধিকার রয়েছে।

মডেল যে অনেক রেকর্ড মিটমাট করা হবে বিদেশী চাবি . এটি সম্পর্কটিকে এক-থেকে-অনেক হিসাবে সংজ্ঞায়িত করে। নীচের কোডটি দেখায় কোথায় কী রাখতে হবে।

class NeighbourHood(models.Model): 
admin = models.ForeignKey("Profile", on_delete=models.CASCADE, related_name='hood')
name = models.CharField(max_length=50)
location = models.CharField(max_length=60)
hood_logo = CloudinaryField('hood_logo', default='default.png')
description = models.TextField()
health_tell = models.IntegerField(null=True, blank=True)
police_number = models.IntegerField(null=True, blank=True)
Count= models.IntegerField(null=True, blank=True)

def __str__(self):
return f'{self.name} hood'

আপনি ছবিটিতে চিত্রিত হিসাবে অ্যাপটিতে সম্পর্কটি দেখতে পারেন:

  নেবারহুড মডেল দেখায় অ্যাডমিন পছন্দ যোগ করা হয়েছে

দ্য নেবারহুড মডেল এখন একজন অ্যাডমিন আছে। যে কেউ একটি প্রতিবেশী তৈরি করতে, তাদের অবশ্যই প্রশাসকের অধিকার থাকতে হবে। এবং একটি আশেপাশে অনেক প্রশাসক থাকতে পারে না।

অনেক থেকে অনেক ডেটাবেস সম্পর্ক

বহুতে বহুতে সম্পর্ক, একটি মডেলের অনেক রেকর্ড অন্যের সাথে অন্যের সাথে যুক্ত। উদাহরণস্বরূপ, দ পোস্ট এবং ব্যবসা মডেল একে অপরের বিভিন্ন রেকর্ড থাকতে পারে. ব্যবহারকারীরা তাদের পোস্টে এবং তদ্বিপরীত বিভিন্ন ব্যবসায়িক বিজ্ঞাপন করতে পারেন।

যাইহোক, বহু-থেকে-অনেক সম্পর্ক তৈরির ফলে ভুল তথ্য হতে পারে। অন্যান্য ফ্রেমওয়ার্কগুলিতে, আপনাকে দুটি টেবিলে যোগদানের জন্য একটি নতুন টেবিল তৈরি করতে হবে।

Django এর জন্য একটি সমাধান আছে। আপনি যখন বহু-থেকে-অনেক ক্ষেত্র ব্যবহার করেন, তখন এটি দুটি টেবিলকে একসাথে ম্যাপিং করে একটি নতুন টেবিল তৈরি করে . আপনি দুটি মডেলের যেকোনো একটিতে বহু-থেকে-অনেক ক্ষেত্র রাখতে পারেন, তবে এটি উভয় মডেলের মধ্যে থাকা উচিত নয়।

class Post(models.Model): 
title = models.CharField(max_length=120, null=True)
post = models.TextField()
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='post_owner')
hood = models.ForeignKey(NeighbourHood, on_delete=models.CASCADE, related_name='hood_post')
business = models.ManyToManyField(Business)

def __str__(self):
return f'{self.title} post'

এখন, আপনি দেখতে যখন পোস্ট অ্যাডমিন প্যানেলে মডেল, আপনি একটি পোস্টে বিভিন্ন ব্যবসা সংযুক্ত করতে পারেন।

  পোস্ট মডেলের বিভিন্ন ব্যবসা যোগ করার বিকল্প আছে

জ্যাঙ্গো ডেটাবেস সম্পর্ককে সরল করে

আপনার অ্যাপ্লিকেশনের জন্য আপনি যে ধরনের ডাটাবেস ব্যবহার করেন তা নির্ধারণ করে কিভাবে ডেটা ব্যবহার করতে হয়। জ্যাঙ্গোতে একটি বিস্তৃত সিস্টেম রয়েছে যা রিলেশনাল ডাটাবেসগুলিকে সংযোগ করা এবং পরিচালনা করা সহজ করে তোলে।

জ্যাঙ্গো বৈশিষ্ট্যগুলি সম্পর্কিত টেবিল থেকে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করা সহজ করে তোলে। এতে অন্তর্নির্মিত API রয়েছে যা আপনার অ্যাপের জন্য ডাটাবেস সম্পর্ক সংযুক্ত করে এবং তৈরি করে।

নোটপ্যাড ++ প্লাগইন ম্যানেজার অনুপস্থিত

ডেটাবেস সম্পর্ক আপনার আবেদনের আচরণ নির্ধারণ করে। আপনি এক-থেকে-এক, এক-থেকে-অনেক, বা বহু-থেকে-অনেক সম্পর্ক ব্যবহার করবেন কিনা তা আপনার উপর নির্ভর করে।

জ্যাঙ্গো দিয়ে, আপনি আপনার অ্যাপ্লিকেশনটি না ভেঙে বৈশিষ্ট্যগুলি কনফিগার করতে এবং পরীক্ষা করতে পারেন। ডাটাবেস সিস্টেম সুরক্ষিত করতে এবং আপনার বিকাশকারীর অভিজ্ঞতা অপ্টিমাইজ করতে জ্যাঙ্গো ব্যবহার করুন।