প্রাথমিক কীগুলির নিজস্ব নাম রয়েছে কেন?


19

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

ক্লিন্টার বা বিপরীতে অবিবাহিত থেকে একটি প্রাথমিক কী পরিবর্তন করার ফলস্বরূপ, আপনাকে প্রথমে নামটি সন্ধান করতে হবে এবং এটিকে শেষ পর্যন্ত পড়তে হবে।

আমি দেখতে পাচ্ছি না এমন সালিশী নাম ব্যবহার করার কি কিছু সুবিধা আছে বা ডিবিএমএস প্রাথমিক কীগুলির জন্য নির্বিচারে নাম ব্যবহার করছে না?

2011-02-22 সম্পাদনা করুন (সেখানে তারিখটি বাছাই করতে চান না তাদের জন্য 02/22/2011 ):

আমার ফাংশনটি দেখাতে দাও, যার সাহায্যে আপনি এর প্রাথমিক সারণীর নাম থেকে প্রাথমিক কী এর নামগুলি সংগ্রহ করতে পারেন (প্রারম্ভিক এসকিউএল-সেভার ওরফে সিবেস সিস্টেম টেবিলগুলি ব্যবহার করে):

create function dbo.get_pk (@tablename sysname)
returns sysname
as
begin
    return (select k.name
    from sysobjects o 
        join sysobjects k   on k.parent_obj = o.id 
    where o.name = @tablename
    and o.type = 'U'
    and k.type = 'k')
end
go

জিবিএন যেমন উল্লেখ করেছে যে কোনও ব্যক্তি সত্যই উত্পন্ন নাম পছন্দ করে না, যখন আপনি একটি সুস্পষ্ট নাম সরবরাহ করেন না:

create table example_table (
    id int primary key
)

select dbo.get_pk('example_table')  

আমি মাত্র পেলাম

PK__example___3213E83F527E2E1D

কিন্তু কেন sysobjects নাম অনন্য হওয়া আবশ্যক। টেবিল এবং এর প্রাথমিক কীটির জন্য একই নামটি ব্যবহার করা পুরোপুরি ঠিক আছে।

এটি সেভাবে করা, আমাদের নামকরণের সম্মেলনগুলি স্থাপন করার দরকার ছিল না, যা দুর্ঘটনাক্রমে লঙ্ঘন হতে পারে।

এখন মারিয়ানের উত্তর:

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

উত্তর:


17

প্রাথমিক কীগুলি (এবং অন্যান্য অনন্য বাধা) সূচক হিসাবে প্রয়োগ করা হয় এবং ঠিক একইভাবে মোকাবিলা করা হয় - এটি পিকে এবং সূচকগুলির জন্য পৃথক কোড পাথের জন্য প্রোগ্রামারের দৃষ্টিকোণ থেকে কোনও অর্থ দেয় না (এটি দ্বিগুণ হয়ে যাবে) বাগের সম্ভাবনা)

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


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

1
আমি শব্দবন্ধটি পছন্দ করব: "একটি পিকে একটি সীমাবদ্ধতা যা সূচক ব্যবহার করে " । কখনও কখনও দুটি সীমাবদ্ধতা (একটি পিকে এবং একটি এফকে - বা 2 এফকে) একই সূচকটি ব্যবহার করতে পারে।
ypercubeᵀᴹ

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

6

নিশ্চিত না যে আমি প্রশ্নটি পুরোপুরি বুঝতে পেরেছি।

যদি কোনও টেবিলে আপনার একটি সূচক থাকে এবং আপনি সূচকটি পরিবর্তন করতে চান / তবে আপনার নাম অনুসারে এটিও পরিবর্তন করার দরকার নেই? আমি তোমাদের সূচির জন্য অবজেক্ট-আপ দেখাতে পারে অনুমান করা এবং আপডেট যে ভাবে না, কিন্তু নামের জনসাধারণকে সাহায্য করার ঝোঁক কথাটি বুঝতে কি বস্তু তারা কাজ করছে।

সুতরাং, সম্ভবত উত্তরটি হ'ল যদি আপনার শক্তিশালী নামকরণ কনভেনশন ব্যবহার হয় (উদাহরণস্বরূপ, একটি প্রাথমিক কী জন্য নাম_পিকে), তবে আপনি সহজেই সনাক্ত করতে সক্ষম হবেন যে আপনি টেবিলের প্রাথমিক কীটি নিয়ে কাজ করছেন।

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


5

আমি বলব এটি মানব পাঠযোগ্যতার জন্য একটি বাস্তবায়নের বিশদ।

বাধ্যতা নাম ঐচ্ছিক (অন্তত SQL সার্ভার মধ্যে), কিন্তু আমি চাই PK_MyTableজন্য MyTableবদলেPK_MyTabl___16feb6d8a


3

Orতিহাসিকভাবে, প্রাইমারি কী এবং অনন্য কীগুলি ক্রিস্টোফার জে ডেটের শিখানো অনুসারে প্রার্থী কী হিসাবে ডাকা হয়।

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

এর আলোকে, প্রাইমারি কেই নামটি সারণীর সম্পত্তি হিসাবে সংযুক্ত পছন্দের প্রার্থীর চাবি নির্বিচারে নাম। কেবলমাত্র একটি প্রাথমিক কী থাকতে পারে।

বাস্তবে, কেবলমাত্র প্রার্থী কী তৈরি করা যথেষ্ট।

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

এখানে প্রার্থী কী এবং সিজেডেটের মন্তব্যগুলির সংজ্ঞা দেখতে এখানে ক্লিক করুন


1

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

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