গাণিতিক দৃষ্টিকোণ থেকে, এক টেবিলের সর্বাধিক একটি প্রাথমিক কী রয়েছে তা স্বীকৃত, সাধারণ টেবিলে সম্পত্তি পরিবর্তে কিছু কিছু স্বেচ্ছাসেবক নাম দিয়ে প্রাথমিক কীগুলি উল্লেখ করা একটি ছোট্ট ডিজাইনের সিদ্ধান্ত বলে মনে হয়।
ক্লিন্টার বা বিপরীতে অবিবাহিত থেকে একটি প্রাথমিক কী পরিবর্তন করার ফলস্বরূপ, আপনাকে প্রথমে নামটি সন্ধান করতে হবে এবং এটিকে শেষ পর্যন্ত পড়তে হবে।
আমি দেখতে পাচ্ছি না এমন সালিশী নাম ব্যবহার করার কি কিছু সুবিধা আছে বা ডিবিএমএস প্রাথমিক কীগুলির জন্য নির্বিচারে নাম ব্যবহার করছে না?
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 নাম অনন্য হওয়া আবশ্যক। টেবিল এবং এর প্রাথমিক কীটির জন্য একই নামটি ব্যবহার করা পুরোপুরি ঠিক আছে।
এটি সেভাবে করা, আমাদের নামকরণের সম্মেলনগুলি স্থাপন করার দরকার ছিল না, যা দুর্ঘটনাক্রমে লঙ্ঘন হতে পারে।
এখন মারিয়ানের উত্তর:
- আমি কেবল একটি ক্লাস্টারকে একটি অবিবাহিত প্রাথমিক কীতে একটি উদাহরণ হিসাবে ব্যবহার করেছি যেখানে পিকে বাদ দিতে সক্ষম হওয়ার জন্য আমার আসল নামটি জানতে হবে।
- জিনিসগুলির যথাযথ নাম থাকা দরকার নেই, যদি তারা সহজেই অনন্যভাবে চিহ্নিত করতে পারে তবে এটি যথেষ্ট। এটি বিমূর্তির ভিত্তি। অবজেক্ট ওরিয়েন্টেটেড প্রোগ্রামিং এই পথে চলে। বিভিন্ন শ্রেণীর সমান বৈশিষ্ট্যের জন্য আপনার আলাদা আলাদা নাম ব্যবহার করার দরকার নেই ।
- এটি নির্বিচারে, কারণ এটি কোনও টেবিলের সম্পত্তি। আপনি যদি এটি ব্যবহার করতে চান তবে টেবিলের নামটি আপনাকে জানতে হবে।