সারণী সম্পর্ক বনাম সত্তা সম্পর্ক
রিলেশনাল ডাটাবেস সিস্টেমে কেবল তিন ধরণের টেবিল সম্পর্ক থাকতে পারে:
- এক থেকে অনেকগুলি (একটি বিদেশী কী কলামের মাধ্যমে)
- ওয়ান-টু-ওয়ান (একটি শেয়ার করা প্রাথমিক কী এর মাধ্যমে)
- বহু-থেকে-বহু (দুটি বিদেশী কীগুলির সাথে দুটি পৃথক পিতামাতার টেবিলগুলি উল্লেখ করে একটি লিঙ্ক টেবিলের মাধ্যমে)
সুতরাং, একটি one-to-manyটেবিল সম্পর্ক নীচে হিসাবে দেখায়:

নোট করুন যে সম্পর্কটি post_idশিশু সারণীতে বিদেশী কী কলাম (যেমন, ) এর উপর ভিত্তি করে ।
সুতরাং, যখন কোনও one-to-manyটেবিলের সম্পর্কটি পরিচালনার কথা আসে তখন সত্যের একক উত্স থাকে ।
এখন, আপনি যদি দ্বি নির্দেশমূলক সত্তা সম্পর্কটি নেন যা one-to-manyসারণীর সম্পর্কের মানচিত্রগুলি আমরা আগে দেখেছি:

যদি আপনি উপরের চিত্রটি একবার দেখুন, আপনি দেখতে পারেন যে এই সম্পর্কটি পরিচালনা করার দুটি উপায় রয়েছে।
ইন Postসত্তা, আপনি commentsসংগ্রহ:
@OneToMany(
mappedBy = "post",
cascade = CascadeType.ALL,
orphanRemoval = true
)
private List<PostComment> comments = new ArrayList<>();
এবং, এর মধ্যে PostComment, postসমিতিটি ম্যাপ করা হয়েছে:
@ManyToOne(
fetch = FetchType.LAZY
)
@JoinColumn(name = "post_id")
private Post post;
সুতরাং, আপনার দুটি পক্ষ রয়েছে যা সত্তা সমিতি পরিবর্তন করতে পারে:
commentsশিশু সংগ্রহে একটি এন্ট্রি যুক্ত করে একটি নতুন post_commentসারিটি postতার post_idকলামের মাধ্যমে প্যারেন্ট সত্তার সাথে যুক্ত করা উচিত ।
- সত্তার
postসম্পত্তি সেট করে PostComment, post_idকলামটিও আপডেট করা উচিত।
বিদেশী কী কলামটি উপস্থাপনের জন্য দুটি উপায় রয়েছে, তাই সমিতি রাষ্ট্রের পরিবর্তনটিকে তার সমতুল্য বিদেশী কী কলামের মান সংশোধন করে অনুবাদ করার কথা বলতে গেলে আপনাকে অবশ্যই সত্যের উত্স বলতে হবে।
ম্যাপডবাই (ওরফে উল্টো দিক)
mappedByঅ্যাট্রিবিউট বলে যে @ManyToOneপাশ পররাষ্ট্র কী কলাম পরিচালনার দায়িত্বে, আর সংগ্রহ একমাত্র সন্তান সত্তা আনা জন্য ব্যবহৃত হয় এবং হয় শিশুদের ক্যাসকেড পিতা বা মাতা সত্তা রাষ্ট্র পরিবর্তনের (যেমন, পিতা বা মাতা সরানোর এছাড়াও শিশু সত্ত্বা অপসারণ উচিত)।
একে বিপরীত দিক বলা হয় কারণ এটি এই সারণির সম্পর্ক পরিচালনা করে এমন শিশু সত্তার সম্পত্তিকে উল্লেখ করে।
দ্বি দ্বি-নির্দেশমূলক সংস্থার উভয় পক্ষকে সিঙ্ক্রোনাইজ করুন ize
এখন, আপনি যদি mappedByএট্রিবিউটটি সংজ্ঞায়িত করেন এবং চাইল্ড-সাইড @ManyToOneঅ্যাসোসিয়েশন বিদেশী কী কলামটি পরিচালনা করে তবে আপনার দ্বিপাক্ষিক সংস্থার উভয় দিককেই সমন্বয় করতে হবে।
এটি করার সর্বোত্তম উপায় হ'ল এই দুটি ইউটিলিটি পদ্ধতি যুক্ত করা:
public void addComment(PostComment comment) {
comments.add(comment);
comment.setPost(this);
}
public void removeComment(PostComment comment) {
comments.remove(comment);
comment.setPost(null);
}
addCommentএবং removeCommentপদ্ধতি নিশ্চিত করুন যে উভয় পক্ষের সুসংগত করা হয়। সুতরাং, আমরা যদি কোনও শিশু সত্তা যুক্ত করি তবে শিশু সত্তাকে পিতামাতাকে নির্দেশ করতে হবে এবং পিতা-মাতার সত্তাকে সন্তানের সংগ্রহের মধ্যে অন্তর্ভুক্ত করা উচিত।
সমস্ত দ্বি-নির্দেশমূলক সত্তা সমিতির প্রকারগুলি সিঙ্ক্রোনাইজ করার সর্বোত্তম উপায় সম্পর্কে আরও বিশদের জন্য এই নিবন্ধটি দেখুন ।