রিলেশনাল ডাটাবেসগুলিতে লুকানোর সারণী সম্পর্কিত সেরা অনুশীলনগুলি কী কী?


14

লুক টেবিলগুলি (বা কোড টেবিলগুলি যেমন কিছু লোক তাদের ডাকে) সাধারণত সম্ভাব্য মানগুলির একটি সংগ্রহ যা নির্দিষ্ট কলামের জন্য দেওয়া যেতে পারে।

উদাহরণস্বরূপ, ধরুন আমাদের কাছে একটি দেখার টেবিল রয়েছে party(রাজনৈতিক দলগুলি সম্পর্কিত তথ্য সংরক্ষণ করার উদ্দেশ্যে) যার দুটি কলাম রয়েছে:

  • party_code_idn, যা সিস্টেম-উত্পাদিত সংখ্যাসূচক মান রাখে এবং ( ব্যবসায়িক ডোমেনের অর্থ না থাকা) আসল কীটির জন্য একটি সারোগেট হিসাবে কাজ করে।
  • party_code, টেবিলের আসল বা "প্রাকৃতিক" কী কারণ এটি ব্যবসায়িক ডোমেন সংযোগ রয়েছে এমন মানগুলি বজায় রাখে ।

এবং আমাদের বলি যে এই জাতীয় সারণী নিম্নলিখিত ডেটা ধরে রাখে:

 +----------------+------------+
 | party_code_idn | party_code |
 +----------------+------------+
 |              1 | Republican |
 |              2 | Democratic |
 +----------------+------------+

