সারণীর নামকরণ: অ্যান্ডস্কোর বনাম ক্যামেলকেস? নামস্থান? একবচন বনাম বহুবচন?


91

আমি 'সেরা' সন্ধানের চেষ্টা করে স্ট্যাকওভারফ্লোতে বেশ কয়েকটি প্রশ্ন / উত্তর পড়ছি, বা কোনও ডেটাবেজে টেবিলের নাম রাখতে আমার অবশ্যই গ্রহণযোগ্য উপায় বলতে হবে।

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

আমি এখন পর্যন্ত যেভাবে টেবিলগুলির নামকরণ করে আসছি তা এরকম কিছু করছে:

doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents 

আমি যে বিষয়গুলি উদ্বিগ্ন তা হ'ল:

  • যোগ্যতা
  • সারণীটি মডিউলটির দ্রুত সনাক্তকরণ হ'ল (চিকিত্সকগণ || রোগী)
  • বিভ্রান্তি রোধ করার জন্য, বুঝতে সহজ।

নামকরণের সম্মেলনে আমি যে কোনও মতামত পড়তে চাই। ধন্যবাদ.

উত্তর:


183

আপনি কোন বিশেষ প্রকল্পটি ব্যবহার করছেন তার চেয়ে সামঞ্জস্যপূর্ণ হওয়া অনেক বেশি গুরুত্বপূর্ণ।


21
অন্য কথায়, হ্যাঁ, ভাল হয়েছে, আপনি কিছু ধারাবাহিক স্কিম সনাক্ত করেছেন। সাথে পেতে!
ফিল এইচ

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

4
টেবিলের নামগুলির জন্য পাস্কল / উটের ক্ষেত্রে কিছু সমস্যা হতে পারে। প্রতিটি টেবিলের ফাইল সিস্টেমে একটি ফাইল থাকবে এবং তাদের কয়েকটি কেস-সংবেদনশীল (যেমন ওএসএক্স)।
ismriv

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

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

23

আমি সাধারণত পাস্কেলকেস ব্যবহার করি এবং সত্ত্বাগুলি একক হয়:

DoctorMain
DoctorProfile
DoctorPatient

এটি আমার অ্যাপ্লিকেশনটিতে ক্লাসের নামকরণ কনভেনশনগুলির নকল করে সবকিছুকে খুব সুন্দর, পরিষ্কার, ধারাবাহিক এবং প্রত্যেকের জন্য বোঝার জন্য সহজ রাখে।


4
হ্যা, হ্যা, আমি করি. আমি আজ সকালে একটু কুয়াশাচ্ছন্ন। সম্পাদনা করা হচ্ছে ... ধন্যবাদ
জাস্টিন নিসনার 14

4
এটি "ক্যাপিটাল কেস" নামেও পরিচিত।
কর্সিকা

4
আমার ৩০ বছরের অভিজ্ঞতায় আমি কখনই এটি "ক্যাপিটাল কেস" নামে শুনিনি। আমি শুনেছি এটি "উটের কেস" হিসাবে সর্বাধিক এবং "পাস্কাল কেস" সম্প্রতি নেওয়া হয়েছে। আমি এখানে এসেছি লোকেরা কেন এসকিউএল-এর জন্য উটের মামলা ব্যবহার করছে বলে মনে হচ্ছে যখন এটি বেশিরভাগ ক্ষেত্রে caseতিহাসিকভাবে সংবেদনশীল ছিল না। আমি অবশ্যই সময়ের পিছনে পড়তে চাই না।
সিনথিয়া ভি

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

@ সিনটিভিও অকেজো মন্তব্য হিসাবে এটি সত্য এসও প্রশ্নের প্রসঙ্গে হতে পারে, প্যাসকেলকেসটি উটকেসের মতো নয়। প্যাসকেল কেস প্রতিটি শব্দের প্রথম অক্ষরকে (মূলত প্রথম সহ) বড় করে তোলে যেখানে উটকেস কেবল প্রথমটির পরে শব্দের মূলধন করে। আরও পঠন: माध्यम.com
কুরিউসার

11

এসকিউএল কেস সংবেদনশীল প্রকৃতি সমর্থন করে Underscores_Scheme। আধুনিক সফ্টওয়্যার যাইহোক নামকরণ যেকোন ধরণের সমর্থন করে। তবে কখনও কখনও কিছু কদর্য বাগ, ত্রুটি বা মানবিক কারণের ফলে UPPERCASINGEVERYTHINGসেগুলি, যারা উভয়ই বেছে নিয়েছিল Pascal_Caseএবং Underscore_Caseতাদের সমস্ত স্নায়ুগুলি ভাল জায়গায় বাস করতে পারে live


