কোনও সারোগেট কী কী কোনও ব্যবহারকারীর সামনে প্রকাশ করা উচিত?


14

প্রায়শই কোনও টেবিলে কোনও প্রাকৃতিক কী থাকে না, এটি এখনও ব্যবহারকারীদের জন্য একটি অনন্যভাবে উত্পন্ন সনাক্তকারী সনাক্ত করতে সক্ষম। যদি টেবিলটিতে একটি সরোগেট প্রাথমিক কী থাকে (এবং এমন ক্ষেত্রে আপনি অবশ্যই এটি আশা করতে পারেন) সেই কীটি ব্যবহারকারীর সামনে প্রকাশ করা উচিত বা অন্য উদ্দেশ্যে সেই উদ্দেশ্যে ব্যবহার করা উচিত?

সরোগেট কীটি প্রকাশ না করার একটি কারণ হ'ল এখন আপনি রেকর্ডগুলির মধ্যে সম্পর্ক সংরক্ষণ করে এমন অপারেশন করতে পারবেন না, তবে মূল মানগুলি পরিবর্তন করুন, যেমন নির্দিষ্ট ধরণের মোছা / পুনরায় সন্নিবেশ, এক ডাটাবেস থেকে ডেটা অনুলিপি করার অনেকগুলি পদ্ধতি অন্য, ইত্যাদি

সারোগেট কীটি উন্মোচনের মূল সুবিধা হ'ল আপনার যে কোনও ক্ষেত্র ব্যবহারের সরলতা।

কোন পরিস্থিতিতে ব্যবহারকারীদের জন্য সরাসরি সরোগেট কীটি প্রকাশ করা ভাল?


এই প্রশ্নের অংশটি হ'ল আপনাকে 'ব্যবহারকারীদের' সংজ্ঞা দেওয়া দরকার। ব্যবহারকারীরা এমন কোনও এপিআইর ভোক্তা হতে পারে যা আপনি মানুষের কাছে প্রকাশ করেন বা মাংসল হন। উত্তর উভয় জন্য এক হতে যাচ্ছে না।
জেমস স্নেল

1
মাংসল মানুষ।
PSr

প্রতিটি পরিস্থিতিতে যেখানে ডেটা আলাদাভাবে চিহ্নিত করা যেতে পারে তার পৃথক শনাক্তকারী থাকতে হবে। সুতরাং, যদি কোনও নতুন সিস্টেম আপনার ডেটার সাথে সংযোগ করে, এটির নিজস্ব পিকে রয়েছে এবং এটি আপনার ডেটাতে যুক্ত করার আশা করুন। "বেশিরভাগ জলের কুশল ব্যাগ" এর দৃশ্যমানতা এই দৃশ্যের জন্য 'সিস্টেম' হিসাবে গণ্য। আমার পছন্দসই সমাধানটি হ'ল বিশেষ টেবিলে সত্তাগুলির জন্য কীগুলি এবং টাইমস্ট্যাম্পগুলি (যুক্ত এবং পরিবর্তন এবং মুছুন) সঞ্চয় করা। এইভাবে, ডেটা সহজেই বিতরণ করা যেতে পারে।

উত্তর:


10

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

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

এর প্রভাব হ'ল ব্যবসায়টি পরে কীভাবে তারা রেকর্ডগুলি উল্লেখ করতে চায় তা পরিবর্তন করতে পারে এবং কেবলমাত্র ডেটা স্কিমা পরিবর্তনটি হয় সেই আইডির স্টাইলের জন্য একটি নতুন কলাম যুক্ত করছে বা ইতিমধ্যে সেখানে আইডিকে রূপান্তর করবে। পরিবর্তনটি পুরো ডাটাবেসের মাধ্যমে প্রচার করে না এবং আপনার কাছে এখনও একটি আইডি (সারোগেট) রয়েছে যা সময়ের সাথে সাথে বৈধ।

সংক্ষেপে, আমি ব্যবহারকারীদের কাছে সারোগেট কীগুলি প্রকাশ করা এড়াতে চাই। মতামত হিসাবে ইঙ্গিত হিসাবে, surrogate কী প্রায় কখনও পরিবর্তন করা উচিত নয়। বিপরীতে, ব্যবসায়ীরা সবকিছু পরিবর্তন করতে চায়। যদি সার্গেট কীটি উন্মুক্ত করা হয়, তবে ব্যবসায় এটি পরিবর্তন করতে চায় তার আগে সময়ের বিষয় মাত্র।

পার্শ্ব নোট হিসাবে, যখন আমি এখানে "এক্সপোজারিং" বলছি তখন আমি তাদের চাবিটি তারা সরাসরি ব্যবহার করে এমন প্রত্যাশা দিয়ে বোঝাতে চাইছি (যেমন তাদের অর্ডার নম্বরটি সমর্থন করার জন্য কল করা)।


