আরেকটি উপায় (নুলস ছাড়া এবং FOREIGN KEY
সম্পর্কের চক্র ব্যতীত ) "প্রিয় শিশুদের" সঞ্চয় করার জন্য একটি তৃতীয় টেবিল রাখা উচিত। বেশিরভাগ ডিবিএমএসে আপনার একটি অতিরিক্ত UNIQUE
বাধা প্রয়োজন TableB
।
উপরের নামকরণ কনভেনশন বরং জটিল এবং এটির ফলে ত্রুটি হতে পারে তা শনাক্ত করতে অ্যারনটি দ্রুত ছিল was Id
আপনার টেবিলের সমস্ত কলাম না থাকলে এবং কলামগুলিতে (যেগুলি যোগ হয়) প্রদর্শিত হবে এমন অনেকগুলি টেবিলের একই নাম থাকলে এটি সাধারণত ভাল (এবং আপনাকে বুদ্ধিমান করে তুলবে) । সুতরাং, এখানে একটি নামকরণ:
Parent
ParentID INT NOT NULL PRIMARY KEY
Child
ChildID INT NOT NULL PRIMARY KEY
ParentID INT NOT NULL FOREIGN KEY REFERENCES Parent (ParentID)
UNIQUE (ParentID, ChildID)
FavoriteChild
ParentID INT NOT NULL PRIMARY KEY
ChildID INT NOT NULL
FOREIGN KEY (ParentID, ChildID)
REFERENCES Child (ParentID, ChildID)
এসকিউএল-সার্ভারে (যে আপনি ব্যবহার করছেন), আপনি যে IsFavorite
বিট কলামটি উল্লেখ করেছেন তার বিকল্পও রয়েছে । পিতামাতার প্রতি অনন্য প্রিয় শিশু ফিল্টার করা অনন্য সূচকের মাধ্যমে সম্পন্ন করা যায়:
Parent
ParentID INT NOT NULL PRIMARY KEY
Child
ChildID INT NOT NULL PRIMARY KEY
ParentID INT NOT NULL FOREIGN KEY REFERENCES Parent (ParentID)
IsFavorite BIT NOT NULL
CREATE UNIQUE INDEX is_FavoriteChild
ON Child (ParentID)
WHERE IsFavorite = 1 ;
এবং অন্তত এসকিউএল-সার্ভারে নয়, আপনার বিকল্প 1 টি সুপারিশ করা হয়নি তার মূল কারণ হ'ল বিদেশী কী রেফারেন্সগুলিতে বৃত্তাকার পথগুলির প্যাটার্নটিতে কিছু সমস্যা রয়েছে।
একটি বেশ পুরানো নিবন্ধ পড়ুন: এসকিউএল ডিজাইন দ্বারা: বিজ্ঞপ্তি রেফারেন্স
দুটি টেবিল থেকে সারি সন্নিবেশ করা বা মুছার সময়, আপনি "মুরগী এবং ডিম" সমস্যার মধ্যে চলে যাবেন। কোন সীমাবদ্ধতা লঙ্ঘন না করে আমার প্রথমে কোন টেবিলটি sertোকানো উচিত?
এটি সমাধান করার জন্য, আপনাকে কমপক্ষে একটি কলাম কণ্ঠনীয় করতে হবে ine (ঠিক আছে, প্রযুক্তিগতভাবে আপনার দরকার নেই, NOT NULL
কেবল ডিগ্রিএমএসের মতো আপনার সমস্ত কলাম থাকতে পারে, যেমন পোস্টগ্র্রেস এবং ওরাকল, যেগুলি নিকৃষ্টতর সীমাবদ্ধতাগুলি বাস্তবায়িত করেছে @ @ অনুরিনের অনুরূপ প্রশ্নের উত্তর দেখুন: এসকিউএএলএলচেমিতে কীভাবে জটিল বিদেশী কী বাধা? এটি পোস্টগ্র্রেসে করা যেতে পারে)। তবুও, এই সেটআপটি পাতলা বরফে স্কেটিংয়ের মতো অনুভব করে।
এসওএ-তে একটি প্রায় অনুরূপ প্রশ্নও পরীক্ষা করুন (তবে মাইএসকিউএলের জন্য) এসকিউএলে, দুটি টেবিল একে অপরের সাথে উল্লেখ করা ঠিক হবে কি? যেখানে আমার উত্তরটি বেশ একই রকম। মাইএসকিউএলের যদিও কোনও আংশিক সূচী নেই, সুতরাং কেবলমাত্র কার্যকর বিকল্পগুলি হ'ল নমনীয় এফকে এবং অতিরিক্ত টেবিল সমাধান।