সারোগেট বনাম প্রাকৃতিক / ব্যবসায়িক কীগুলি [বন্ধ]


174

এখানে আমরা আবার যাই, পুরানো তর্ক এখনও উত্থাপিত হয় ...

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

দয়া করে আপনার তত্ত্বটি সমর্থন করার জন্য উদাহরণ বা প্রমাণ সরবরাহ করুন।


24
@ জোয়াচিম সাউর: কোনও বিষয়কে বিষয়ভিত্তিক করা হয়েছে কিনা সে সম্পর্কে একটি তর্ক নিজেরাই বিষয়ভিত্তিক হতে পারে, এটি কোনওভাবেই প্রশ্নযুক্ত বিষয়টির উদ্দেশ্য বা উদ্দেশ্যহীনতার সাথে সম্পর্কিত নয়। আপনি অবজেক্টের নিখুঁত মানদণ্ডের জন্য প্রস্তুত না হলে যা কিছুকে উদ্দেশ্য করে তোলে। "ওপেন কনসেপ্ট" নামে জিনিস রয়েছে যেমন দাড়ি বানাতে কতো চুল লাগে। কেউ উদ্দেশ্যমূলকভাবে বলতে পারেন যে চিবুকের চুল নেই এমন ব্যক্তির দাড়ি থাকে না এবং 5000 ইঞ্চি লম্বা চুলের দাড়ি থাকে তবে কোথাও মাঝখানে সাবজেক্টিভ রায়টি একটি উদ্দেশ্যমূলক সিদ্ধান্ত নিতে হয়।
এরিক

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

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

উত্তর:


97

উভয়। আপনার কেক আছে এবং এটি খাওয়া।

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

আপনি যদি সারোগেট কী ব্যবহার করেন তবে ব্যবসার বিধি অনুসারে স্বতন্ত্রতা নিশ্চিত করতে আপনি এখনও একটি ব্যবসায়িক কী চান।


7
আপনার যদি একাধিক "প্রার্থী" কী (ক্ষেত্র বা ক্ষেত্রের সমান আকারের সংগ্রহ যা অনন্য নয়) তবে আপনি সম্ভবত বয়েস-কোডড নরমাল ফর্ম লঙ্ঘন করতে পারেন। বিসিএনএফ 3NF এর বাইরে, তাই অনেকেই এটি নিয়ে চিন্তিত নন। কিছু পরিস্থিতি রয়েছে, তবে বিসিএনএফ-এ থাকা খুব সহায়ক।
অ্যালান

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

1
"প্রতিটি সমস্যার সমাধান অন্য স্তরের সাথে সমাধান করা হয়" ... সারোগেট কীগুলি কেবল
এটিই

5
আমি এটিকে অদ্ভুত বলে মনে করি যে অনেক মন্তব্য দৃ as়ভাবে মনে করে যে কোনও সরোগেট কী ছাড়া সম্পর্ক স্থাপন করতে পারে না। অনেক ক্ষেত্রে সারোগেট কীটি অতিমাত্রায় ব্যবহৃত হয়। কেন এমন কোনও কিছু যুক্ত করুন যা কোনও মূল্য না দেয় তবে প্রযুক্তিগত debtণ যুক্ত করে (এবং কিছু ক্ষেত্রে, অন্যথায় অনন্য ফলাফল হঠাৎ অ-অনন্য হয়ে যায়)।
উইল মুর III

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

124

সারোগেট কীগুলি ব্যবহারের কয়েকটি কারণ:

  1. স্থিতিশীলতা : ব্যবসায় বা প্রাকৃতিক প্রয়োজনের কারণে চাবি পরিবর্তন করা নেতিবাচকভাবে সম্পর্কিত টেবিলগুলিকে প্রভাবিত করবে। সারোগেট কীগুলি খুব কমই, যদি কখনও হয় তবে পরিবর্তন করা দরকার কারণ মানটির সাথে কোনও অর্থ বাঁধা নেই।

  2. কনভেনশন : পিকেগুলির বিভিন্ন নাম সহ টেবিলগুলিতে কীভাবে যোগদান করবেন সে সম্পর্কে ভাবার পরিবর্তে আপনাকে একটি প্রমিত প্রাথমিক কী কলাম নামকরণ কনভেনশন রাখতে দেয় have

  3. গতি : পিকে মান এবং ধরণের উপর নির্ভর করে কোনও পূর্ণসংখ্যার একটি সারোগেট কী ছোট, সূচক এবং অনুসন্ধানের চেয়ে দ্রুত হতে পারে।


2
এখন, সারোগেট কী এবং প্রাকৃতিক কীগুলি সম্পর্কে অনেকগুলি পড়ার পরে, আমি মনে করি সরোগেট কীগুলি ব্যবহার করা আরও ভাল। তবে, আমার ডাটাবেসে প্রাকৃতিক কীগুলি (একটি এনভিচারার (20)) অবশ্যই অনন্য হতে হবে। আমি বুঝতে পারি না যে আমি কীভাবে আরও গতি পেতে পারি যদি প্রতিটি কলের সন্নিবেশে কোনও মান (কোনও অনন্য বাধা না ব্যবহার করে) পুনরাবৃত্তি না করা হয় তবে কলামের প্রতিটি তথ্য পরীক্ষা করতে হবে।
ভ্যানসফ্যানেল

