ডোমেন করতে বা ডোমেনে না করা


15

এসকিউএল 92 এবং এসকিউএল 99 মান ডিডিএল কনস্ট্রাক্টসকে সংজ্ঞায়িত করে । সমস্ত ডাটাবেস এটি সমর্থন করে না, বা এর আলাদা নাম রয়েছে ( উদাহরণস্বরূপ, এসকিউএল সার্ভারের ব্যবহারকারী সংজ্ঞায়িত প্রকার রয়েছে )।CREATE DOMAIN

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

আমি জানতে চাই:

  • লোকেরা কি আসলে তাদের ডাটাবেস ডিজাইনে ডোমেন ব্যবহার করে?
  • কি পরিমাণ, যদি তাই হয়?
  • তারা কিভাবে দরকারী?
  • আপনি কোন সমস্যায় পড়েছেন?

আমি ভবিষ্যতে ডাটাবেস বিকাশে এগুলি ব্যবহারের বাস্তবতার মূল্যায়ন করার চেষ্টা করছি।


1
আমি এটিও জানতে চাই ... লোকেরা কী বলবে তা শুনতে আগ্রহী।
maple_shaft

উত্তর:


2

সচরাচর...

এটা নির্ভর করে

আপনার কি এমন একাধিক স্থানে ডোমেন সত্তা ব্যবহার করা হয়েছে যা স্থানীয়ভাবে সমর্থন করলে অন্যথায় যথেষ্ট প্রচেষ্টা এবং / অথবা অপ্রয়োজনীয় বাধা এবং আচরণের প্রয়োজন হয় ?

যদি তা হয় তবে ডোমেন দূরে। যদি না হয়, বিরক্ত করবেন না।

উপরের হিউরিস্টিকের উপর ভিত্তি করে এসকিউএল সার্ভারে ঠিক একবার ব্যবহারকারীর সংজ্ঞায়িত টাইপ তৈরি করা আমি প্রয়োজনীয় খুঁজে পেয়েছি। এটি আর কী ছিল তা আমার মনে নেই - তবে এটি এর চেয়ে বেশি কাজ বাঁচিয়েছিল।


5

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

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

সুতরাং, প্রায় 4 বছর প্রোগ্রামিংয়ের পরে এবং আমি মনে করতে পারি এমন সমস্ত টিম পরিদর্শন করার পরে, আমি ব্যবহারকারী সংজ্ঞায়িত প্রকারের নমুনা খুঁজে পাইনি। অনেক নেট নেট ব্লগেও আমি এটি অ্যাকশনে দেখিনি।

যদিও এর অর্থ এই নয় যে লোকেরা ডাটাবেস ডোমেন ব্যবহার করে না , অবশ্যই এর অর্থ হ'ল কমপক্ষে ডাটাবেস ডোমেন ব্যবহার করা সাধারণ নয়।


"আমি ডাটাবেসে ব্যবহারকারীর সংজ্ঞায়িত প্রকারগুলি ব্যবহার করিনি, যেহেতু আমি প্রয়োগের দিক থেকে আরও শক্তিশালী" : সুতরাং আপনি পরিবর্তনের সীমাবদ্ধতাগুলি ব্যবহার করেন? আমি বুঝতে পারছি না, অ্যাপ্লিকেশন দৃষ্টিকোণ থেকে এটি কীভাবে আলাদা?
আর্সেনী মরজেনকো

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

বুঝতে পারছিল না। তুমি ঠিক বলছো.
আর্সেনী মোরজেনকো

3

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

"উদাহরণস্বরূপ, আমি একটি" জেন্ডার টাইপ "(চর (1) সংজ্ঞায়িত করি," এম "বা" এফ "ধারণ করে নয়), যা জেন্ডার ক্ষেত্রে কেবলমাত্র উপযুক্ত ডেটা অনুমোদিত বলে নিশ্চিত করে।"

ব্যক্তিগতভাবে, আমি char(1)কলামে সীমাবদ্ধতা নির্ধারণ করে সংজ্ঞা দিতে আরও স্বাচ্ছন্দ্য বোধ করি । যখন সীমাবদ্ধতা লঙ্ঘন করা হয় তখন আমি জানি যে আমি কী ভুল করেছি তা খুঁজতে কোথায় সন্ধান করতে হবে। এটি ব্যবহারকারীর সংজ্ঞায়িত প্রকারের চেয়ে আরও বেশি পরিচিত, তাই ডেটাবেস যা কেবলমাত্র সীমাবদ্ধতা ব্যবহার করে তা কোনও শিক্ষানবিশকে বুঝতে সহজ হবে।

