সাধারণ মাইএসকিউএল ক্ষেত্র এবং তাদের উপযুক্ত ডেটা প্রকার


111

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

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

সাধারণ ডাটাবেস ক্ষেত্রগুলির জন্য কোন ডেটাটাইপগুলি উপযুক্ত? ফোন নম্বর, ইমেল এবং ঠিকানা মত ক্ষেত্রগুলি?

উত্তর:


71

কেউ এর থেকে আরও ভাল উত্তর পোস্ট করতে চলেছে, তবে কেবল এই বিষয়টিই বলতে চেয়েছিল যে ব্যক্তিগতভাবে আমি কোনও ধরণের পূর্ণসংখ্যার ক্ষেত্রে কোনও ফোন নম্বর সংরক্ষণ করব না, মূলত:

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

যদিও সাধারণত, আমি প্রায় একচেটিয়াভাবে ব্যবহার করা হবে বলে মনে হচ্ছে:

  • আইএনটি বা অন্য আইডিকে উল্লেখ করে এমন কোনও কিছুর জন্য আইএনটি (11)
  • সময় স্ট্যাম্পের জন্য DATETIME
  • 255 টি অক্ষরের (পৃষ্ঠার শিরোনাম, নাম, ইত্যাদি) এর নিচে থাকা গ্যারান্টিযুক্ত কোনও কিছুর জন্য ভ্রচার (255)
  • আরও অনেক কিছুর জন্য পাঠ্য।

অবশ্যই ব্যতিক্রম আছে, তবে আমি দেখতে পাই যা বেশিরভাগ ইভেন্টের ঘটনাগুলি জুড়ে।


2
এছাড়াও, পূর্ণসংখ্যাগুলি কেবল 2 বিলিয়ন অবধি সমর্থন করে। এটি 2,000,000,000। আপনি যখন আন্তর্জাতিক কোড নম্বর সহ দেশের কোড সহ সম্পূর্ণরূপে সঞ্চয় করতে চান তখন যা সত্যই যথেষ্ট স্থান নয় space 655-405-4055 (6,554,054,055) এর মতো একটি নম্বর সংরক্ষণের জন্য আপনি কীভাবে পর্যাপ্ত জায়গা পেতে পারেন তা আমি দেখতে পাই না
Kibbee

29
প্লাস এটা ঠিক ভুল। আমার চেয়ে অনেক বেশি বুদ্ধিমান কেউ আমাকে বলেছিলেন যে আমি যখন এটি শুরু করছিলাম (ডেটাব্যাসিং দিয়ে) ঠিক কারণ কিছু সংখ্যার মতো মনে হচ্ছে এর অর্থ এটি নয় বা এরূপ হিসাবে দেখা উচিত ...
da5id

14
অন্ধভাবে ভারচার ব্যবহার করা (255) একটি খারাপ ধারণা। দৈর্ঘ্য অনুমান করার জন্য কমপক্ষে কিছু প্রাথমিক প্রচেষ্টা প্রয়োগ করুন।
মরগান টকার

4
@ মরগান টকার: এটি সর্বোত্তম অনুশীলন, ২৫৫ টি অক্ষরের নীচে যে কোনও কিছুই একই স্থান গ্রহণ করবে।
রাভেরেন

7
@ রাভেরেন: এটি স্টোরেজ ইঞ্জিন নির্দিষ্ট - এবং স্টোরেজ কেবলমাত্র ব্যয় নয়। তথ্য এবং অস্থায়ী টেবিলগুলি বাছাই করা (মেমরি ইঞ্জিন) নির্দিষ্ট পরিমাণ ব্যবহার করবে।
মরগান টকার

44

আমি ব্যবহার করি এমন কিছু সাধারণ ডেটাটাইপ এখানে দেওয়া হয়েছে (যদিও আমি কোনও প্রো এর চেয়ে বেশি নই):

| Column           | Data type     | Note
| ---------------- | ------------- | -------------------------------------
| id               | INTEGER       | AUTO_INCREMENT, UNSIGNED                                                          |  
| uuid             | CHAR(36)      | or CHAR(16) binary                                                                |  
| title            | VARCHAR(255)  |                                                                                   |  
| full name        | VARCHAR(70)   |                                                                                   |  
| gender           | TINYINT       | UNSIGNED                                                                          |  
| description      | TINYTEXT      | often may not be enough, use TEXT 
                                     instead          
| post body        | TEXT          |                                                                                   |  
| email            | VARCHAR(255)  |                                                                                   |  
| url              | VARCHAR(2083) | MySQL version < 5.0.3 - use TEXT                                                  |  
| salt             | CHAR(x)       | randomly generated string, usually of 
                                     fixed length (x)    
| digest (md5)     | CHAR(32)      |                                                                                   |  
| phone number     | VARCHAR(20)   |                                                                                   |  
| US zip code      | CHAR(5)       | Use CHAR(10) if you store extended 
                                     codes      
| US/Canada p.code | CHAR(6)       |                                                                                   |  
| file path        | VARCHAR(255)  |                                                                                   |  
| 5-star rating    | DECIMAL(3,2)  | UNSIGNED                                                                          |  
| price            | DECIMAL(10,2) | UNSIGNED                                                                          |  
| date (creation)  | DATE/DATETIME | usually displayed as initial date of 
                                     a post                                       |  
| date (tracking)  | TIMESTAMP     | can be used for tracking changes in a 
                                     post                                        |  