70

এটি প্রদর্শিত হয় যে এখনও কেউ নন-সারোগেট (আমি "প্রাকৃতিক" বলতে) দ্বিধান্বিত করতে চাইছি না of সুতরাং এখানে যায় ...

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

select sum(t.hours)
from timesheets t
where t.dept_code = 'HR'
and t.status = 'VALID'
and t.project_code = 'MYPROJECT'
and t.task = 'BUILD';

বিরুদ্ধে:

select sum(t.hours)
from timesheets t
     join departents d on d.dept_id = t.dept_id
     join timesheet_statuses s on s.status_id = t.status_id
     join projects p on p.project_id = t.project_id
     join tasks k on k.task_id = t.task_id
where d.dept_code = 'HR'
and s.status = 'VALID'
and p.project_code = 'MYPROJECT'
and k.task_code = 'BUILD';

যদি না কেউ গুরুত্ব সহকারে নীচে নীচে একটি ভাল ধারণা না মনে হয় ?:

select sum(t.hours)
from timesheets t
where t.dept_id = 34394
and t.status_id = 89    
and t.project_id = 1253
and t.task_id = 77;

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

আরও দেখুন: অন্য প্রশ্নের আমার উত্তর


14
-১ প্রাথমিক কী হিসাবে প্রাকৃতিক কীগুলির সমস্যা রয়েছে যে প্রতিটি সন্তানের টেবিলের জন্য আপনাকে পিতামাতার কী যুক্ত করতে হবে যা একাধিক ক্ষেত্রের দ্বারা তৈরি করা যেতে পারে (কেবলমাত্র একটির পরিবর্তে যা সারোগেট কী হিসাবে দেখা যায়) এবং শিশুকেও চাবি. তাই নীচে কল্পনা করুন যেখানে ট্যাবলেট থেকে শুরু করে সম্পর্কটি 1-0 হয় * সমস্যা দেখুন? অভিভাবক কীটি শিশুদের টেবিলে প্রচার করা হয়। টেবিলার প্রাথমিক কী পরিবর্তন হলে কী হবে? এখন আপনাকে সমস্ত চাইল্ড টেবিল পিকেও রিফেক্টর করতে হবে।
আলফ্রেডো ওসারিও

9
@ অ্যালফ্রেডো: হ্যাঁ অবশ্যই বাণিজ্য বন্ধ রয়েছে। যাইহোক, আমার 20+ বছরের অভিজ্ঞতায় আমি সারণীর পিকে পরিবর্তনের সংজ্ঞা খুব কমই দেখেছি। যদি এটি নিয়মিত ঘটে থাকে তবে আমি সম্ভবত প্রাকৃতিক কীগুলি এড়াতে পারি। বাস্তবে, এটি ঘটে যায় এমন বিরল ইভেন্টগুলিতে আমি বর্ধিত প্রভাবের হিট নিতে প্রস্তুত।
টনি অ্যান্ড্রুজ

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

8
@ টিটিটি: তারপরে ডিজাইনটি শুরু করতে দুর্বল ছিল। আবার, পুরুষরা ছেলেদের থেকে আলাদা হয়ে গেছে: প্রাকৃতিক কীটি কখন ব্যবহার করতে হবে এবং কখন সার্ভেট ব্যবহার করতে হবে তার সঠিক পছন্দ করা। আপনি সিদ্ধান্ত নেন যে প্রতি টেবিলের ভিত্তিতে, সাধারণ ডগমা হিসাবে নয়।
ড্যানম্যান

7
আমারও 20+ বছরের অভিজ্ঞতা রয়েছে এবং আমি আপনার মতামতকে দ্বিতীয় করে দিয়েছি। আমি একবার সার্গেট কীগুলি সহ একটি ওরাকল ডেটাওয়্যারহাউস তৈরি করেছি এবং ডেটা রক্ষণাবেক্ষণ জাহান্নামের মতো ছিল। আপনি কেবল কখনও সরাসরি আপনার ডেটা অ্যাক্সেস করতে পারবেন না। আপনার সর্বদা সব কিছুর জন্য প্রশ্নগুলি লিখতে হবে এবং এটি সরোগেট কীগুলি হ্যান্ডল করার জন্য কেবল ভয়ঙ্কর করে তোলে।
এসকিউএল পুলিশ

31

সারোগেট কী-তে কোনও পরিবর্তন করার কারণ নেই। প্রাকৃতিক কী সম্পর্কে আমি একই বলতে পারি না। শেষ নাম, ইমেল, আইএসবিএন নুবারস - এগুলি সবই একদিন বদলে যেতে পারে।


31

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

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