10

উপরোক্ত বেশিরভাগের সমষ্টি:

  • ডাটাবেসে কেস উপর নির্ভর করবেন না
  • কেবলমাত্র শব্দ - কেস বা বিভাজক অংশ বিবেচনা করবেন না
  • যে কোনও বিভাজনকারী বা কেস আপনার ভাষার মান হিসাবে ব্যবহার করুন

তারপরে আপনি পরিবেশের মধ্যে সহজেই (এমনকি স্বয়ংক্রিয়ভাবে) নামগুলি অনুবাদ করতে পারেন।

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


8

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


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

8

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

/ [a-z _] [a-z0-9 _] * / হ'ল নামগুলির একমাত্র প্যাটার্ন যা বিভিন্ন প্ল্যাটফর্মের মধ্যে নির্বিঘ্নে অনুবাদ করে। ছোট হাতের আলফা-সংখ্যাযুক্ত + আন্ডারস্কোর সর্বদা ধারাবাহিকভাবে কাজ করবে।

অন্যত্র উল্লেখ করা হয়েছে, সম্পর্ক (টেবিল) জন ব্যক্তির নাম একবচন হওয়া উচিত: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html


আমি সম্মত হই - বিশেষত যখন আপনি মডেলগুলি, ডিটিও এবং শেষের দিকে ফ্রন্ট্যান্ডে ভ্রমণের নামকরণ করেন।
সাওলিয়াস

6

আমি সেই লোকদের সাথে একমত হতে চাইছি যারা বলে যে এটি আপনি যে ভাষাটি ব্যবহার করছেন (তার উদাহরণস্বরূপ C # এর জন্য পাস্কেলকেস এবং রুবির জন্য স্ন্প কেস) ব্যবহার করছেন on

যদিও কখনও উটকেস না।


4
অ্যাডা: পাস্কেল_ক্যাস_উইথ_উইনডোরসোর্স
uetoyo

7
আপনি যখন নামকরণের বিভিন্ন কনভেনশন রয়েছে এমন দুটি আলাদা ভাষায় একই টেবিলটি অ্যাক্সেস করতে চান তখন এটির কোনও অর্থ হয় না।
ড্যানিয়েল ডাব্লু।

5

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


4
সম্পূর্ণভাবে একমত!!! বিশেষ করে মাইএসকিউএল যখন আপনি Windows সবকিছু থেকে পরিণত তে এটি চালানোর camelCaseজন্য camelcase। সুতরাং সাপের কেস হওয়া অনেক ভাল। এছাড়াও আপনার সম্পর্কে Modern software however supports any kind of naming schemeকোনও গ্যারান্টি নেই যা হও সর্বশেষ সংস্করণের জন্য নরম কোড লিখবে। বিশেষত ডাটাবেসের জন্য - আপনি যখন রিগ্রেশন ব্যয়ের বিষয়ে চিন্তা করেন তখন সংস্করণ আপডেট তুচ্ছ নয়।
চেরি

2

এই আমার পাঁচ সেন্ট। আমি এই সিদ্ধান্তে পৌঁছেছি যে যদি কোনও প্রকল্পের জন্য বিভিন্ন বিক্রেতা থেকে ডিবি ব্যবহার করা হয় তবে দুটি সেরা উপায় আছে:

  1. আন্ডারস্কোর ব্যবহার করুন।
  2. উদ্ধৃতি সহ উটের কেস ব্যবহার করুন।

কারণটি হ'ল কিছু ডাটাবেস সমস্ত অক্ষরকে বড় হাতের এবং কিছুকে ছোট হাতের কাছে রূপান্তর করে। সুতরাং, যদি আপনি myTableএটা হয়ে যাবে MYTABLEবা mytableযখন আপনি ডিবি সঙ্গে কাজ করবে।


1

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


1

শব্দগুলি কীভাবে পৃথক করা যায় তার বিস্তৃত পরিবর্তনশীলতা রয়েছে, তাই আপনাকে যা পছন্দ করতে হবে তা বেছে নিতে হবে; তবে একই সাথে, এটি টেবিলের নামটি একবাক্য হওয়া উচিত বলে conকমত্যের কাছাকাছি বলে মনে হচ্ছে।


1

নামকরণ কনভেনশন একটি ভাষার ক্ষেত্রের মধ্যে বিদ্যমান এবং বিভিন্ন ভাষার নামকরণের বিভিন্ন কনভেনশন রয়েছে।

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

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

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