অবশ্যই, কেবলমাত্র একটি ব্যক্তিগত মতামত। অন্যান্য লোকেরা বলবেন যে একটি in ('M', 'F')সীমাবদ্ধতা স্ব-ডকুমেন্টিং নয় এবং এটি একটি নতুন বিকাশকারী যারা ডেটাবেস আবিষ্কার করে তাদের পক্ষে খুব অস্পষ্ট হতে পারে।

আইএমও, আরও জটিল ধরণের জন্য ব্যবহারকারী সংজ্ঞায়িত প্রকার এবং মৌলিক কিছুতে বাধা ব্যবহার করুন। এছাড়াও, আপনি যখন কোনও প্রকারের জন্য সহজেই একটি সুস্পষ্ট নাম খুঁজে না পান, তখন একটি প্রতিবন্ধকতা আরও ভাল ফিট হওয়ার সম্ভাবনা রয়েছে।


হারম্যাফ্রোডাইটস সম্পর্কে কী?
ওয়ায়েট বার্নেট

না ইন্টারসেক্স? নাকি ট্রান্সপোপলস?
ব্রোয়াম

1

আমি নিজেই এই বৈশিষ্ট্যটি ব্যবহার করি নি তবে আমার ধারণা আপনার এটি নিশ্চিত করা দরকার:

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

  2. আমি নিশ্চিত নই যে কোনও বৈধতা ত্রুটি দেখা দিলে ইউডিটি আপনাকে ক্লায়েন্টকে ফিরে আসা ত্রুটি বার্তাগুলি কাস্টমাইজ করতে দেয় কিনা।

  3. যদি একই বৈধতা নিয়মটি বেশ কয়েকটি কলামে প্রয়োগ হয় তবে ইউডিটিগুলি খুব কার্যকর। আমার মতে, আমি এটিকে ব্যবসায়িক প্রয়োগের ক্ষেত্রে সাধারণ ডাটাবেস ডিজাইনের সাথে খুব সাধারণ ক্ষেত্রে দেখছি না।

আপনি "[এসকিউএল সার্ভার] ব্যবহারকারী-সংজ্ঞায়িত প্রকারের পয়েন্ট কী" তা পরীক্ষা করতে আগ্রহী হতে পারেন ? ব্লগ নিবন্ধ।


1
তৃতীয় পয়েন্টের জন্য +1। বারবার একই প্রতিবন্ধকতাটি আমি যেমন লিখছি তা করাই সবচেয়ে ভাল কাজ নয়, বিশেষত যখন সময়ের সাথে প্রতিবন্ধকতা পরিবর্তন হতে পারে, এটি বেশ কয়েকটি জায়গায় পরিবর্তন করার প্রয়োজন হয়।
আর্সেনি মরজেনকো

0

আপনি যখন বলেন "সমস্ত ডাটাবেস এটি সমর্থন করে না", আমি মনে করি এটি রাখার আরও ভাল উপায় নিম্নলিখিতটি:

প্রতিটি বড় ডাটাবেস এটি সমর্থন করে, কারণ তারা ট্রিগার, ফাংশন এবং অন্যান্য উন্নত বৈশিষ্ট্যগুলি ব্যাপকভাবে সমর্থন করে।

এটি আমাদের এই সিদ্ধান্তে পৌঁছেছে যে এটি উন্নত এসকিউএল এর একটি অংশ এবং কিছু সময়ে এটি উপলব্ধি করে।

Do people actually use domains in their database designs?

প্রয়োজনীয় কম বিস্তৃত কভারেজের কারণে যত কম সম্ভব (অপারেটর, সূচক ইত্যাদি বিবেচনা করে)

If so to what extent?

আবার, যতটা সীমাবদ্ধ হতে পারে, যদি কিছু অতিরিক্ত সংজ্ঞায়িত যুক্তি (অর্থাত্ চেক ইত্যাদি) এর সাথে মিলিত কোনও বিদ্যমান ধরণটি কৌশলটি করতে পারে তবে কেন এতদূর যেতে হবে?

How useful are they?