থিঙ্ক সংস্থাগুলি: আপনি একটি সুখী মেরকিন কোম্পানী যা মের্কিয়ার অন্যান্য সংস্থার সাথে ব্যবসা করছে doing আপনি প্রাথমিক কী হিসাবে কোম্পানির নামটি ব্যবহার না করার জন্য যথেষ্ট চালাক, তাই আপনি মার্কিয়ার সরকারী অনন্য সংস্থার আইডি এর সম্পূর্ণ 10 বর্ণানুক্রমিক অক্ষর হিসাবে ব্যবহার করেন। তারপরে মের্কিয়া সংস্থা আইডি পরিবর্তন করে কারণ তারা ভেবেছিল এটি ভাল ধারণা হবে। এটি ঠিক আছে, আপনি এমন পরিবর্তনের জন্য আপনার ডিবি ইঞ্জিনের ক্যাসকেড আপডেট বৈশিষ্ট্যটি ব্যবহার করেন যা আপনাকে প্রথম স্থানে অন্তর্ভুক্ত করা উচিত নয়। পরে, আপনার ব্যবসা প্রসারিত হয়েছে, এবং এখন আপনি ফ্রেডোনিয়ায় একটি সংস্থার সাথে কাজ করেন। ফ্রিডোনিয়ার সংস্থা আইডি 16 টি অক্ষর পর্যন্ত। আপনাকে প্রাথমিক আই-তে (বিদেশী কীগুলিতেও) একটি দেশ ক্ষেত্র যুক্ত করে, আইডি প্রাথমিক কী (অর্ডার, ইস্যু, মানি ট্রান্সফার ইত্যাদিতে বিদেশী কী ক্ষেত্রগুলিও) সংস্থার আইডি বড় করতে হবে। সেকি! ফ্রিডোনিয়ায় গৃহযুদ্ধ, এটি ' তিনটি দেশে বিভক্ত। আপনার সহযোগীর দেশের নাম নতুনতে পরিবর্তন করা উচিত; রেসকিউ আপডেট ক্যাসকেড। বিটিডব্লিউ, আপনার প্রাথমিক কী কী? (দেশ, কোম্পানীআইডি) বা (কোম্পানীআইডি, দেশ)? পরবর্তী ব্যক্তিরা যোগ দিতে সহায়তা করে, প্রাক্তন অন্য সূচকে এড়িয়ে চলে (বা সম্ভবত অনেকগুলিই আপনার দেশের অর্ডারগুলিও গ্রুপযুক্ত করা উচিত)।

এগুলি সবই প্রমাণ নয়, তবে যুক্ত ইঙ্গিত সহ সকল ব্যবহারের জন্য একটি সারি আলাদাভাবে সনাক্ত করার জন্য একটি সারোগেট কীটি ব্যবসায়িক কী থেকে পছন্দনীয় an


আপনি দুর্দান্ত চেহারা ব্যবহারকারীর নাম দিয়ে সমস্ত ইন্টারনেট জিতেছেন!
আইয়েন হোল্ডার

1
ডাউনওয়েট হ'ল এটি বেশ সুন্দর: "আমি এর সাথে একমত নই" "
jcollum

5
ডাউন তীরটির টুলটিপটি "এই উত্তরটি কার্যকর নয়" বলে না, "আমি এর সাথে একমত নই" says সম্ভবত এই নির্দিষ্ট উত্তরে অর্থগুলি কাছাকাছি থাকলেও সাধারণত সেগুলি হয় না।
tzot

1
যদি কেউ মনে করে যে আপনার উত্তরটি ভুল, তবে তিনি (/ সে) আরও মনে করবেন যে এটি প্রশ্নকারীকে ভুল দিকের দিকে নিয়ে যায় (সঠিক দিকের বিপরীতে), এবং সুতরাং আপনার উত্তরটিকে "অপ্রয়োজনীয়" থেকেও খারাপ হিসাবে বিচার করবে will তার (/ তার) মনের একটি ডাউনভোটকে ন্যায়সঙ্গত করা।
এরউইন স্মাউট

1
হ্যাঁ, সারোগেট কীগুলি একটি রোগ। একটি বন্যের মধ্যে ফাঁস হয়ে যায় এবং আপনি এটিকে পিকে হিসাবে ব্যবহার করেন এখন আপনার নিজের সারোগেট কীটি দরকার। তারপরে আপনার কী বন্যের মধ্যে ফাঁস হয়ে যাবে (একটি ইউআরএল মাধ্যমে বলুন) এবং রোগটি ছড়িয়ে পড়ে।
স্যামুয়েল ড্যানিয়েলসন

25

আমি সাধারণত সরোগেট কীগুলি ঘৃণা করি। এগুলি কেবল তখনই ব্যবহার করা উচিত যখন কোনও মানের প্রাকৃতিক কী উপলব্ধ থাকে না। আপনি যখন এটির বিষয়ে চিন্তা করেন তখন এটি বরং অযৌক্তিক think

