কোনও টাইপ ফিল্ডের জন্য INT বা CHAR


19

কোনও টেবিলের জন্য সেরা নকশা কী, কোন Typeক্ষেত্রটি intবা এর char(1)? অন্য কথায়, এই স্কিমা দেওয়া:

create table Car
(
    Name varchar(100) not null,
    Description varchar(100) not null,
    VehType .... not null
)

এটি আরও দক্ষ (পারফরম্যান্স বুদ্ধিমান) হওয়ার জন্য বা একটি VehTypeহতে পারে ? বলুন যে আপনার কাছে পাঁচ ধরণের গাড়ি রয়েছে, আপনার কি ধরণের মান (- 'ভি', 'এস', 'সি', 'টি', 'এম') জন্য 0 -> 4 বা ইনক্রিমেন্টিং মানগুলি ব্যবহার করা উচিত?intchar(1)

যদি এটি এর চেয়ে বেশি হয় তবে আমি একটি পৃথক টাইপ টেবিল ব্যবহার করতাম এবং একটি বিদেশী কী সম্পর্ক রাখতাম তবে আমি এর প্রয়োজন দেখছি না।

আমি লক্ষ্য করেছি যে sys.objectsক্যাটালগ ভিউ typeক্ষেত্রের জন্য একটি অক্ষর ব্যবহার করে । এর কোন কারণ আছে কি? আমি কি এখানে কেবল পাতলা বাতাসে দখল করছি এবং আমি যা কিছু বেশি স্বাচ্ছন্দ্য বোধ করছি তা কি এটি?

উত্তর:


20

আপনি সাধারণত টিনিনেন্ট ব্যবহার করেন যা 1 বাইটও

  • চর (1) কিছুটা ধীর হবে কারণ তুলনা কল্যাণ ব্যবহার করে col

  • বিভ্রান্তি: এস কী: এসইউভি বা সেলুন বা সেদন বা ক্রীড়া?

  • আপনি আরও প্রকার যুক্ত করার সাথে সাথে একটি চিঠি ব্যবহার আপনাকে সীমাবদ্ধ করে। শেষ পয়েন্ট দেখুন।

  • প্রতিটি সিস্টেমে আমি দেখেছি আরও এক ক্লায়েন্ট যেমন রিপোর্টিং। ভি, এসকে "ভ্যান", "এসইউভি" ইত্যাদিতে পরিবর্তনের যুক্তিটির পুনরাবৃত্তি প্রয়োজন। একটি সন্ধানের টেবিলটি ব্যবহার করার অর্থ এটি একটি সরল জয়েন

  • সম্প্রসারণযোগ্যতা: " ফ্লাইং কার " এর জন্য আরও একটি প্রকার ("এফ" ) যুক্ত করুন আপনি এক সারি একটি সন্ধানের টেবিলটিতে রাখতে পারেন বা প্রচুর কোড এবং সীমাবদ্ধতা পরিবর্তন করতে পারেন। এবং আপনার ক্লায়েন্ট কোডও কারণ এটি ভি, এস, এফ ইত্যাদি কী তা জানতে হবে

  • রক্ষণাবেক্ষণ: যুক্তি 3 জায়গায় রয়েছে: ডাটাবেস সীমাবদ্ধতা, ডাটাবেস কোড এবং ক্লায়েন্ট কোড। অনুসন্ধান এবং বিদেশী কী সহ এটি এক জায়গায় থাকতে পারে

একক অক্ষর ব্যবহারের অতিরিক্ত দিক ... এর, কোনও দেখতে পাবেন না

দ্রষ্টব্য: এনামস সম্পর্কিত একটি মাইএসকিউএল প্রশ্ন রয়েছে । সুপারিশটি হ'ল সেখানেও একটি লুকিং টেবিল ব্যবহার করা উচিত।


2
দুর্দান্ত পয়েন্ট এটি আমাকে অবাক করে তোলে যে অন্যরা কেন চর (1) ব্যবহার করে (যেমন সিস্ট.অবজেক্টস)।
টমাস স্ট্রিংগার

2
sys.objects একটি লিগ্যাসি সাইবেস এবং SQL সার্ভার প্রাথমিক ভার্সন ফিরে যাচ্ছে হয়েছে en.wikipedia.org/wiki/Microsoft_SQL_Server#Genesis কিন্তু কম সুতরাং নতুন DMVs মধ্যে: যদি আপনি তাকান সিস্টেম বস্তু তুমি কি ID- র সর্বাঙ্গে কোড দেখতে পারেন। এমএস বাদে অন্য লোকের কথা কি? আরডিবিএমএস ভাবেন এবং ওও / এনামগুলি নয় এবং লুপআপগুলি ব্যবহার করা বোধগম্য।
gbn

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

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

1
@ মাইকেলKjörling: সঠিক, যদি এটি কেবল একটি চাবি ছিল। তবে ওপি এর অর্থ "ভি" বা "এস" এর মতো কিছু বোঝাতে চায়। দ্রষ্টব্য, আমরা মুদ্রার কোডগুলির মতো স্ব-বর্ণনার এবং সম্পূর্ণ প্রাকৃতিক কীগুলি (EUR, USD, GBP, CHF ইত্যাদি) সম্পর্কে নেই are
gbn

3

দুর্দান্ত জিবিএন এর উত্তরের পরিপূরক হিসাবে ।

হতে পারে আপনি এরকম কিছু তৈরি করতে পারেন:

create table dbo.VehicleType
(
    VehicleTypeId int not null primary key,
    Name varchar(50) not null,
    Code char(3) null
) 
go 

create table Car
(
    Name varchar(100) not null,
    Description varchar(100) not null,
    VehTypeId int not null ,
    foreign key FKTypeOfCar(VehTypeId) referenctes dbo.VehicleType (VehicleTypeId) 
)
go 

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


আপনি একটি nullকোড অনুমতি দেওয়ার মানে ?
জ্যাক ডগলাস

হ্যাঁ, কোডটি এমন কোনও যানবাহনের ধরণের প্রতিনিধিত্ব করার অনুমতি দেওয়ার জন্য optionচ্ছিক যা এখনও কোডিং নয়।
Fabricio Araujo

লোকেরা মন্তব্য মুছে ফেলতে কেন পছন্দ করেন? বেশ বিরক্তিকর।
Fabricio Araujo

@ ফ্যাব্রিকিওআরাউজো - যদি কোনও মন্তব্য অপ্রচলিত হয় (যেমন "আমি আমার উত্তরে এটি সম্পাদনা করব" এবং তারপরে আপনি আসলে তা করেন) তবে সেই মন্তব্যগুলি পরিষ্কার করা ভাল যা আর ব্যবহার হয় না।
নিক চ্যামাস

1
আমি আপনার টাইপ টেবিলটিতে একটি "অ-শ্রেণিবদ্ধ" প্রকার যুক্ত করার এবং বিদেশী কী ক্ষেত্রে কোনও নাল মানকে ছাড়িয়ে দেওয়ার পরিবর্তে আপনার VehTypeId ফিল্ডের ডিফল্ট মানকে অ শ্রেণিবদ্ধ মান তৈরি করার পরামর্শ দেব। "নাল" একটি বৈধ ব্যবসায়ের অর্থ থাকতে পারে এটি সাধারণত খারাপ অভ্যাস।
মাইকেল ব্ল্যাকবার্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.