5
এই উত্তরটি কোনও মানে করে না। সারোগেট কীগুলি কখনই পরিবর্তন হয় না এবং আপনি তাদের কাছে ব্যবহারকারীদের কাছে প্রকাশ না করার জন্য কোনও মামলা করেননি।
রবার্ট হার্ভে

1
কখনও না বল না. যদি উত্তরোত্তর নকশা রেকর্ড একীকরণের দিকে নিয়ে যায়? আপনি যদি আপসাইজ এবং পরিচয় থেকে দূরে রূপান্তর করা প্রয়োজন?
ডগএম

3
@ ডগএম: তারপরে একটি নতুন একত্রীকৃত টেবিলটিতে রেকর্ডগুলি তার নিজস্ব সরোগেট কী দিয়ে লিখুন এবং নতুন টেবিলের পৃথক ক্ষেত্রে মূল কীগুলি (এবং একটি ক্ষেত্র যা মূল উত্স সারণী চিহ্নিত করে) প্রয়োজন হিসাবে বজায় রাখুন needed এই জাতীয় একীকরণ অসাধারণভাবে বিরল হওয়া উচিত, এবং কেবল বোটড ডিজাইনের ফলস্বরূপ। আমার পরে পুনরাবৃত্তি: সারোগেট। কি। কখনও। পরিবর্তন. এ কারণেই তারা সারোগেট।
রবার্ট হার্ভে

2
@ রবার্টহারভে আমি সম্মত হই যে সরোগেট কীগুলি কখনই পরিবর্তন করা উচিত নয়, এ কারণেই আমি মনে করি তারা খারাপ বাহ্যিক শনাক্তকারী করে। শেষ পর্যন্ত কোনও গ্রাহক কীভাবে তারা কোনও রেকর্ড উল্লেখ করে তা পরিবর্তন করতে চান । সেই মুহুর্তে আপনি হয় আপনার পুরো সিস্টেমটি অপরিবর্তনীয় সার্োগেট কীগুলির আশেপাশে তৈরি করেছেন বা আপনি সামনে চিন্তা করেছেন এবং ব্যবসায় শনাক্তকারী এবং সরোগেট কীগুলির মধ্যে ইন্ডিয়ারেশনের একটি স্তর রেখেছেন।
ক্রিস পিটম্যান 11'13

2
@ এসকিএলভেল: আমি যদি "সারোগেট" এর পরিবর্তে "সিস্টেম-উত্পাদিত প্রাথমিক কী" শব্দটি ব্যবহার করি তবে কি বিষয়টি পরিষ্কার হয়ে যাবে? আমি সম্মত হই যে আপনি হয়ত অ্যালগোরিদম পরিবর্তন করতে চান যা সরোগেট কী উত্পন্ন করে তবে এটি তাদের মৌলিকভাবে অপরিবর্তনীয় গুণকে পরিবর্তন করে না।
রবার্ট হার্ভে

4

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

তবুও, ব্যবহারকারীরা একটি অর্ডার নম্বর সুবিধার্থে বুঝতে এবং আশা করে। কোনও ক্ষতি এবং প্রচুর মূল্য নেই, যদি আপনি তাদের সম্পর্কে ব্যবহারকারীদের জানান।

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


যদি কোনও ব্যবহারকারী এটি বুঝতে পারে এবং এটির সাথে ইন্টারঅ্যাক্ট করার প্রত্যাশা করে, তবে এটি আর কোনও সারোগেট কী নয়। সারোগেট কীগুলি কোনও ব্যবসায়িক অর্থ না বলে সংজ্ঞায়িত করা হয়। এটি কেবলমাত্র একটি আইডি নম্বর এর অর্থ এটি একটি সারোগেট নয়। এছাড়াও, "কিছু সারোগেট কী যা আমাকে আমার সদস্য আইডি, জন্ম তারিখের ভিত্তিতে সনাক্ত করে [...]" অর্থবোধ করে না। আপনি বলছেন যে তাদের সরোগেট কী (যার কোনও ব্যবসায়িক অর্থ নেই) এমন কোনও প্রাকৃতিক কী রচনা করতে পারে এমনগুলির ভিত্তিতে আপনাকে সনাক্ত করে?
কাইল ম্যাকভে

