কাস্টম ডেটা টাইপের মতো জিনিস আছে কি?


14

মাইএসকিউএল এর কাস্টম ডেটা ধরণের জন্য কোনও সমর্থন আছে? উদাহরণস্বরূপ, জিপ কোডগুলি কোনও varchar(10)ক্ষেত্রে সংরক্ষণ করা যেতে পারে তবে এগুলিতে একটি intফাঁকা বিকল্পের সাথে এবং একটি পতাকা এটি 5 ডিজিট বা 5 + 4 অঙ্কের জিপ কোড কিনা তাতে সংযোগ করা যেতে পারে ।

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

কাস্টম ফাংশন ব্যবহার করা যেতে পারে (উদাহরণস্বরূপ, এখানে INET_ATONআইপিভি 4 অ্যাড্রেসগুলির জন্য একটি বিল্ট ইন ফাংশন রয়েছে But তবে এটি zip LIKE '12345%'সঠিকভাবে সূচিযুক্ত হওয়া উচিত এমন জিনিসগুলির জন্য অনুমতি দেয় না custom কাস্টম ডেটা ধরণের জন্য একটি লিখিত সমর্থন একটি ডেটা টাইপ চিহ্নিত করার অনুমতি দেয় বাছাইযোগ্য হিসাবে। সুতরাং কমপ্যাক্ট zip int, বাছাই করা হয়, ঠিক যেমন এটি একটি হিসাবে সাজান zip varchar(10)

এটি কলামটি স্থির প্রস্থের অনুমতি দেবে, এটি 6 বা 10 বাইট ভেরিয়েবল স্টোরেজটিকে নির্দিষ্ট প্রস্থের 4 বাইতে কাটতে দেবে।

বেশ কয়েকটি প্রয়োগযোগ্য ব্যবহার রয়েছে are

  • জিপ কোডস
  • IPv6 ঠিকানা
  • মিনিট স্তরের নির্ভুলতা এবং এর 2038চেয়ে কম স্টোরেজ ব্যবহারের তুলনায় ক্ষমতা সহ কাস্টম টাইমস্ট্যাম্প ক্ষেত্রগুলি datetime, তবে প্রয়োগের বছরের আগে তারিখগুলি সমর্থন করার দরকার নেই (বলুন যে সেগুলি সিস্টেমের সবচেয়ে পুরনো তারিখগুলি হলে মিন 2007 হতে পারে)
  • টাইমস্ট্যাম্পগুলি যা ডিএসটি বাস্তবায়িত করে (যা বিদ্যমান বলে মনে হয় না )
  • দুটি অক্ষর মার্কিন রাষ্ট্র একটি একক বাইটে সংরক্ষণ করা যেতে পারে
  • লম্বা ENUMগুলি একটি কাস্টম ডেটা ধরণে পৃথক করা যায় যাতে DESCRIBEএর আউটপুটটি সমস্ত মোড়কের সাথে দেখতে এত অগোছালো না হয়।

আমি আশা করি যে ডেটা টাইপ হ্যান্ডলারগুলি ফাংশনগুলি যেভাবে সংরক্ষণ করা হয় তার অনুরূপ সংরক্ষণ করা হবে।

কোনও ডাটাবেস ইঞ্জিনে দূরবর্তীভাবে এমন কিছু আছে কি? আমি বেশিরভাগ মাইএসকিউএল ব্যবহার করি, তবে আমি যদি আগ্রহী তখনও যদি এটি প্রয়োগ করা হয়, তবে অ্যাপ্লিকেশনটিকে ফাংশনের মতো একটি ফাংশন কল করতে কম INET_ATON

এমএস এসকিউএল এর কাছে প্রকৃতির কিছু আছে বলে মনে হয় তবে এটি কেবল একটি প্রতিশব্দের চেয়ে বেশি কিনা তা আমি জানতে চাই। (উদাহরণস্বরূপ , বা একটি বা বা বা এর জন্য booleanপ্রতিশব্দ হতে পারে ) প্রতিশব্দ আমি এখানে জিজ্ঞাসা করছি না হয়।tinyint(1)postal_codecharvarchar (5910)


মাইএসকিএল এর সহজ উত্তর আফাইক: না। অন্যান্য আরডিবিএমএস কীভাবে এই জিনিসগুলি পরিচালনা করে তা দেখতে আকর্ষণীয় হবে
ডেরেক ডোনাই

@ ডিস্টেস্ট: আপনার এসকিউএল সার্ভারে টাইপ তৈরি করুন: সিএলআর টাইপগুলির জন্য এখন দরকারী। msdn.microsoft.com/en-us/library/ms175007(SQL.90).aspx
gbn

1
@George বেইলি: আপনার SQL সার্ভার লিংক তারিখ সীমার বাইরে: এটি SQL সার্ভার 2000 জন্য এবং জন্য মাইএসকিউএল দেখতে stackoverflow.com/q/2451435/27535
gbn

@gbn, (প্রথম মন্তব্যে প্রতিক্রিয়া) টাইপ অনুবাদ অন্তর্ভুক্ত করা হয়েছে, এটা উদাহরণস্বরূপ রূপান্তর করবে একটি IPv6একটি মধ্যে binary(16), অথবা (যার জন্য ব্যবহার করা যেতে পারে এটা এলিয়াসিং সীমাবদ্ধ হয় stateগুলি হয়ে enumগুলি)
ব্রায়ান ফিল্ড

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

উত্তর:


14

মাইএসকিউএল এর কাস্টম ডেটা ধরণের জন্য কোনও সমর্থন আছে?

সহজ উত্তর: না

কোনও ডাটাবেস ইঞ্জিনে দূরবর্তীভাবে এমন কিছু আছে কি? আমি বেশিরভাগই মাইএসকিউএল ব্যবহার করি তবে আমি আগ্রহী যে যদি এটি কখনও প্রয়োগ করা হয় তবে অ্যাপ্লিকেশনটিকে INET_ATON ফাংশনের মতো কোনও ফাংশন করতে না পারা।

ওরাকল এর CREATE TYPEসদস্য ফাংশন এবং উত্তরাধিকার মত বৈশিষ্ট্য সহ একটি ওও বর্গের সাথে কিছুটা ডিগ্রির সাথে সাদৃশ্যপূর্ণ

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

এসকিউএল সার্ভারে রয়েছে CREATE TYPEযা আপনাকে বিদ্যমান সিস্টেমের ডেটা টাইপের ভিত্তিতে একটি কাস্টম ডেটা টাইপ তৈরি করতে দেয়। উদাহরণস্বরূপ আমি এমন একটি টাইপ তৈরি করতে পারি SSNযা মূলত সংজ্ঞায়িত VARCHAR(11)তবে এই ক্ষেত্রটি কত বড় তা আমাকে মনে রাখতে হবে না।


1
দয়া করে এই উত্তরটি সংযোজন করতে এবং সম্পাদনা করতে দ্বিধা বোধ করুন যাতে আমরা একটি নির্দিষ্ট রেফারেন্স পেতে পারি। আমি অনুভব করেছি যে প্রশ্নটি একটি সিডব্লিউ উত্তরকে
ndsণ

0

ফায়ারবার্ড এর ডোমেনগুলির মাধ্যমে সমাধানও করে ।

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

ডোমেনের ব্যবহারটি সারণী এবং দর্শনগুলির জন্য কলাম সংজ্ঞাতে সীমাবদ্ধ নয়। ডোমেনগুলি পিএসকিউএল কোডে ইনপুট এবং আউটপুট পরামিতি এবং ভেরিয়েবলগুলি ঘোষণার জন্য ব্যবহার করা যেতে পারে।


ফায়ারবার্ড মাইএসকিউএল?
অ্যান্টনি জেনোভেস

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