পুরানো কোডবেজে একটি নতুন প্রয়োজনীয়তা প্রকাশ পেয়েছে, যা মূলত দুটি পূর্ব-সরাসরি সম্পর্কিত নয় শ্রেণীর ব্যবহারকারীদের মধ্যে সরাসরি (অভ্যন্তরীণ) যোগাযোগ সক্ষম করে (সম্পূর্ণ আলাদা স্কিমার সাথে বিভিন্ন টেবিলগুলিতে সঞ্চিত থাকে এবং দুর্ভাগ্যক্রমে, কোডটি সবেমাত্র ওও-সচেতন, অনেক কম ডিজাইন করা, যাতে কোনও পিতাম শ্রেণি নেই)। যেহেতু আমরা এই কার্যকারিতাটি কখনও বিবেচনা করে নি এই পুরানো সেটআপে একটি ব্যাগ ঝুলিয়ে রাখছি, কোনও পিকে সংঘর্ষ নেই তার কোনও গ্যারান্টি নেই - ডেটাসেট ব্যবহারে দেওয়া হয়েছে, এটি কার্যত গ্যারান্টিযুক্ত যে সেখানে রয়েছে।
সুতরাং, সমাধানটি সুস্পষ্ট বলে মনে হচ্ছে: এটিকে আগুন দিয়ে হত্যা করুন এবং পুরো মেসটি এ ম্যাপিং টেবিলটি আবার লিখুন rite আমি মানচিত্রটি বাস্তবায়নের সম্ভাব্য উপায়গুলির জন্য দুটি দিক অর্জন করেছি, তবে আমি ডিবিএ নই, তাই আমি যদি কোনও অনুপযুক্ত এবং মতামত মিস করেছি তবে আমি অনিশ্চিত।
বিমূর্ততাটি পরিষ্কার করার জন্য, পৃথক ব্যবহারকারী ডেটার তিনটি গ্রুপ বিবেচনা করুন: অধ্যাপক, প্রশাসন, শিক্ষার্থীরা (না, এটি কোনও হোমওয়ার্কের কাজ নয় Prom প্রতিশ্রুতি!)
ম্যাপিং ঘ
(অধ্যাপক_আইডি, প্রশাসক_আইডি এবং ছাত্র_আইডি হ'ল তাদের নিজ নিজ সারণীর বিদেশী কী)
| mailing_id (KEY) | professor_id | admin_id | student_id |
-------------------------------------------------------
| 1001 | NULL | 87 | NULL |
| 1002 | 123 | NULL | NULL |
| 1003 | NULL | NULL | 123 |
এই পদ্ধতির পক্ষে +/- এই ধারণাটি খুব ভারী মনে হচ্ছে:
- প্রতি সারিতে দুটি "নষ্ট" ক্ষেত্র
- লঙ্ঘন 2NF
- অসঙ্গতিগুলি সন্নিবেশ করা / আপডেট করা ক্ষতিগ্রস্থ (কেবলমাত্র 0-1 ক্ষেত্র সেট ন্যূনাল, যেমন একটি সারি)
উপকারগুলি তাদের নিজস্ব যোগ্যতা ছাড়া নয়, যদিও:
- ম্যাপিংটি একক অনুসন্ধানের সাথে সম্পন্ন করা যায়
- মেলিং_আইড থেকে কোনও প্রদত্ত ব্যবহারকারীর জন্য সহজেই "উত্স" ডেটা নির্ধারণ করুন
সত্য বলা উচিত, আমার অন্ত্রে, আমি এই ধারণা মোটেও পছন্দ করি না।
ম্যাপিং 2
(ধরুন এমএসজি_ * সংজ্ঞায়িত ধ্রুবক, এনামের ধরণ বা অন্য কোনও উপযুক্ত শনাক্তকারী)
| mailing_id (KEY) | user_type (UNIQUE1) | internal_id (UNIQUE2)|
------------------------------------------------------------------
| 1001 | MSG_ADMIN | 87 |
| 1002 | MSG_PROF | 123 |
| 1003 | MSG_STUDENT | 123 |
এই সেটআপটি এবং {ব্যবহারকারীর_প্রকার, অভ্যন্তরীণ_আইডি} বিষয়গুলির একটি অনন্য সমন্বিত সূচক দিয়ে 3NF রক্ষণাবেক্ষণ করা হয়, এবং অ্যাপ্লিকেশন কোডটি I / U ব্যতিক্রমগুলি পরীক্ষা করতে হয় না।
ডাউনসাইডে, ব্যবহারকারীর উত্স সারণীগুলি নির্ধারণে স্বচ্ছতার কিছুটা ক্ষতি আছে যা ডিবি এর বাইরে পরিচালনা করতে হয়, মূলত ব্যবহারকারীর_তাই মানগুলির টেবিলে মান প্রয়োগের স্তরের ম্যাপিংয়ের পরিমাণ হিসাবে। এই মুহুর্তে, আমি (বরং দৃ rather়ভাবে) এই ২ য় ম্যাপিংয়ের দিকে ঝুঁকছি, যেহেতু ডাউনসাইডটি সামান্য।
তবে আমি আমার নিজের সীমাবদ্ধতাগুলি সম্পর্কে বেদনাদায়কভাবে অবহিত এবং আমি নিশ্চিত যে আমি সম্ভবত উভয় দিকের সুবিধাগুলি বা হোঁচট খাতে বাধা পেয়েছি, তাই আমি আমার চেয়ে বুদ্ধিমানের দিকে ফিরে যাই।