সারণী সম্পর্ক বনাম সত্তা সম্পর্ক
রিলেশনাল ডাটাবেস সিস্টেমে কেবল তিন ধরণের টেবিল সম্পর্ক থাকতে পারে:
- এক থেকে অনেকগুলি (একটি বিদেশী কী কলামের মাধ্যমে)
- ওয়ান-টু-ওয়ান (একটি শেয়ার করা প্রাথমিক কী এর মাধ্যমে)
- বহু-থেকে-বহু (দুটি বিদেশী কীগুলির সাথে দুটি পৃথক পিতামাতার টেবিলগুলি উল্লেখ করে একটি লিঙ্ক টেবিলের মাধ্যমে)
সুতরাং, একটি 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
পদ্ধতি নিশ্চিত করুন যে উভয় পক্ষের সুসংগত করা হয়। সুতরাং, আমরা যদি কোনও শিশু সত্তা যুক্ত করি তবে শিশু সত্তাকে পিতামাতাকে নির্দেশ করতে হবে এবং পিতা-মাতার সত্তাকে সন্তানের সংগ্রহের মধ্যে অন্তর্ভুক্ত করা উচিত।
সমস্ত দ্বি-নির্দেশমূলক সত্তা সমিতির প্রকারগুলি সিঙ্ক্রোনাইজ করার সর্বোত্তম উপায় সম্পর্কে আরও বিশদের জন্য এই নিবন্ধটি দেখুন ।