আমার কারণগুলি এখানে:

  1. প্রাকৃতিক কীগুলি ব্যবহার করার সময়, টেবিলগুলি এমনভাবে ক্লাস্টার করা হয় যেগুলি প্রায়শই অনুসন্ধান করা হয় তত দ্রুত অনুসন্ধান করা।

  2. সার্গেট কীগুলি ব্যবহার করার সময় আপনাকে অবশ্যই লজিকাল কী কলামগুলিতে অনন্য সূচি যুক্ত করতে হবে। আপনার এখনও লজিকাল সদৃশ ডেটা আটকাতে হবে। উদাহরণস্বরূপ, pk একটি সারোগেট আইডি কলাম হওয়া সত্ত্বেও আপনি আপনার সংস্থার টেবিলে একই নামে দুটি সংস্থাকে মঞ্জুরি দিতে পারবেন না।

  3. যখন সরোগেট কীগুলি প্রাথমিক কী হিসাবে ব্যবহৃত হয় তখন প্রাকৃতিক প্রাথমিক কী কী তা খুব কম পরিষ্কার হয়। বিকাশকালে আপনি জানতে চান কোন কলামের সেটটি টেবিলটিকে অনন্য করে তোলে।

  4. একাধিক সম্পর্কের শৃঙ্খলে লজিকাল কী চেইন। সুতরাং উদাহরণস্বরূপ, সংস্থাগুলিতে অনেক অ্যাকাউন্ট এবং অ্যাকাউন্টগুলিতে অনেকগুলি চালান থাকে। সুতরাং সংস্থার যৌক্তিক কীটি হল অর্গনাম। অ্যাকাউন্টগুলির লজিক্যাল কীটি অর্গনাম, অ্যাকাউন্টআইডি। চালানের লজিক্যাল-কীটি অর্গনাম, অ্যাকাউন্টআইডি, ইনভয়েস নাম্বার।

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

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

  6. আমার কাছে তিনটি আলাদা ডাটাবেস বই রয়েছে। এর মধ্যে একটিও সরোগেট কী ব্যবহার করে দেখায় না।


7
আমি সরোগেট কীগুলি অপছন্দ করি, যখন সেগুলি প্রয়োজনীয় হয় না। এন্টারপ্রাইজ একটি প্রাকৃতিক কী ব্যবহার করে যা প্রচুর ত্রুটি সাপেক্ষে ব্যবহার করা হয় এবং এগুলি ত্রুটি দ্বারা প্রভাবিত এমন একটি ডাটাবেস সহ্য করতে রাজি নয় যখন এগুলি প্রয়োজনীয়।
ওয়াল্টার মিট্টি

26
-1: আমি কয়েক ডজন অ্যাপ্লিকেশন লিখেছি এবং রক্ষণ করেছি। সবচেয়ে বেশি ডেটা-সম্পর্কিত সমস্যা হ'ল প্রাকৃতিক কী ব্যবহার করা।
ফ্যালকন

6
আপনার কিছু পয়েন্ট ধরে ধরেছে যে সার্গেট কীটি পিকে হতে হবে বা ক্লাস্টারযুক্ত কলাম হতে হবে - সত্য নয়। আপনার পয়েন্ট 1 এবং 5 এটিকে এড়ানো যায় না যে পূর্ণসংখ্যা 4 বাইট হয় এবং প্রাকৃতিক কী প্রায় সবসময়ই অনেকগুলি হয়, আরও অনেকগুলি বাইট হয়। এবং, প্রতিটি অবিচ্ছিন্ন সূচক অবশ্যই ক্লাস্টারড সূচীতে থাকা সেই প্রাকৃতিক কীগুলির বাইটগুলি পুনরাবৃত্তি করতে হবে, সুতরাং আপনার প্রাকৃতিক কী ডাটাবেসে সারণী এবং সূচীগুলিতে পৃষ্ঠাতে প্রতিদূর থেকে অনেক কম সারি থাকবে, যা পড়ার আরও খারাপ পারফরম্যান্সে অনুবাদ করে , যা অনুসন্ধানগুলি ধীর করে তোলে , দ্রুত নয়।
এরিক

3
প্রাকৃতিক কীগুলির বিপরীতে আরেকটি কারণ (উদাহরণ: পারমাণবিক সংখ্যা, ভিআইএন, ইত্যাদি), ব্যবসায়ের যুক্তি এমন পরিবর্তন করতে পারে যা ডেটার প্রকারকে বাড়িয়ে তোলে। উদাহরণস্বরূপ - পূর্বে: পরমাণুর ট্র্যাকিং চার্জ, পরে: পরমাণু এবং যৌগিকদের ট্র্যাকিংয়ের চার্জ। আগে: লোড ক্ষমতার জন্য মোটর যানবাহন ট্র্যাক করা। পরে: লোড বহনের ক্ষমতার জন্য প্লেন, নৌকা, বাইক এবং লোক যুক্ত করা হচ্ছে।
forforf

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

18

এই অন্তহীন যুদ্ধের বিষয়ে আমি আপনার অভিজ্ঞতাটি আপনার সাথে ভাগ করতে চাই: ডি বনাম প্রাকৃতিক বনাম সারোগেট কী দ্বিধা। আমি মনে করি যে উভয় ভাড়াটে কি-সংকলন (কৃত্রিম স্বয়ংক্রিয়ভাবে তৈরি বেশী) এবং প্রাকৃতিক কি-সংকলন (কলাম (গুলি গঠিত) ডোমেইন অর্থ সহ) আছে অনুকূল এবং কনস । সুতরাং আপনার পরিস্থিতির উপর নির্ভর করে একটি পদ্ধতি বা অন্যটি চয়ন করা আরও প্রাসঙ্গিক হতে পারে।

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

সরোগেট কীগুলির অসুবিধা