প্রায়শই যা ঘটে তা হ'ল আপনাকে একটি কর্মচারী আইডি নম্বর দেওয়া হয় যাতে কর্মচারী সিস্টেমে আপনাকে একই নামের সাথে অন্য ব্যক্তিদের থেকে আলাদা করা হয়। আপনার বীমা কার্ডে এটি আপনার সংস্থা এবং কর্মচারীর আইডি তালিকাভুক্ত করতে পারে। তবে স্বাস্থ্য বীমা সংস্থা প্রায়শই নিজস্ব অভ্যন্তরীণ আইডি তৈরি করে যা এটি আপনার নিয়োগকর্তার কাছ থেকে প্রাপ্ত নাম, জন্ম তারিখ এবং কর্মচারী আইডির পরিবর্তে তার সমস্ত সিস্টেমে ব্যবহার করতে পারে। এই উত্পন্ন কীগুলি সারোগেট বা প্রাকৃতিক কীগুলি? নির্ভর করে আপনি যারা জিজ্ঞাসা উপর (2 বিকল্প সংজ্ঞা পরীক্ষা en.wikipedia.org/wiki/Surrogate_key )
অ্যালান Shutko

1

আপনার যদি কেবল একটি সরোগেট কীটি প্রকাশিত করা উচিত তবে তা যদি সঠিকভাবে উত্পন্ন GID / UID * হয়। ওডব্লিউএসপি শীর্ষ 10 সুরক্ষা ইস্যুতে সিক্যুয়াল সারোগেট কীগুলি প্রকাশ করা 4 নম্বর

* বাস্তবে, ধরে নেওয়া ভাল যে আপনি যদি না জানেন যে এটি কোনও ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত র্যান্ডম বা সিউডো-এলোমেলো নম্বর জেনারেটর দ্বারা তৈরি করা হয়েছিল তবে অবধি এই উদ্দেশ্যগুলির জন্য এটি সঠিকভাবে উত্পন্ন হয়নি।


2
আপনার জবাবটি অস্পষ্ট যে কীভাবে কোনও জিইউডি সুরক্ষা উন্নত করে।
রবার্ট হার্ভে

1
@ রবার্টহারভে - আমি ধরে নিই কারণ এগুলি অনুক্রমিক নয় এবং তাই অনুমান করা যায় না।
ববসন


@ রবার্ট হার্ভে, স্পষ্ট করে জানিয়েছে।
পিটার টেলর

1

যদি কোনও টেবিলের কোনও প্রাকৃতিক কী না থাকে, সরোগেট কীগুলি সারিগুলিকে সারিগুলিতে মঞ্জুরি দেয়।

surrogate_key  some_name
--
1              Wibble
2              Wibble
...
17             Wibble
...
235            Wibble

আমি সার্গেট কীগুলির পরিবর্তে এই কৃত্রিম কীগুলি কল করব, তবে এই প্রশ্নের জন্য এই পার্থক্যটি গুরুত্বপূর্ণ নয়।

এখন, ধরে নিই যে বিদেশী কীগুলির মাধ্যমে এই সারোগেট কীগুলি উল্লেখ করার জন্য গুরুত্বপূর্ণ ডেটা রয়েছে, শেষ ব্যবহারকারীরা যদি সার্গেট কী মানগুলি না জানেন তবে কী সারিটি আপডেট করবেন তা কীভাবে জানবে?


"Surrogate_key" কলামটি লেবেল করা কিছুটা পরস্পরবিরোধী তবে তারপরে বলবেন যে তারা "সারোগেট কীগুলির পরিবর্তে কৃত্রিম কী"। যদি আপনি এই কৃত্রিম কীগুলি কল করছেন কারণ এগুলির কোনও ব্যবসায়ের অর্থ নেই এবং কেবলমাত্র অনন্য শনাক্তকারী হিসাবে পরিবেশন করা হয়, তবে এই কীটি প্রাকৃতিককরণ করা উচিত (উন্মুক্ত) করা উচিত এবং একটি নতুন সরোগেট কী তৈরি করা উচিত। অর্থাত্ ব্যবসায়িক অর্থ সহ প্রাকৃতিকায়িত সার্গেট_কিকে নতুন নামকরণ করুন, এটি ক্লায়েন্টদের কাছে প্রকাশ করুন এবং অভ্যন্তরীণ ক্রিয়াকলাপের জন্য সত্যিকারের সার্গেট হতে একটি নতুন অনুরূপ কলাম তৈরি করুন। আদর্শের চেয়ে কম তবে সত্যিকারের সার্গেট প্রকাশের চেয়ে আরও ভাল।
কাইল ম্যাকভে

@ কাইলম্যাকভে: এটি পরস্পরবিরোধী নয়। এটা তোলে অর্থ সম্মান ভাড়াটে , অপরিহার্য ধারণা যা এর "খেলোয়াড়রা" হয়। একজন ভাড়াটে কী একটি প্রাকৃতিক কীয়ের জন্য পরিপূরক। (Codd ও সাধারণ ব্যবহারের মধ্যে রিলেশনাল তত্ত্ব ভাড়াটে কী এই অর্থে।) একটি সারণি হয়েছে কোন প্রাকৃতিক চাবি না পারেন, আছে যে অর্থে একটি ভাড়াটে কী। তবে এটিতে একটি নির্বিচার মান থাকতে পারে যা অন্য কোনও কিছুর পরিবর্তে ব্যবহৃত হয় । এটাই আমি একটি কৃত্রিম চাবি কল করব।
মাইক শেরিল 'ক্যাট রিকল'

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