party_codeকলাম, যা মান 'রিপাবলিকান' এবং 'গণতান্ত্রিক', টেবিলের বাস্তব কী হচ্ছে, একটি অনন্য বাধ্যতা সঙ্গে সেট আপ করা হয়েছে, কিন্তু আমি ঐচ্ছিকভাবে যোগ রাখে party_code_idn, এবং যদিও টেবিল (এর পি কে যেমন সংজ্ঞায়িত কথাটি বলতে , party_codeপ্রাথমিক কী [পিকে] হিসাবে কাজ করতে পারে।

প্রশ্ন

লেনদেনের টেবিলগুলি থেকে অনুসন্ধানের মানগুলিকে নির্দেশ করার জন্য সর্বোত্তম অনুশীলনগুলি কী কী ? আমি কি বিদেশী কী (এফকে) রেফারেন্সগুলি (ক) সরাসরি প্রাকৃতিক এবং অর্থবহ মূল্যের সাথে বা (খ) মূল্যবোধের জন্য স্থাপন করতে পারি?

বিকল্প (ক) , উদাহরণস্বরূপ,

 +---------------+------------+---------+
 | candidate_idn | party_code |  city   |
 +---------------+------------+---------+
 |             1 | Democratic | Alaska  |
 |             2 | Republican | Memphis |
 +---------------+------------+---------+

নিম্নলিখিত বৈশিষ্ট্য 1 রয়েছে :

  1. শেষ ব্যবহারকারীর জন্য পঠনযোগ্য (+)
  2. সিস্টেমগুলি জুড়ে আমদানি-রফতানি করা সহজ (+)
  3. সমস্ত রেফারিং টেবিলগুলিতে পরিবর্তনের প্রয়োজন হওয়ায় মান পরিবর্তন করা কঠিন (-)
  4. নতুন মান যুক্ত করা ব্যয়বহুল নয় (=)

আমি মনে করি অ্যাপ্লিকেশন প্রোগ্রামিংয়ের জার্গনে ফাংশন কল থেকে একটি উপমা আঁকতে এটি প্রায় " মান দ্বারা পাস " এর মতো ।

বিকল্প (খ) , উদাহরণস্বরূপ,

 +---------------+----------------+---------+
 | candidate_idn | party_code_idn |  city   |
 +---------------+----------------+---------+
 |             1 |              1 | Alaska  |
 |             2 |              2 | Memphis |
 +---------------+----------------+---------+

নীচে বৈশিষ্ট্য আছে:

  1. শেষ ব্যবহারকারীর জন্য পঠনযোগ্য নয় (-)
  2. কঠিন ইম্পোর্ট-এক্সপোর্ট আমরা ডি রেফারেন্স এটি প্রয়োজন হিসাবে (-)
  3. মানগুলি পরিবর্তন করা সহজ, কারণ আমরা কেবলমাত্র লেনদেন সারণিতে (+) রেফারেন্সগুলি সঞ্চয় করছি
  4. নতুন মান যুক্ত করা ব্যয়বহুল নয় (=)

এটি অ্যাপ্লিকেশন প্রোগ্রামিং পার্লেন্সে কল ফাংশনের সাথে তুলনা করলে এটি " রেফারেন্স দ্বারা পাস " এর সাথে খুব মিল ।

আমদানি-রফতানিও অন্যভাবে করা যায়, অর্থাত্, কেবল চেহারা-সারণীটি আবার জনবসতি করে এবং তারপরে সার্গেট কলামটি পুনরায় বীজ করে। আমি আশা করি আমি এই অধিকারটি পাচ্ছি, এটি আমি সম্ভবত একটি সম্ভাবনা হিসাবে শুনেছি।

1. এটি দ্রষ্টব্য +, -এবং =এই বৈশিষ্ট্যগুলির সুবিধাটি নির্দেশ করে।

প্রশ্ন

বেশ গুরুত্বপূর্ণভাবে: একটি মধ্যে একটি পার্থক্য লুকআপ (অথবা কোড ) টেবিল এবং এফ কে রেফারেন্স যদি আমরা শুধু আধুনিক পদ্ধতির ব্যবহার করতে যাচ্ছেন? আমি মনে করি তারা ঠিক একইভাবে কাজ করে।

সম্পর্কিত সংস্থানসমূহ

উত্তর:


10

দ্বারা IDN, আমি এটি আপনি একটি মানে IDENTITY, SEQUENCEবা AUTO_INCREMENTক্ষেত্র গ্রহণ? আপনার এখানে এবং এখানে একবার দেখা উচিত

দ্রষ্টব্য, চিত্র 10 এর নীচে, প্রথম রেফারেন্সের বিভাগ 5 (ডেটা উপাদান হিসাবে ডেটা মানগুলির অপব্যবহার)

অবশ্যই বিক্রয় ব্যক্তিদের জন্য আপনার একটি পৃথক টেবিল থাকতে পারে এবং তারপরে এটি বিদেশী কী ব্যবহার করে রেফারেন্স করতে পারেন, বিশেষত সরল সার্গেট কী যেমন বিক্রয়_পরিষ্কার_আইডি, উপরে দেখানো হয়েছে।

সুতরাং, এই বিশেষজ্ঞ মনে করেন যে আপনার সরোগেট কীগুলি "ডিফারেন্স" করা উচিত। এটি সত্যই বেশ বেসিক এসকিউএল কৌশল এবং আপনার প্রতিদিনের এসকিউএলে সমস্যা সৃষ্টি করা উচিত নয়। এটি প্রদর্শিত হবে যে চিত্র 10-এ একটি ত্রুটি রয়েছে - বিক্রয়ডাটাতে বিক্রয়_পর্দায় একটি সারোগেট কী (অর্থাত্ একটি সংখ্যা) হওয়া উচিত, পাঠ্য নয়। আমি উপরের উদ্ধৃতি থেকে এটি অনুমান করছি।

আপনাকে যে কোনও মূল্যে এড়ানো উচিত তা হ'ল প্রবর্তন (নবজাতক ডাটাবেস প্রোগ্রামারদের পক্ষে খুব সাধারণ) বিভাগে (1) সাধারণ লুকআপ টেবিলগুলিতে বর্ণিত ত্রুটিটি সম্পাদন করা। এটিকে সাধারণত এমইউসিকে (ম্যাসিভলি ইউনিফাইড কোড কী ) পদ্ধতির (দুর্ঘটনার দ্বারা নয় :-) উল্লেখযোগ্যভাবে জো সেল্কো দ্বারা ব্যঙ্গ করা হয়েছে, এটি ওটিএলটি - ওয়ান ট্রু লুকআপ টেবিল নামে পরিচিত ) এবং সকল ধরণের অসুবিধার দিকে নিয়ে যায়। নবীন প্রোগ্রামাররা মনে হয় যে একটি একক কোড / অনুসন্ধান / যা কিছু টেবিল "ক্লিনার" এবং এটি আরও কার্যকর হবে যখন কিছুই সত্য থেকে আর হতে পারে না।

উপরের দ্বিতীয় রেফারেন্স থেকে:

সাধারণীকরণ অপ্রয়োজনীয় ডেটাগুলি অপসারণ করে, এভাবে ডেটা অখণ্ডতা প্রয়োগের কাজটিকে আরও সহজ করে তোলে, তবে একটি MUCK তৈরির প্রক্রিয়া পুরোপুরি অন্য কিছু। MUCK এর অপ্রয়োজনীয় ডেটা অপসারণ করে না, বরং এগুলি অপ্রয়োজনীয় টেবিল হতে স্থায়ী কী তা অপসারণ, তবে আমি যেমন প্রদর্শন করব, কম টেবিল সরলতার সমান হয় না।

আমি এখানে সম্পর্কিত যে সম্পর্কিত ইএভি ( সত্তা বৈশিষ্ট্য মূল্য ) দৃষ্টান্তটিও দেখতে চাইব ।


আইডিএন দ্বারা, আমি স্বয়ংক্রিয়রূপে বিদেশী কী তৈরির অর্থ বুঝিয়েছি। আমি কমন লুকআপ টেবিলগুলি ব্যবহার করি না, আপনি কীভাবে ভেবেছিলেন যে আমি এটি ব্যবহার করেছি? আমরা আসলে শত শত কোড টেবিলের মতো ব্যবহার করি। এটি সত্যিই অদ্ভুত বলে মনে হচ্ছে কেউ একীভূত টেবিলে এটি করবে। তবে এ জাতীয় প্যাটার্নটি জানা ভাল এবং এড়ানো উচিত। EAV আকর্ষণীয় বলে মনে হচ্ছে। সুতরাং sensকমত্যটি হল যে আইডিএন অর্থাৎ সারোগেট কী ব্যবহার করে আমার অবনতি হওয়া উচিত?
নিশান্ত

1
"ডিফেরেন্সিং" স্ট্র্যাটেজেম অবশ্যই সংখ্যাগরিষ্ঠ পদ্ধতির বলে মনে হচ্ছে। আপনি কেন সামান্য পরীক্ষা নিরীক্ষা করবেন না? কিছু প্রাকৃতিক কী বাছুন এবং আপনার এসকিউএল কীভাবে কাজ করে তা দেখুন - তারপরে একটি সারোগেট এবং গণ্ডগোলটি নির্দিষ্ট সময়ের জন্য নির্দিষ্ট করুন। সেলকো এবং পাস্কেল এসকিউএল / রিলেশনাল ওয়ার্ল্ডে সম্মানিত হবে, তবে আমি তাদের সাথে যুক্তি দেখিয়ে লোকদের বলতে দেখেছি যে তাদের পদ্ধতির খুব মতবাদ এবং খাঁটিবাদী - এবং "রিয়েল-ওয়ার্ল্ড" সিস্টেমগুলিকে সরোগেট কীগুলি ব্যবহার করতে হবে। যদি আপনার প্রাকৃতিক কীটি তিনটি ক্ষেত্র হয় এবং এটি FOREIGN KEYঅন্য টেবিলে আরও একটি হয় তবে এটি দুর্দান্ত অগোছালো তবে ওয়াইএমএমভি পেতে পারে।
ভেরেস

হ্যাঁ tbh আমি এই বিশুদ্ধবাদী চিন্তাভাবনা পেয়েছিলাম এবং আমি পিপিএল সরোগেট কীগুলি ব্যবহার করি না কেন! এবং তখন কিছু ব্যবহারের ক্ষেত্রে পিউরিস্ট বিশ্বে পরিচালনা করা সত্যিই কঠিন বলে মনে হয়েছিল। আমি অনুভব করেছি যে আপনার আমদানি ও রফতানির কিছু অসুবিধা থাকলেও সারোগেট পদ্ধতিটি আরও সহজ। প্রকৃতপক্ষে সংমিশ্রণের দৃশ্যটি জটিল হতে পারে। বিটিডাব্লু কোড টেবিলগুলি সারোগেট দৃশ্যে বিদেশী কী থেকে খুব বেশি আলাদা নয়? আমি বলতে চাইছি লজিক্যাল পার্থক্যটি বিদ্যমান এটি একটি বিদেশী কী ব্যতীত কিছুই নয়।
নিশান্ত

1
আপনি নিজের প্রাকৃতিক কীগুলি UNIQUE CONSTRAINTগুলি এবং NOT NULLগুলি এর মাধ্যমে প্রয়োগ করতে পারেন - ভাল, আপনার কোড সারণী এন্ট্রিগুলি FOREIGN KEYসারণিতে থাকে যা সেগুলি ব্যবহার করে / উল্লেখ করে - তাই ধারণাগুলি সম্পর্কিত, তবে একই নয়। কোড টেবিলের সারোগেট কীটি সেই ক্ষেত্র যা "শিশু" টেবিলটিতে প্রদর্শিত হবে - অবশ্যই কম সুস্পষ্ট, তবে INTএটি খুব বড় নয় - সারোগেট কীগুলির সুবিধা হিসাবে খুব বেশি জায়গার প্রয়োজন হয় না।
ভেরেস

10

একটি তৃতীয় পদ্ধতি রয়েছে যা আপনার দুটি বিকল্পের কিছু সুবিধা রয়েছে - কোড টেবিলে একটি আসল কোড রাখুন। এর অর্থ আমি একটি সংক্ষিপ্ত চরিত্রের ক্রম যা সম্পূর্ণ মানটির সারাংশকে আকর্ষণ করে এবং অনন্য। আপনার প্রদত্ত উদাহরণের জন্য এটি হতে পারে

Idn: 1
Name: Democrats
Code: D      (or DEM)

কোডটি বিদেশী কী হিসাবে লেনদেনের সারণিতে বহন করা হয়। এটি সংক্ষিপ্ত, বোধগম্য এবং "বাস্তব" ডেটা থেকে কিছুটা স্বতন্ত্র। একটি নামের ক্রমবর্ধমান পরিবর্তনগুলি কোড পরিবর্তনের পরামর্শ দেয় না। উচিত রিপাবলিকান সটকে পড়া গণহারে অবশ্য কোডের একটি পরিবর্তন তার চেড় সমস্যার সঙ্গে প্রয়োজন হয় তাহলে, হতে পারে যে একটি ভাড়াটে আইডি বহন করতে হবে না।

এই শৈলীর একটি সংক্ষেপণ এনকোডিং বলা হয়েছে। আমি এটির উপর সেলকো লেখার সুপারিশ করতে পারি। গুগল বইয়ের বেশ কয়েকটি উদাহরণ রয়েছে। "সেলকো এনকোডিং" অনুসন্ধান করুন।

অন্যান্য উদাহরণ: দেশগুলির জন্য 2 বা 3 বর্ণের এনকোডিংগুলি, মুদ্রার কোডের জন্য 3-বর্ণের এনকোডিং (জিবিপি, মার্কিন ডলার, EUR)। সংক্ষিপ্ত, স্ব-ব্যাখ্যা এবং পরিবর্তিত হচ্ছে না (এবং তাদের জন্য একটি আইএসও আছে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.