সারোগেট কীগুলি হ'ল:

  1. কর্মক্ষমতা সমস্যার উত্স:
    • এগুলি সাধারণত স্বয়ং-বর্ধিত কলামগুলি ব্যবহার করে প্রয়োগ করা হয় যার অর্থ:
      • আপনি যখনই নতুন আইডি পেতে চান তখন প্রতিবার ডাটাবেসে একটি বৃত্তাকার ট্রিপ (আমি জানি যে ক্যাচিং বা [সিক]] হিলো অ্যালগরিদম ব্যবহার করে এটি উন্নত করা যেতে পারে তবে এখনও সেই পদ্ধতিগুলির নিজস্ব ত্রুটি রয়েছে)।
      • যদি এক-দিনের আপনার ডেটাটি একটি স্কিমা থেকে অন্য স্কিমে স্থানান্তরিত করা দরকার (এটি আমার সংস্থায় কমপক্ষে নিয়মিত ঘটে) তবে আপনার আইডি সংঘর্ষের সমস্যা দেখা দিতে পারে। এবং হ্যাঁ আমি জানি যে আপনি ইউআইডি ব্যবহার করতে পারেন তবে সেগুলি স্থায়ী হয় 32 টি হেক্সাডেসিমাল ডিজিটের! (আপনি যদি ডাটাবেসের আকারের বিষয়ে যত্নশীল হন তবে এটি একটি সমস্যা হতে পারে)।
      • আপনি যদি আপনার সমস্ত সার্গেট কীগুলির জন্য একটি সিকোয়েন্স ব্যবহার করেন তবে - অবশ্যই - আপনি আপনার ডাটাবেসে বিতর্ক রেখে শেষ করবেন।
  2. প্রবণ ত্রুটি. একটি ক্রমটির সর্বাধিক সীমা রয়েছে - বিকাশকারী হিসাবে - আপনাকে নিম্নলিখিত পয়েন্টগুলিতে মনোযোগ দিতে হবে:
    • আপনার অবশ্যই নিজের ক্রমটি চক্রটি চালিয়ে যেতে হবে (যখন সর্বোচ্চ-মানটি পৌঁছে যায় তখন এটি 1,2, ... এ ফিরে যায়)।
    • যদি আপনি নিজের ডেটাটির অর্ডারিং (সময়ের সাথে) হিসাবে ক্রমটি ব্যবহার করেন তবে আপনাকে অবশ্যই সাইক্লিংয়ের কেসটি পরিচালনা করতে হবে (আইডি 1 সহ কলামটি আইডি সর্বাধিক মান - 1 সহ সারির চেয়ে নতুন হতে পারে)।
    • নিশ্চিত হয়ে নিন যে আপনার কোড (এবং এমনকি আপনার ক্লায়েন্ট ইন্টারফেসগুলি যা অভ্যন্তরীণ আইড বলে মনে হয় না) 32b / 64b পূর্ণসংখ্যার সমর্থন করে যা আপনি নিজের সিক্যুয়েন্স মানগুলি সংরক্ষণ করার জন্য ব্যবহার করেছিলেন।
  3. তারা নন-অনুলিপিযুক্ত ডেটার গ্যারান্টি দেয় না। আপনার কাছে সর্বদা একই কলাম মান সহ তবে পৃথক উত্পন্ন মান সহ 2 টি সারি থাকতে পারে। আমার জন্য এই হল একটি দেখুন ডাটাবেস নকশা বিন্দু থেকে ভাড়াটে কী সমস্যা।
  4. উইকিপিডিয়ায় আরও ...

প্রাকৃতিক কীগুলির উপর পৌরাণিক কাহিনী

  1. যৌগিক কীগুলি সারোগেট কীগুলির চেয়ে কম অদক্ষ। না! এটি ব্যবহৃত ডাটাবেস ইঞ্জিনের উপর নির্ভর করে:
  2. প্রাকৃতিক চাবি বাস্তব জীবনে বিদ্যমান নেই। দুঃখিত তবে তাদের উপস্থিতি আছে! বিমান শিল্পে, উদাহরণস্বরূপ, প্রদত্ত নির্ধারিত ফ্লাইট (বিমান, বিমান ছাড়ার তারিখ, ফ্লাইট নম্বর, অপারেশনসুফিক্স) সম্পর্কিত নিম্নলিখিত টিপল সর্বদা অনন্য থাকবে । আরও সাধারণভাবে, যখন কোনও ব্যবসায়ের উপাত্ত একটি নির্দিষ্ট মান দ্বারা অনন্য হওয়ার গ্যারান্টিযুক্ত থাকে তখন এই সেট ডেটাটি একটি [ভাল] প্রাকৃতিক কী প্রার্থী।
  3. প্রাকৃতিক কীগুলি শিশু সারণীর "স্কিমা দূষিত" করে। আমার কাছে এটি বাস্তব সমস্যার চেয়ে বেশি অনুভূতি। 2 টি বাইটের 4 টি কলামের প্রাথমিক-কী থাকা 11 বাইটের একক কলামের চেয়ে বেশি কার্যকর হতে পারে। এছাড়াও, 4 টি কলামগুলি পিতামাতার টেবিলে যোগদান না করে সরাসরি শিশু টেবিলটি জিজ্ঞাসা করতে (যেখানে একটি ধারাতে 4 টি কলাম ব্যবহার করে) ব্যবহার করা যেতে পারে।

