অতিমাত্রায় নকশাগুলি করা ভাল অনুশীলন নয়। অর্থাত্ - যখন কোনও প্রয়োজন হয় না তখন সর্বদা একটি স্বয়ংবৃদ্ধিপূর্ব প্রাথমিক কী রাখা ভাল অনুশীলন নয়।
আসুন একটি উদাহরণ দেখুন যেখানে একটির প্রয়োজন হয় না।
আপনার নিবন্ধগুলির জন্য একটি সারণী রয়েছে – id
এটিতে একটি প্রাথমিক প্রাথমিক কী এবং নামযুক্ত একটি ভারচার কলাম রয়েছে title
।
আপনার কাছে প্রবন্ধের বিভাগগুলি সহ পূর্ণ টেবিল রয়েছে have id
প্রাথমিক প্রাথমিক কী, বার্চর name
।
নিবন্ধ সারণির এক সারিতে id
5 টি রয়েছে এবং একটি title
"মাখন দিয়ে গোস কীভাবে রান্না করা যায়"। আপনি এই বিভাগটি আপনার বিভাগের সারণিতে নিম্নলিখিত সারিগুলির সাথে যুক্ত করতে চান: "পাখি" ( আইডি : 20), "গুজ" ( আইডি : 12), "রান্না" ( আইডি : 2), "বাটার" (আইডি: 9) ।
এখন, আপনার কাছে দুটি টেবিল রয়েছে: নিবন্ধ এবং বিভাগগুলি। কীভাবে দুজনের মধ্যে সম্পর্ক তৈরি করবেন?
আপনার কাছে 3 টি কলাম সহ একটি টেবিল থাকতে পারে: আইডি (প্রাথমিক কী), নিবন্ধ_আইডি (বিদেশী কী), বিভাগ_আইডি (বিদেশী কী)। তবে এখন আপনার মতো কিছু রয়েছে:
| আইডি | a_id | সি_আইডি |
| 1 | 5 | 20 |
| 2 | 5 | 12 |
| 3 | 5 | 2 |
আরও ভাল সমাধানের মধ্যে একটি প্রাথমিক কী রয়েছে যা 2 টি কলাম দিয়ে তৈরি।
| a_id | সি_আইডি |
| 5 | 20 |
| 5 | 12 |
| 5 | 2 |
এটি করে সম্পাদন করা যেতে পারে:
create table articles_categories (
article_id bigint,
category_id bigint,
primary key (article_id, category_id)
) engine=InnoDB;
একটি অটো ইনক্রিমেন্ট পূর্ণসংখ্যার ব্যবহার না করার আরেকটি কারণ হ'ল যদি আপনি আপনার প্রাথমিক কীটির জন্য ইউআইডি ব্যবহার করছেন।
ইউআইডিগুলি তাদের সংজ্ঞা অনুসারে অনন্য, যা অনন্য পূর্ণসংখ্যার ব্যবহারের মতো একই কাজ সম্পাদন করে। পূর্ণসংখ্যার তুলনায় তাদের নিজস্ব যুক্ত সুবিধা (এবং কনস) রয়েছে। উদাহরণস্বরূপ, একটি ইউইউডি সহ, আপনি জানেন যে অনন্য স্ট্রিং আপনি নির্দিষ্ট ডেটা রেকর্ডের দিকে নির্দেশ করছেন; আপনার ক্ষেত্রে 1 টি কেন্দ্রীয় ডাটাবেস নেই বা যেখানে অ্যাপ্লিকেশনগুলিতে অফলাইনে ডেটা রেকর্ড তৈরি করার ক্ষমতা রয়েছে সে ক্ষেত্রে এটি কার্যকর হয় (তারপরে পরবর্তী সময়ে এগুলি ডাটাবেসে আপলোড করুন)।
শেষ অবধি, আপনাকে প্রাথমিক কীগুলি জিনিস হিসাবে ভাবার দরকার নেই। তারা তাদের যে কার্য সম্পাদন করে সে হিসাবে আপনাকে তাদের ভাবতে হবে। আপনার প্রাথমিক কী কী দরকার? ভবিষ্যতে কোনও পরিবর্তন হবে না এমন ক্ষেত্রটি ব্যবহার করে একটি সারণী থেকে ডেটাগুলির নির্দিষ্ট সেটগুলি অনন্যভাবে সনাক্ত করতে সক্ষম হতে। এটি id
করার জন্য আপনার কি কোনও বিশেষ কলামের প্রয়োজন আছে , বা আপনি এই অনন্য পরিচয়টিকে অন্যান্য (অপরিবর্তনীয়) ডেটা থেকে বেজ করতে পারেন?