পুরোটা অনেক। আসুন এক সেকেন্ডের জন্য মাইএসকিউএলের মতো একটি অতুলনীয় খুব ভাল ডিবিএমএস বিবেচনা করুন, যা আমি এই কারণে এই কারণে বেছে নিয়েছি: এতে ইনট (আইপি অ্যাড্রেস) ধরণের ভাল সমর্থন নেই।

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

এটি এমন একটি ক্ষেত্রে যেখানে আপনি সহজেই আপনার নিজের কার্যকারিতা সংজ্ঞায়িত করতে ব্যয় করা সময়কে ন্যায়সঙ্গত করে তুলবেন (ইনট >> পোস্টগ্রিসকিউএসএল ইনট: রেঞ্জ অপারেটরে থাকা পরিসর)।

এই মুহুর্তে, আপনি ইতিমধ্যে ডেটাটাইপ সমর্থন প্রসারিত সমর্থন করেছেন, একটি নতুন ডেটাটাইপ সংজ্ঞায়নের জন্য আরও একটি পদক্ষেপ রয়েছে।

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

What pitfalls have you encountered?

আমি এখনও এটিকে নিয়ে খেলছি না আমার এতক্ষণে কোনও প্রকল্প হয়নি যা এই জন্য প্রয়োজনীয় সময় প্রয়োজন এবং ন্যায্য উভয়ই।

আমি যে সবচেয়ে বড় সমস্যাটি দেখতে পাচ্ছি তা হুইলটিকে পুনরায় উদ্বেগিত করা হবে, "নিরাপদ" স্তর (ডিবি) এর মধ্যে বাগগুলি প্রবর্তন করা হবে, অসম্পূর্ণ প্রকারের সমর্থন যা আপনি কেবল কয়েক মাস পরে উপলব্ধি করতে পারবেন যখন আপনার কনক্যাট (castালাই * AS বার্তা) ব্যর্থ হবেন কারণ আপনি কোনও castালাই (বারচর হিসাবে নতুন টাইপ) ইত্যাদি সংজ্ঞা দেয় নি

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

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

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


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

প্রতিটি বড় ডাটাবেস এটি সমর্থন করে, কারণ তারা ট্রিগার, ফাংশন এবং অন্যান্য উন্নত বৈশিষ্ট্যগুলি ব্যাপকভাবে সমর্থন করে। কিছু সত্যই হালকা-বৈশিষ্ট্যযুক্ত / কৃপণ ব্যক্তিরা তা করেন না এবং যারা তাদের ব্যবহার করেন তাদের কেউই তাদের নির্দিষ্ট সীমাবদ্ধতাগুলি ব্যবহারকারীর নির্দিষ্ট ধরণের তুলনায় অনেক বেশি প্রসারিত করে না;)
মর্গ M

0

কাগজে, ইউডিটি একটি দুর্দান্ত ধারণা। তারা আপনাকে সত্যই আপনার ডিবিটিকে স্বাভাবিক করার অনুমতি দেয় (যেমন যখন আপনি দুটি কলাম থাকে যা একে অপরের উপর নির্ভর করে) এবং আপনার নতুন ধরণের সাথে সম্পর্কিত কোনও যুক্তি সজ্জিত করতে পারে।

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

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


0

আরও একটি ব্যবহারিক প্রশ্ন / উত্তর। আপনার সংস্থা কি এটি ব্যবহারের অনুমতি দেয়?

এটি কি আপনার সংস্থাটি বিভিন্ন ডিডিএসকিউএল ব্র্যান্ডের সাথে কাজ করছে যা বিভিন্ন ডিডিএল (গুলি) পরিচালনা করে?

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

যদি সংস্থাটি কেবলমাত্র আপনিই হন বা আপনি কোন ডেটাবেসগুলি এবং বৈশিষ্ট্যগুলি ব্যবহার করতে চলেছেন তা আপনি সিদ্ধান্ত নিতে পারেন তবে আপনি ডিডিএল ব্যবহার করতে পারেন

আমি বেশ কয়েকটি প্রকল্পের সাথে কাজ করেছি যেখানে কোনও ব্যবহারকারী সংজ্ঞায়িত প্রকারটি কার্যকর হতে পারে তবে আমার আরও মানক বৈশিষ্ট্য বজায় রাখা উচিত, যেহেতু আমাদের বেশ কয়েকটি ডিবি মোকাবেলা করতে হয়েছিল। (গুলি)।

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