উপসংহার

প্রাকৃতিক কীগুলি যখন এটির সাথে প্রাসঙ্গিক হয় সেগুলি ব্যবহার করুন এবং সার্োগেট কীগুলি ব্যবহার করা ভাল যখন সেগুলি ব্যবহার করা ভাল।

আশা করি এটি কারও সাহায্য করেছে!


3
নির্ধারিত ফ্লাইটের ছাড়ার তারিখটি পুনরায় নির্ধারণ করা হলে কী হবে? আপনাকে কী সম্পর্কিত সমস্ত সত্তাকে সন্ধান করতে হবে এবং কীগুলি মুছে ফেলতে হবে, বা আপনি আসলে সম্পর্কিত সংস্থাগুলির সমস্ত কীগুলি আপডেট করবেন? অথবা আপনি একটি সাধারণ, একক টেবিল (সম্ভবত 3NF নাও) নিয়ে কাজ করছেন?
কোড

অ্যাকসেন্ট পয়েন্ট @ কোড4 লাইফ
ফোর্সুইল

@ কোড4 লাইফ: এটিই অপারেশনালসফিক্সটি লাফিয়ে।
mwnsiri

"আপনার কাছে একই কলামের মানগুলির সাথে সর্বদা 2 টি সারি থাকতে পারে তবে ভিন্ন উত্পন্ন মান সহ" আপনার কলামগুলিতে কেবল একটি অনন্য বা সংমিশ্রিত অনন্য সীমাবদ্ধ রাখুন।
wha7ever

15

সর্বদা এমন কী ব্যবহার করুন যার ব্যবসায়িক অর্থ নেই। এটা ঠিক ভাল অনুশীলন।

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


22
মার্টিন ফোলার অনেক জিনিস হতে পারে তবে তিনি ডাটাবেস ডিজাইনের কোনও কর্তৃত্ব নন।
টনি অ্যান্ড্রুজ

আমি মনে করি সিদ্ধান্তে পৌঁছানোর আগে আপনার কিছু যুক্তি সরবরাহ করা উচিত।
আরে এভার্টসন

4
পছন্দ করুন 'এটি এ বিষয়ে ফোটায় যে এটির একটি চাকরি এবং একটি কাজই হওয়া উচিত' ' একক দায়িত্ব
আইয়েন হোল্ডার

10

আপনি যদি আপনার ডেটা ক্লাস পরিচালনা করতে / জেনারেট করতে কোনও ORM সরঞ্জাম ব্যবহার করার পরিকল্পনা করেন তবে সারোগেট কীগুলি বেশ সহজ। আপনি আরও কিছু উন্নত ম্যাপারগুলির সাথে কয়েকটি পড়ুন (পড়ুন: হাইবারনেট), এটি আপনার কোডে কিছুটা জটিলতা যুক্ত করেছে।

(অবশ্যই, ডাটাবেস পিউরিস্টরা তর্ক করবে যে সরোগেট কীটির ধারণাটিও একটি ঘৃণা)

আমি উপযুক্ত হলে surrogate কী জন্য ইউড ব্যবহার করার অনুরাগী। তাদের সাথে বড় জয়টি হ'ল আপনি কীটি আগে থেকেই জানেন eg যেমন আপনি ইতিমধ্যে সেট করেছেন এমন একটি শ্রেণীর উদাহরণ তৈরি করতে পারবেন এবং অনন্য হওয়ার গ্যারান্টিযুক্ত থাকবেন, বলুন, একটি পূর্ণসংখ্যা কী আপনাকে ডিফল্ট করতে হবে 0 বা - 1 এবং সংরক্ষণ / আপডেট করার সময় একটি উপযুক্ত মান আপডেট করুন।

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


6

একটি সারোগেট কী ব্যবহার করা আমার মতে আরও ভাল কারণ এটির পরিবর্তনের সম্ভাবনা রয়েছে। প্রাকৃতিক কী হিসাবে আপনি যেটি ব্যবহার করতে পারেন তার প্রায় আমি যে কোনও কিছু পরিবর্তন করতে পারে (অস্বীকৃতি: সর্বদা সত্য নয়, তবে সাধারণত)।

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


1
দুর্ভাগ্যক্রমে গাড়িগুলির একটি প্রাকৃতিক কী রয়েছে যা পরিবর্তিত হয় না: ভিআইএন (কমপক্ষে আমেরিকাতে ...)
জ্যাকলাম

@ জ্যাকলুম হ্যাঁ ঠিক আছে, এটি একটি যথাযথ বিষয়। আমার মতামত এখনও দাঁড়িয়ে আছে, আমার উদাহরণ অগত্যা যতটা ভাল হতে পারে তত ভাল ছিল না।
চিহ্নিত করুন

2
যখন আপনি এটি আইএসও কোডগুলিতে ভিত্তি করেন তখন ভাষার তালিকাগুলি প্রাকৃতিক কী এর উদাহরণ হতে পারে। সুতরাং যদি আপনি কোনও নির্দিষ্ট ভাষায় কোনও টেবিল থেকে সামগ্রী লোড করতে চান, languagesতবে ভাষা কোড (আইডি) ইতিমধ্যে টেবিলে থাকা অবস্থায় আপনাকে টেবিলে যোগ দেওয়ার দরকার নেই texts
ড্যানম্যান

