মাইএসকিউএলের নামকরণের কোন কনভেনশন রয়েছে?


163

আমি এটি কীভাবে করব তা এখানে:

  1. ছক নাম ছোট হাতের আলাদা কথা ব্যবহারসমূহ আন্ডারস্কোর, এবং হয় একবচন (যেমন foo, foo_barইত্যাদি
  2. আমার সাধারণত (সবসময় নয়) একটি অটো ইনক্রিমেন্ট পিকে থাকে। : আমি নিম্নলিখিত সম্মেলন ব্যবহার tablename_id(যেমন foo_id, foo_bar_id, ইত্যাদি)।
  3. যখন কোনও টেবিলটিতে একটি কলাম থাকে যা একটি বিদেশী কী থাকে, আমি যে কী টেবিল থেকে এসেছি তা থেকে কেবল সেই কীটির কলামের নামটি অনুলিপি করি। উদাহরণস্বরূপ, টেবিলের foo_barএফকে রয়েছে foo_id(যেখানে foo_idএর পিকে রয়েছে foo)।
  4. রেফারেন্সিয়াল অখণ্ডতা প্রয়োগের জন্য এফকে সংজ্ঞায়িত করার সময়, আমি নিম্নলিখিতগুলি ব্যবহার করি: tablename_fk_columnname(উদাহরণস্বরূপ, উদাহরণস্বরূপ 3, এটি হবে foo_bar_foo_id)। যেহেতু এটি একটি টেবিলের নাম / কলামের নামের সংমিশ্রণ, তাই এটি ডাটাবেসের মধ্যে অনন্য হওয়ার নিশ্চয়তা দেওয়া হয়।
  5. আমি এই জাতীয় কলামগুলি অর্ডার করছি: পিকে, এফকে, তারপরে বাকী কলামগুলি বর্ণানুক্রমিক

এটি করার জন্য আরও ভাল, আরও মানক উপায় আছে?


6
অটো ইনক্রিমেন্ট পিকে কেবল "আইডি" ব্যবহার করা কি ভুল? কেন? কলামটির নামটির কেবল সারণির প্রসঙ্গে অর্থ রয়েছে। সুতরাং প্রতি টেবিলে আমার একটি "আইডি" রয়েছে এবং এফকে জন্য অনেক আইডি_ <টেবিল_নাম> থাকতে পারে।
জেডবিজেক

3
@ জেডবাইজেক আমি মনে করি এর বিরুদ্ধে সবচেয়ে সহজ কারণটি কেবল ধারাবাহিকতা / সরলতার জন্য। নাহলে id_tableB=> ওহ ভিন্ন-নামযুক্ত কলাম না থাকলে id , id_tableB=> এর ধারাবাহিকতা id_tableBকেবল আরও সুগঠিত দেখাচ্ছে ... বা ওপি যেমন এটি করে: foo_id=> foo_idবরং foo_id=>id
ডন চ্যাডল

উত্তর:


106

আমি এটি প্রথম এবং সর্বাগ্রে বলব: সামঞ্জস্যপূর্ণ থাকুন।

আমি মনে করি আপনি আপনার সম্মেলনে যে সম্মেলনগুলি উল্লেখ করেছেন সেগুলি নিয়ে আপনি প্রায় উপস্থিত আছেন। বেশ কয়েকটি মন্তব্য যদিও:

পয়েন্ট 1 এবং 2 ভাল আমি গণনা করি।

পয়েন্ট 3 - দু: খজনকভাবে এটি সবসময় সম্ভব হয় না। আপনি কীভাবে একটি একক টেবিলের foo_barসাথে কলাম করতে পারবেন সে বিষয়ে কলাম foo_idএবং another_foo_idদুটি fooটেবিলের রেফারেন্সই রয়েছেfoo_id কলামের । আপনি কীভাবে এটি মোকাবেলা করবেন তা বিবেচনা করতে চাইতে পারেন। এটি যদিও কিছুটা কর্নারের কেস!

পয়েন্ট 4 - পয়েন্ট 3 এর অনুরূপ আপনি একাধিক রেফারেন্সিং কলাম রাখার জন্য বিদেশী কী নামের শেষে একটি নম্বর প্রবর্তন করতে চাইতে পারেন।

পয়েন্ট 5 - আমি এড়াতে চাই। এটি আপনাকে সামান্য সরবরাহ করে এবং আপনি যখন পরে কোনও টেবিলে কলামগুলি যুক্ত করতে বা সরাতে চান তখন মাথা ব্যাথা হয়ে উঠবে।

অন্য কয়েকটি বিষয় হ'ল:

সূচকের নামকরণ কনভেনশনসমূহ

আপনি সূচকগুলির জন্য একটি নামকরণের সম্মেলন প্রবর্তন করতে ইচ্ছুক হতে পারেন - এটি কোনও ডাটাবেস মেটাডেটা কাজের জন্য আপনি সম্ভবত পরিচালনা করতে চান এটি একটি দুর্দান্ত সাহায্য। উদাহরণস্বরূপ আপনি কেবল একটি সূচক foo_bar_idx1বা কল করতে চাইতে পারেনfoo_idx1 - পুরোপুরি আপনার উপর কিন্তু বিবেচনার জন্য।

একবচন বনাম বহুবচন কলামের নাম

আপনার কলামের নামগুলির পাশাপাশি আপনার টেবিলের নাম (গুলি) এর বহুবচন বনাম একক এর কাঁটাংশ সমস্যাটি সমাধান করা ভাল ধারণা হতে পারে। এই বিষয়টি প্রায়শই ডিবি সম্প্রদায়ের মধ্যে বড় বিতর্ক সৃষ্টি করে। আমি টেবিলের নাম এবং কলাম উভয়ের জন্য একক ফর্মের সাথে লেগে থাকি। সেখানে। আমি এটা বলেছি।

এখানে মূল জিনিস অবশ্যই ধারাবাহিকতা!


পয়েন্ট 5 এর চেয়ে ভাল কি হবে? কেন এটি মাথা ব্যথা হতে পারে?
রাসু

7
অনুসরণ করার জন্য, আমি যারা এখানে পরে আসবে তাদের জন্য আমি এই ভার্চিকে সহায়ক বলে মনে করেছি: লঞ্চবাইলঞ্চ.com
2014/

1
আমার টেবিলগুলির নামকরণের জন্য একটি ভাল "স্কিম" খুঁজে পেতে আমার সমস্যা হচ্ছে যা দুটি নাম (ডকুমেন্টচ্যাটার, ডকুমেন্ট ভার্শন, ডকুমেন্ট টাইপ ইত্যাদি) নিয়ে গঠিত মডেলের অবজেক্টগুলিকে ধারণ করে। ডকুমেন্টটাইপের জন্য উদাহরণস্বরূপ আমি এটির নাম রাখতে পারি documenttypeবা document_type। আমি পরেরটিরটিকে পছন্দ করব তবে বেশিরভাগ সময় আমার অনেকের মধ্যে অনেক বেশি সম্পর্ক থাকে এবং আমার মতো দেখতে একটি টেবিলের দরকার হয় document_document_type। এই পরিচালনা করতে কোন পরামর্শ?
লেক্সিথ

@ আরএসবি ২০৯ Re উত্তর: পয়েন্ট ৫ - একটি কলাম যুক্ত করার পরে (শেষে) আদেশটি অবৈধ হতে পারে। আপনার কোনও বাধা যুক্ত করা উচিত নয় যা কলামগুলিকে পুনরায় অর্ডার করার প্রয়োজন হিসাবে এটি একটি অপ্রয়োজনীয় ওভারহেড।
শেপার্ড

21

ধারাবাহিকতা হ'ল যে কোনও নামকরণের মান। যতক্ষণ না এটি যৌক্তিক এবং ধারাবাহিক, আপনি সেখানে 99%।

মানকটি নিজেই অনেক বেশি ব্যক্তিগত পছন্দ - সুতরাং আপনি যদি নিজের মান পছন্দ করেন তবে এটি দিয়ে চালান।

আপনার প্রশ্নের সরাসরি উত্তর দেওয়ার জন্য - না, মাইএসকিউএলের পছন্দের নামকরণের কনভেনশন / মান নেই, তাই আপনার নিজের ঘূর্ণায়মান ভাল (এবং আপনার মনে হয় যৌক্তিক মনে হয়)।


8

মাইএসকিউএলে তাদের কম-বেশি কঠোর নিয়মের একটি সংক্ষিপ্ত বিবরণ রয়েছে:

https://dev.mysql.com/doc/internals/en/coding-style.html

মাইএসকিউএল এর সর্বাধিক সাধারণ কোডিংস্টাইল সাইমন হলভিওয়েল দ্বারা লিখেছেন:

http://www.sqlstyle.guide/

এই প্রশ্নটিও দেখুন: এসকিউএল-এর জন্য কি কোনও প্রকাশিত কোডিং শৈলীর নির্দেশিকা রয়েছে?


4

ধন্যবাদ, পিএইচপি বিকাশকারীরা আমার পরিচিত কয়েকটি উন্নয়ন সম্প্রদায়ের মতো "উট কেস বিগোটস" নন।

আপনার সম্মেলনগুলি ভাল লাগছে।

এতক্ষণ তারা ক) সহজ, এবং খ) ধারাবাহিক - আমি কোনও সমস্যা দেখছি না :)