0

সাধারণ মানুষের কথায়:

  • সার্গেটগুলি ব্যবহারকারীর কাছ থেকে লুকানো উচিত।
  • আপনার ব্যবহারকারীর কাছে আরও কিছু ব্যবসায়িক প্রার্থী কী প্রকাশ করা উচিত।
  • অন্য কোনও প্রার্থী কী না থাকলে আপনার পিকে দেখা উচিত। তবে এই ক্ষেত্রে পিকে কোনও সারোগেট হিসাবে বিবেচনা করা হয় না কারণ এটি অন্য কলামের বিকল্প নয়।

কেন অবশ্যই পিকে দেখাতে হবে? আমি মনে করি এটি আমার প্রশ্ন - কোনও স্বয়ংক্রিয় উত্পন্ন পিকে সঠিকভাবে সার্গেট কী বলা হয় কিনা তা স্পর্শকাতর।
PSr

1
@psr আপনার প্রশ্নের শিরোনাম বলছে " সারোগেট কীগুলি কখনই উন্মোচিত হবে"। আমি বলেছি না. তবে আপনাকে অন্য কিছু কী দেখাতে হবে। যদি অন্য কোনও কী উপস্থিত না থাকে তবে আপনাকে অবশ্যই আপনার কাছে থাকা চাবিটি প্রদর্শন করতে হবে। স্পর্শকাতরভাবে আমি স্পষ্ট করে বলছি যে এই পরিস্থিতিতে কীগুলি সত্যিকার অর্থে সার্গেট নয় কারণ এটি অন্য কোনও কলামের বিকল্প নয়।
তুলিনস কর্ডোভা

আপনার কলামটি যুক্ত করা উচিত, বা আপনার কাছে থাকা কীটি দেখানো উচিত কিনা তা প্রশ্ন।
PSr

@psr আমি আরও উত্তর পরিষ্কার করার জন্য আমার উত্তরটি আবার স্পষ্ট করেছিলাম।
তুলাইনস কর্ডোভা

1
আমি এটি একটি বস্তুগতভাবে নগণ্য পার্থক্য বলে মনে করি। যদি আপনার নিয়মটি হ'ল যে প্রতিটি টেবিলে একটি কৃত্রিম কী রয়েছে (যা খনিটি আমার) এবং কেবলমাত্র কৃত্রিম চাবিগুলি অংশ নেয় (যা আমার নীতিটিও হয়) তবে একটি ধারণাটি একটি চাবি একটি সারোগেট কারণ অন্য কীগুলি সম্ভবত সম্ভবত উপলব্ধ অপ্রয়োজনীয়।
রবার্ট হার্ভে

0

আপনার কেবলমাত্র কোনও ক্ষেত্রকে কোনও ব্যবহারকারীর কাছে প্রকাশ করা উচিত যা ব্যবহারকারীকে সরাসরি বা আপনার ত্রুটিগুলি জানানোর জন্য দরকারী তথ্য সরবরাহ করে।

বিপরীতভাবে, আপনার সর্বদা "সরোগেট প্রাথমিক কীগুলি" প্রকাশ করা উচিত যখন তারা ব্যবহারকারীর সঞ্চালনের একটি মিথস্ক্রিয়াটির জন্য কোনও রেকর্ড (সাধারণ বা জটিল) সনাক্ত করার প্রধান মাধ্যম হয়।


0

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

সতর্কতা: এটি একটি ওয়েব ভিত্তিক বা এন-স্তর অ্যাপ্লিকেশন ধরে নিয়েছে যেখানে সার্ভার সাইড অনুমোদন সম্ভব / সম্ভাব্য। আপনার কাছে যদি কোনও ভিবি অ্যাপ্লিকেশন সরাসরি স্কেল চালায় তবে পুরো 'নোটার ইস্যুটি চালিয়ে যাবে।


প্রশ্নে উল্লিখিত হিসাবে বিদেশী কী সম্পর্ক সংরক্ষণ করার সময় রেকর্ডস মুছে ফেলতে না পারলে কী হবে?
PSr

এটির ব্যবহারকারীর কাছে কীটি উন্মোচনের সাথে কী করার আছে? আপনার 'এক্সপোজারিং' শব্দটির ব্যবহার আমি বুঝতে পারি না। আপনার ধারণা 'ব্যবহারকারীর দ্বারা দেখাতে সক্ষম' এই ধারণা থেকে আমি কাজ করছি।
গ্র্যান্ডমাস্টারবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.