@ ড্যানম্যান আমাকে আপনার সাথে সেখানে একমত হতে হবে। প্রাকৃতিক কী দিয়ে আরও ভাল কাজ করে এমন কিছু উদাহরণ সর্বদা থাকবে। নিয়ম বা সাধারণ পদ্ধতি কখনই নিখুঁত হয় না এবং
এটির

5

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

তারপরে, প্রয়োজন অনুসারে, আপনার ব্যবসায়ের কীগুলি অনন্য বাধা বা সূচি হিসাবে স্ট্যাক করুন। এটি আপনাকে ডেটা অখণ্ডতা অক্ষুণ্ন রাখবে।

ব্যবসায়িক যুক্তি / প্রাকৃতিক কীগুলি পরিবর্তন করতে পারে তবে কোনও টেবিলের ফিজিকাল কীটি কখনও পরিবর্তন করা উচিত নয়।


4

কোনও ডেটাওয়ারহাউজ দৃশ্যে আমি বিশ্বাস করি সার্গেট কী পথ অনুসরণ করা আরও ভাল। দুটি কারণ:

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

2

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

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


1
আমি মনে করি এখানে আপনার উদাহরণের সাথে আমার একমত হতে হবে না। একটি আইএসবিএন নম্বর একটি বইয়ের একটি বৈশিষ্ট্য। একটি সারোগেট কী বাকি সারির ডেটা থেকে স্বতন্ত্র, অতএব আইএসবিএন ইতিমধ্যে প্রতিটি বই স্বতন্ত্রভাবে সনাক্ত করে থাকলেও এই অবস্থানটি কোনও বইয়ের টেবিলের জন্য পৃথক সারোগেট কী ব্যবহার করার পক্ষে পরামর্শ দেয়।
ক্রিস্টোফার ক্যাসেল 21

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

@ ক্রিস্টোফার ক্যাসেল - এক বছর আগে থেকে এই পোস্টটি জুড়ে এসেছিল তবে আমি কিছু যুক্ত করার ভেবেছিলাম। আইএসবিএনগুলি অনন্য হওয়ার গ্যারান্টিযুক্ত নয় এবং নকল থাকতে পারে। আমার এক বন্ধু আছে যা বেশ কয়েক বছর ধরে একটি লাইব্রেরিতে কাজ করেছিল এবং তারা প্রায়শই নকল আইএসবিএন নিয়ে বইগুলি ছড়িয়ে দিত The সমস্যাটি হ'ল আইএসবিএনের স্বতন্ত্রতা এক সংস্থার পরিবর্তে প্রকাশকের উপর বর্তায় যা সমস্ত প্রকাশনার জন্য সমস্ত সংখ্যা নিশ্চিত করে ures অনন্য এবং এই প্রকাশকরা সবসময় তাদের অভিনয় একসাথে থাকতেন না।
টমাস

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

প্রযুক্তিগতভাবে, কর্পোরেশন রাজ্যগুলির মধ্যে চলাচল করতে পারে না; যা ঘটে তা হ'ল নতুন রাজ্যে একটি নতুন কর্পোরেশন তৈরি হয় এবং সম্পদ স্থানান্তরিত হয়। এটি ডাটাবেস তথ্যের জন্যও কাজ করে।
ওয়ারেন শিশ

2

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

থ্রেড দেখুন @ http://social.msdn.mic Microsoft.com/ Forums/en-us/sqlgetstarted/ thread/ 27bd9c77-ec31-44f1-ab7f-bd2cb13129be


আমি নিশ্চিত যে এসকিউএল সার্ভার জিইউআইডিগুলি বাছাই করতে পারে।
মাইকেল গ্রিন

এটি সঠিক নয়, যদিও তারা জিইউইডি মূল্যায়ন করতে পারে, ফলস্বরূপ সাজানো কোনও মানুষের পক্ষে অযৌক্তিক নয়। stackoverflow.com/questions/7810602/…
ব্রায়ান সোয়ান

1
একটি সত্য বিবৃতি, তবে "এসকিউএল সার্ভারের এগুলি শারীরিকভাবে বাছাই করার ক্ষমতা নেই।"
মাইকেল গ্রিন

2

কেস 1: আপনার টেবিলটি50 টিরও কম ধরণের (সন্নিবেশ) সহএকটি সারণী

ব্যবসায় / প্রাকৃতিক কী ব্যবহার করুন । উদাহরণ স্বরূপ:

Table: JOB with 50 inserts
CODE (primary key)       NAME               DESCRIPTION
PRG                      PROGRAMMER         A programmer is writing code
MNG                      MANAGER            A manager is doing whatever
CLN                      CLEANER            A cleaner cleans
...............
joined with
Table: PEOPLE with 100000 inserts

foreign key JOBCODE in table PEOPLE
looks at
primary key CODE in table JOB

কেস 2: আপনার টেবিলটি হাজার হাজার সন্নিবেশ সহ একটি টেবিল