পিএস: ব্যক্তিগতভাবে, আমি মনে করি 5) ওভারকিল ...


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

@ মওয়ান: আপনি কোন আরডিবিএমএস নির্দিষ্ট করতে পারবেন '? এবং আমি নিজেই একটি উট-কেস জকি। ক্যাপসগুলি আমার স্কিমাতে কেবলমাত্র একটি উদ্দেশ্য পরিবেশন করে, যোগ সারণিগুলি নির্দেশ করে এবং (ক্ষেত্রের ক্ষেত্রে) শব্দের সীমা নির্দেশ করে, যাতে _ _ কেবলমাত্র অন্য টেবিল_আইডি (যেমন টেবিলের নাম = অন্যান্য স্তর এবং ক্ষেত্রটি = সেই টেবিলের = আইডিতে নির্দেশ করতে পারে) )। এ ছাড়া, অন্য আরডিবিএমএস যদি সংবেদনশীল হয় তবে আসলে কী ব্যাপার? আমি কখনই একই টেবিলের একটি উপরের এবং ছোট হাতের সংস্করণ আহাচ্ছি না! ওহ, এবং আমি কেস-সংবেদনশীল আরডিবিএমএসকে পছন্দ করব না - আমি বরং সামঞ্জস্যপূর্ণ কোড লিখব
স্যামুয়েল ফুলম্যান

