দুটি টেবিল রয়েছে:
- ব্যবহারকারী
- ঠিকানা
ব্যবহারকারীর ঠিকানা সম্পর্কিত একটি উল্লেখ রয়েছে।
ঠিকানার মধ্যে ক্রিয়েটেড বাই এবং মডিফাইডবাই কলাম রয়েছে যা ব্যবহারকারীর রেফারেন্স।
চক্রীয় নির্ভরতা এড়াতে আমি কীভাবে এই ডাটাবেসটি ডিজাইন করব?
দুটি টেবিল রয়েছে:
ব্যবহারকারীর ঠিকানা সম্পর্কিত একটি উল্লেখ রয়েছে।
ঠিকানার মধ্যে ক্রিয়েটেড বাই এবং মডিফাইডবাই কলাম রয়েছে যা ব্যবহারকারীর রেফারেন্স।
চক্রীয় নির্ভরতা এড়াতে আমি কীভাবে এই ডাটাবেসটি ডিজাইন করব?
উত্তর:
টিপস এবং কৌশলগুলি অনুসন্ধানের পরিবর্তে (পিছিয়ে দেওয়া সীমাবদ্ধতাগুলি অন্তর্ভুক্ত) আমি আপনাকে পরামর্শ দেব যে আপনি এই "রেফারেন্স লক" থেকে আপনার উপায়টি কেবল ডিজাইন করুন - সুতরাং এর মতো কিছু চেষ্টা করুন:
তথ্য
(UserID)
বিদ্যমান।(AddressID)
দ্বারা তৈরি করা হয়েছিল ।(UserID)
(AddressID)
তে তৈরি করা হয়েছে তারিখ(DateCreated)
।(AddressID)
সর্বশেষ রুপান্তরিত হয়েছিল ব্যবহারকারী(UserID)
উপর তারিখ(ModifiedOn)
।(UserID)
থাকে ।(AddressID)
(ValidFrom)
সীমাবদ্ধতাসমূহ
Each
ঠিকানা exactly one
ব্যবহারকারী দ্বারা তৈরি করা হয়েছিল । It is possible that more than one
ঠিকানা the same
ব্যবহারকারী দ্বারা তৈরি করা হয়েছিল ।
Each
ঠিকানা তে তৈরি করা হয়েছে exactly one
তারিখ । It is possible that more than one
ঠিকানা তে তৈরি করা হয়েছে the same
তারিখ ।
For each
ঠিকানা and
তারিখ , that
ঠিকানা দ্বারা পরিবর্তন হয়েছিল at most one
ব্যবহারকারী উপর that
তারিখ ।
For each
ব্যবহারকারী and
তারিখ , that
ব্যবহারকারী বসবাস at most one
ঠিকানা যেহেতু that
তারিখ ।
যৌক্তিক
যতটা বাধ্যতামূলক ঠিকানা সম্পর্কিত, অ্যাপ্লিকেশন স্তরে যাচাই করুন এবং লেনদেনের মধ্যে লোডিং স্টেটমেন্টগুলি মুড়ে দিন - এইভাবে আপনি সমস্ত কিছু বা কিছুই পাবেন না।
নীচে হিসাবে 2 টি ক্রিয়াকলাপে চক্রীয় নির্ভরতা তৈরি করা ছাড়া আপনার বিকল্প নেই কারণ আপনি প্রথমটি তৈরি করার সময় একটি টেবিলের অস্তিত্ব নেই।
CREATE TABLE A (A_ID INT PRIMARY KEY, B_FK INT);
CREATE TABLE B (B_ID INT PRIMARY KEY, A_FK INT REFERENCES A(A_ID));
ALTER TABLE A ADD B_FK INT;
আপনি যদি চক্র নির্ভরতা এড়াতে চান। তারপরে আপনাকে একটি রেফারেন্সের সীমাবদ্ধতা অপসারণ করতে হবে বা আপনি একটি উপায়ে একটি মোছা এবং আপডেট ক্যাসকেড রেফারেন্স যুক্ত করতে পারেন। যদি আপনার যুক্তি কিছুটা জটিল হয় তবে আপনি একটি ট্রিগারও প্রয়োগ করতে পারেন।