সারোগেট / স্বতঃসংশোধ কীগুলি ব্যবহার করুন । উদাহরণ স্বরূপ:

Table: ASSIGNMENT with 1000000 inserts
joined with
Table: PEOPLE with 100000 inserts

foreign key PEOPLEID in table ASSIGNMENT
looks at
primary key ID in table PEOPLE (autoincrement)

প্রথম ক্ষেত্রে:

  • আপনি টেবিল JOB এর সাথে যোগ না ব্যবহার করে টেবিল PEOPLE এ সমস্ত প্রোগ্রামার নির্বাচন করতে পারেন তবে কেবল এই সাথে: "JOBCODE = 'PRG' থেকে লোকেদের নির্বাচন করুন" "

দ্বিতীয় ক্ষেত্রে:

  • আপনার ডাটাবেস প্রশ্নগুলি আরও দ্রুত কারণ আপনার প্রাথমিক কীটি পূর্ণসংখ্যা
  • পরবর্তী অনন্য কী খুঁজে পেতে আপনার নিজেকে বিরক্ত করার দরকার নেই কারণ ডাটাবেস নিজেই আপনাকে পরবর্তী স্বয়ংস্কার দেয়।

2

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


1

কোর্স জন্য ঘোড়া। আমার পক্ষপাতিত্ব রাষ্ট্র; আমি প্রথমে বিকাশকারী, তাই আমি ব্যবহারকারীদের একটি কার্যকরী অ্যাপ্লিকেশন দেওয়ার ক্ষেত্রে প্রধানত উদ্বিগ্ন।

আমি প্রাকৃতিক কীগুলির সাহায্যে সিস্টেমে কাজ করেছি এবং মান পরিবর্তনগুলি যেগুলি পরিবর্তিত হবে তা নিশ্চিত করতে অনেক সময় ব্যয় করতে হয়েছিল।

আমি কেবলমাত্র সরোগেট কীগুলি সহ সিস্টেমে কাজ করেছি এবং একমাত্র ব্যর্থতাটি ছিল পার্টিশনের জন্য অস্বীকৃত ডেটার অভাব।

বেশিরভাগ traditionalতিহ্যবাহী পিএল / এসকিউএল বিকাশকারীদের সাথে যোগ দিয়ে প্রতি সারণীর সংখ্যা বেশি হওয়ায় সারোগেট কীগুলি পছন্দ করেন না, তবে আমাদের পরীক্ষা এবং উত্পাদন ডেটাবেসগুলি কখনই ঘাম বাড়াতে পারে নি; অতিরিক্ত যোগদানের ফলে প্রয়োগের কার্যকারিতা প্রভাবিত হয় না। ডাটাবেস উপভাষার সাথে যা "Xa = Yb তে X অভ্যন্তরীণ যোগে Y" এর মতো ধারাগুলিকে সমর্থন করে না বা যে বিকাশকারীরা সেই সিনট্যাক্সটি ব্যবহার করে না, সরোগেট কীগুলির জন্য অতিরিক্ত যোগদানের ফলে ক্যোয়ারীগুলি পড়া আরও শক্ত হয়ে যায়, এবং টাইপ করতে আরও দীর্ঘ হয় চেক করুন: @ টনি অ্যান্ড্রুজ পোস্ট দেখুন। তবে আপনি যদি কোনও ওআরএম বা অন্য কোনও এসকিউএল-প্রজন্মের কাঠামো ব্যবহার করেন তবে আপনি এটি লক্ষ্য করবেন না। টাচ-টাইপিংও প্রশমিত করে।


এছাড়াও; আপনি যদি সত্যিকারের বাড়িতে চালনা করতে চান যে সরোগেট কীগুলি কেবল এটিই রয়েছে, এগুলিকে এলোমেলো বড় সংখ্যায় শুরু করুন এবং 1 এর পরিবর্তে 3+ দ্বারা ক্রমগুলি বাড়িয়ে দিন বা একাধিক কীটির জন্য মান উত্পন্ন করতে একই ক্রম ব্যবহার করুন।
উইলসি

1

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


0

পয়েন্ট ইন টাইম ডাটাবেসের ক্ষেত্রে সারোগেট এবং প্রাকৃতিক কীগুলির সংমিশ্রণ থাকা ভাল। যেমন আপনার কোনও ক্লাবের জন্য সদস্যের তথ্য ট্র্যাক করা দরকার track সদস্যের কিছু বৈশিষ্ট্য কখনও পরিবর্তন হয় না। যেমন জন্ম তারিখ তবে নাম পরিবর্তন হতে পারে। সুতরাং সদস্য_আইড সারোগেট কী সহ একটি সদস্য সারণী তৈরি করুন এবং ডিওবি-র জন্য একটি কলাম রাখুন। ব্যক্তির নাম হিসাবে পরিচিত আরেকটি সারণী তৈরি করুন এবং সদস্য_আইডি, সদস্য_ফরমন, সদস্য_নাম, তারিখ_পুষ্টিত জন্য কলাম রয়েছে। এই টেবিলটিতে প্রাকৃতিক কীটি সদস্য_দ্বীপ + তারিখের_পরে আপডেট হবে।

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