ইমেল ঠিকানা অনন্য বা প্রাথমিক কী?


11

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

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


3
তারা পরিবর্তন কাজ যেমন হবে - একটি ব্যবহারকারী তার ই-মেইল ঠিকানা পরিবর্তন যখন কি হবে
user151019

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

উত্তর:


7

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

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

একটি অনন্য সীমাবদ্ধতা প্রাথমিক কী ক্যান হিসাবে একইভাবে ব্যবহার করা যেতে পারে। বিবেচনা:

create table A ( x ... not null
               , y ... not null
               , z ... not null
               ,     unique (x)
               ,     primary key (y,z) );

create table B ( x ...
               ,   ...
               ,     foreign key (x) references A (x) );

create table C ( y ...
               , z ...
               ,   ...
               ,     foreign key (y, z) references A (y, z) );  

খ অনন্য বাধা উল্লেখ করে এবং সি প্রাথমিক কী বাধা উল্লেখ করে।

NULL আর একধরণের বাধা নয়। আপনার ক্ষেত্রে আপনি এটি অনন্য ঘোষণা না করে ইমেলের জন্য এটি প্রয়োগ করতে পারেন।

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

আপনার ক্ষেত্রে আমি সম্ভবত অন্য একটি প্রার্থী কীটিকে প্রাথমিক কী হিসাবে বেছে নেব এবং ইমেলটি বাতিল এবং অনন্য নয় বলে ঘোষণা করব।


1
এসকিউএল সার্ভারে আপনি কোনও এফকে হিসাবে একটি অনন্য সূচকটি উল্লেখ করতে পারেন।
মার্টিন স্মিথ

1
আমার স্ক্যালিতে অ্যাক্সেস নেই তাই আমি নিজের জন্য যাচাই করতে পারি না, আপনি যখন অনন্য সূচক তৈরি করেন তখন কি স্পষ্টতই একটি অনন্য বাধা তৈরি করে?
লেনার্ট

1
না। একটি অনন্য প্রতিবন্ধকে কিছুটা আলাদাভাবে চিকিত্সা করা হয় এবং একটি অনন্য সূচকের তুলনায় কিছু অতিরিক্ত মেটাডেটা এবং অতিরিক্ত বিধিনিষেধ রয়েছে তবে এসকিউএল সার্ভারটি এফকেতে ব্যবহার করার অনুমতি দেয়।
মার্টিন স্মিথ

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

এটি লক্ষণীয় যে আপনার ইমেইলে বিদেশী রেকর্ড প্রচুর রেকর্ড থাকলে, যখন আপডেট ক্যাসকেড হয় তখন সেই সমস্ত রেকর্ড আপডেট করতে বেশ সময় নিতে পারে।
cimmanon

6

হ্যাঁ ইমেলএড্রেস কলামে একটি অনন্য সূচক থাকা ঠিক হবে। সমস্যাটি কেবল তখনই হবে যদি কেউ আপনার পরিষেবার জন্য সাইন আপ করার পরে ইমেল ঠিকানাটি ছেড়ে দেয় তবে আপনাকে না জানায়, তবে ইমেল ঠিকানার মালিক যে কেউ সাইন আপ করার চেষ্টা করবেন। তবে এটি বেশ বিরল প্রান্তের কেস।

কোনও অনন্য সূচক যদি নাল মানগুলিকে অনুমতি দেয় যা আপনার ডাটাবেস প্ল্যাটফর্মের উপর নির্ভর করবে। ওরাকল করে, এসকিউএল সার্ভার একটি একক নূন্যমূল্যকে অনুমতি দেয়। আপনি কলামটি নুল মানকে না মঞ্জুর করে এর সমাধান করতে পারেন, তারপরে অনন্য সূচক তৈরি করে building


1
এটি এসকিউএল সার্ভার সম্পর্কে সত্য নয়। আপনি whereধারাগুলি সহ সূচকগুলি তৈরি করতে পারেন যা উদাহরণস্বরূপ, আপনাকে NULLসূচক থেকে মানগুলি বাদ দিতে দেয় ।
কর্ক ওল

1
বক্তব্যটি SQL Server allows a single NULL valueএখনও সত্য। এটি বলে না যে একাধিক NULLমান পাওয়ার কোনও উপায় নেই । আমি মনে করি উত্তর-উত্তরটি উত্তরটি সরল রাখার চেষ্টা করেছিল এবং অতিরিক্ত বিশদ (ফিল্টারড ইনডেক্সের মতো) ব্যাখ্যা না করে।
ব্র্যান্ডন

1
হ্যাঁ আমি পুরো ফিল্টার ইনডেক্সের খরগোশটিকে ঘুঘু করে রাখতে পারতাম তবে একটি সাধারণ প্রশ্নের সাধারণত একটি সাধারণ উত্তর প্রয়োজন। একটি ডাটাবেস প্ল্যাটফর্ম এবং সংস্করণ ছাড়া আমি আমার উত্তর জেনেরিক রাখি।
mrdenny

2

ইমেলএড্রেসে অনন্য সূচক থাকা ভাল।

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

এসকিউএল সার্ভারের অন্যান্য উত্তরে যেমন বলা হয়েছে আপনাকে অনন্য সূচী তৈরির আগে কোনও কলাম তৈরি করতে হবে শূন্য মানটিকে অনুমতি না দেওয়া।

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