| tags, categories | TINYTEXT      | comma separated values *                                                          |  
| status           | TINYINT(1)    | 1  published, 0  unpublished,  You 
                                     can also use ENUM for human-readable 
                                     values
| json data        | JSON          | or LONGTEXT       


16

আমার অভিজ্ঞতা অনুসারে, প্রথম নাম / পদবি নামের ক্ষেত্রগুলি কমপক্ষে ৪৮ টি অক্ষর হওয়া উচিত - মালয়েশিয়া বা ভারতের মতো কিছু দেশগুলির নাম রয়েছে যা তাদের পুরো ফর্মের মধ্যে দীর্ঘ are

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

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


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

সঠিক ন্যূনতম আকারের স্ট্যাকওভারফ্লো.com
রোহিত বঙ্গ

@ আইম্রোহিতবাঙ্গা যখন আপনি সঠিকভাবে সংজ্ঞায়িত ডেটার জন্য সঠিক, নামগুলির VARCHAR(255)অর্থ বোঝায়।
স্ট্যাটিক্সন

9

যেহেতু আপনি একটি পরিবর্তনশীল দৈর্ঘ্যের (নাম, ইমেল ঠিকানা) এর ডেটা নিয়ে কাজ করছেন, তাই আপনি ভর্কচার ব্যবহার করতে চাইবেন। একটি VARCHAR ক্ষেত্রের দ্বারা নেওয়া স্থানের পরিমাণ [field length]+1 বাইট, সর্বোচ্চ দৈর্ঘ্য 255 অবধি, তাই আমি একটি নিখুঁত আকারের সন্ধানের চেষ্টা করার বিষয়ে খুব বেশি চিন্তা করব না। আপনি যেটি কল্পনা করতে চান তা দীর্ঘতম দৈর্ঘ্যের হতে পারে একবার দেখুন, তারপরে এটি দ্বিগুণ করুন এবং সেটাকে আপনার ভ্রচার সীমা হিসাবে সেট করুন। বলেছিল ...:

আমি সাধারণত ইমেল ক্ষেত্রগুলিকে ভিচারার (১০০) হিসাবে সেট করি - আমি এখনও এ থেকে কোনও সমস্যা নিয়ে আসিনি। নামগুলি আমি ভ্রচার (50) এ সেট করেছি।

অন্যরা যেমন বলেছে, ফোন নম্বর এবং জিপ / ডাক কোডগুলি আসলে সংখ্যার মান নয়, সেগুলি 0-9 (এবং কখনও কখনও আরও বেশি!) সংখ্যার স্ট্রিংগুলি থাকে এবং সুতরাং আপনার এগুলি একটি স্ট্রিং হিসাবে ধরা উচিত। VARCHAR (20) ভাল পর্যাপ্ত হওয়া উচিত।

মনে রাখবেন আপনি যদি ফোন নম্বরগুলি পূর্ণসংখ্যা হিসাবে সঞ্চয় করতে থাকেন তবে অনেকগুলি সিস্টেম ধরে নিতে পারে যে 0 দিয়ে শুরু হওয়া নম্বরটি একটি অষ্টাল (বেস 8) নম্বর! সুতরাং, পুরোপুরি বৈধ ফোন নম্বর "0731602412" দশমিক সংখ্যা "124192010" হিসাবে আপনার ডাটাবেসে প্রবেশ করবে!


1

আমি একই জিনিসটি করছি এবং আমি যা করেছি তা এখানে।

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

নেমআইডিআইএস কলামটি সমস্ত টেবিলের মধ্যে একটি ছোট হতে হবে কারণ আমি মোটামুটি নিশ্চিত যে আমি 32000 এর বেশি এন্ট্রি করব না। আপনি যা সঞ্চয় করতে চান তার উপর নির্ভর করে (জন্মদিন, মন্তব্যগুলি, ইমেলগুলি, সত্যিই দীর্ঘ নামগুলি) 20 থেকে 200 অবধি প্রায় সমস্ত কিছুই ভারচার (এন) is আপনি কী ধরণের জিনিস সংরক্ষণ করছেন তা নির্ভর করে এটি।

নম্বর টেবিলটি যেখানে আমি সেখান থেকে বিচ্যুত হই। আমি এটিকে নেমআইডি, ফোন #, কান্ট্রি কোড, এক্সটেনশন এবং ফোন টাইপ লেবেলযুক্ত পাঁচটি কলাম রাখতে সেট আপ করেছি। আমি ইতিমধ্যে নেমআইডি নিয়ে আলোচনা করেছি। ফোন # টি বার্চার (12) যাচাই বাধার সাথে কিছু দেখতে চাইছে: চেক করুন (ফোন # লাইক '[0-9] [0-9] [0-9] - [0-9] [0-9] [0 -9] - [0-9] [0-9] [0-9] [0-9] ')। এটি নিশ্চিত করে যে কেবলমাত্র আমি যা চাই তা এটি ডেটাবেসে পরিণত করে এবং ডেটা খুব সামঞ্জস্যপূর্ণ থাকে। এক্সটেনশন এবং দেশের কোডগুলিকে আমি nullable ছোটগুলি বলেছিলাম, তবে আপনি চাইলে সেগুলি ভার্চার হতে পারে। ফোন টাইপটি বারচর (20) হয় এবং এটি অনুসরণযোগ্য নয়।

আশাকরি এটা সাহায্য করবে!

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