7
আমি মাইএসকিউএল ব্যবহারকারীদের ক্যামেলকেস অপছন্দ করে এবং আমরা যে পণ্য ব্যবহার করি তার নাম পছন্দ করি: মাইএসকিউএল, ক্যামেলকেসে লেখা
DBX12

1
@ ডিবিএক্স 12 পেডেন্টিক হওয়ার জন্য, এটি প্যাসকালকেস, উটকেস নয়, তবে আপনার পয়েন্ট এখনও দাঁড়িয়ে আছে।
মারেডচিজ

@ মাররেডচিজ কখনই এ সম্পর্কে ভাবেন নি, তবে আপনি ঠিক বলেছেন। শুরুতে উটকেসের কোনও কুঁচক দেওয়া উচিত নয়।
DBX12

1

সহজ উত্তর: না

ভাল, কমপক্ষে ওরাকল বা সম্প্রদায় দ্বারা উত্সাহিত হিসাবে একটি নামকরণ কনভেনশন, না, তবে মূলত আপনাকে মাইএসকিউএল ডকুমেন্টেশনে নির্দেশিত যেমন সনাক্তকারীদের জন্য নিয়ম এবং সীমা অনুসরণ করার বিষয়ে সচেতন হতে হবে: https://dev.mysql.com /doc/refman/8.0/en/identifiers.html

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

ব্যক্তিগত অভিজ্ঞতা দ্বারা, আমি এটিকে পুনরায় বলব:

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

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

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