সম্পর্কিত ডেটাবেস ডিজাইন প্যাটার্নস? [বন্ধ]


283

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

উদাহরণগুলিতে টেবিল ডিজাইন, সঞ্চিত প্রক্রিয়া, ট্রিগার ইত্যাদির নিদর্শনগুলি অন্তর্ভুক্ত থাকবে ...

মার্টিনফোলার ডটকমের মতো একই ধরণের কোনও অনলাইন ভান্ডার আছে ?


নিদর্শনগুলি সমাধান করতে পারে এমন সমস্যার উদাহরণ:

  • শ্রেণিবদ্ধ ডেটা সংরক্ষণ করা (যেমন 1: 1 কী এবং পার্থক্য সহ একাধিক টেবিল বনাম টাইপ সহ একক টেবিল ...)
  • ভেরিয়েবল স্ট্রাকচার সহ ডেটা সংরক্ষণ করা (যেমন জেনেরিক কলাম বনাম এক্সএমএল বনাম সীমিত কলাম ...)
  • ডেটাটিকে সাধারণকরণ করুন (এটি কীভাবে নূন্যতম প্রভাব ইত্যাদি দিয়ে করবেন ...)

: আমি হায়ারারকিকাল তথ্য সংগ্রহের জন্য এখানে সেরা Q & A- দাবি করব stackoverflow.com/questions/4048151/...
orangepips

1
আমাদের অন ​​টপিক গাইডেন্স অনুসারে, " কিছু প্রশ্ন এখনও উপরের তালিকাভুক্ত বিভাগগুলির মধ্যে মাপসই করা হলেও বিষয়গুলি থেকে বাইরে রয়েছে: ... আমাদের কাছে কোনও বই, সরঞ্জাম, সফ্টওয়্যার লাইব্রেরি, টিউটোরিয়াল বা অন্যান্য প্রস্তাব দেওয়ার বা সন্ধান করার জন্য জিজ্ঞাসা করা প্রশ্ন অফ সাইট রিসোর্স অফ-টপিক ... "
রবার্ট কলম্বিয়া

@ রবার্টক্লম্বিয়া যখন প্রশ্ন করা হয়েছিল তখন ২০০৮ সালে বিষয়টি অনন্য-বিষয় ছিল ...
স্ক্লিভিভজ

রিলেশনাল ডাটাবেস এবং সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের অনেকগুলি অংশে ডিজাইনের প্যাটার্ন সংস্থার এই তালিকাটি দেখুন github.com/DovAmir/awesome-
ডিজাইন-

উত্তর:


150

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

আমি ডেভিড সি হেইর ডেটা মডেল প্যাটার্নগুলি এবং ফলোআপ একটি মেটাডেটা মানচিত্রেরও সুপারিশ করবো যা প্রথমটি তৈরি করে এবং আরও উচ্চাভিলাষী এবং আগ্রহী। একা উপস্থাপনা আলোকিত হয়।

ল্যান সিলভারস্টনের ডেটা মডেল রিসোর্স বুক সিরিজ খণ্ড ১ -এ সর্বজনীনভাবে প্রযোজ্য ডেটা মডেল (কর্মচারী, অ্যাকাউন্টস, শিপিং, কেনাকাটা ইত্যাদি) রয়েছে , ভলিউম 2 -তে শিল্প নির্দিষ্ট ডেটা মডেল রয়েছে (অ্যাকাউন্টিং, স্বাস্থ্যসেবা, ইত্যাদি), ভলিউম 3 ডেটা মডেল নিদর্শন সরবরাহ করে।

শেষ অবধি, এই বইটি ইউএমএল এবং অবজেক্ট মডেলিং সম্পর্কে স্পষ্টতই, ইউএমএল সহ রঙে পিটার কোডের মডেলিংটি ভিত্তি থেকে শুরু করে সত্তা মডেলিংয়ের একটি "প্রত্নতাত্ত্বিক" চালিত প্রক্রিয়া সরবরাহ করে যে কোনও অবজেক্ট / ডেটা মডেলের 4 টি মূল প্রত্নতত্ত্ব রয়েছে provides


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

3
অ্যাম্বুলার বই সম্পর্কে: না, আপনি একই কারণে প্যাটার্ন হিসাবে "একটি কলাম সন্নিবেশ করানো" বা "এফকে সীমাবদ্ধতা" তৈরি করতে পারবেন না 4 গ্যাং অফ 4 বইটি "ফর" লুপের নিদর্শন হিসাবে তালিকাভুক্ত করে না।
তেগিরি নেনাশি

এটি এমন একটি প্যাটার্ন নয় যা এটি রিফ্যাক্টরিং। নিষ্কাশন পদ্ধতি, বা পরামিতিটির নাম পরিবর্তন করুন। রিফ্যাক্টরিং এবং নিদর্শন একসাথে যেতে।
মাইকেল ব্রাউন

যোগ করার জন্য একটি: ফোলারের "বিশ্লেষণের ধরণগুলি"। খড় এর কাপড় অনুরূপ
নিল McGuigan

2
লেন সিলভারস্টনের ভলিউম 3 কেবলমাত্র "ডিজাইনের প্যাটার্নস" হিসাবে বিবেচনা করব। প্রথম 2 শো স্যাম্পল ডেটা মডেলগুলি যা বই লেখার সময় ফ্রেমে প্রচলিত ছিল। ভলিউম 3 যদিও কোনও প্রদত্ত সমস্যার দৃশ্যের জন্য একাধিক ডিজাইনের ধরণ রয়েছে। উদাহরণস্বরূপ, অধ্যায় 4 হায়ারারচি / সমষ্টি / পিয়ার-টু-পিয়ার পরিস্থিতিগুলিকে অন্তর্ভুক্ত করে এবং তারপরে একাধিক নকশাগুলি সরবরাহ করে যা সেইগুলির প্রতিটি পক্ষে ভাল cons
ড্যারেলনর্টন

46

ডিজাইন নিদর্শনগুলি তুচ্ছভাবে পুনরায় ব্যবহারযোগ্য সমাধান নয়।

সংজ্ঞা অনুসারে ডিজাইনের নিদর্শনগুলি পুনরায় ব্যবহারযোগ্য। তারা অন্যান্য ভাল সমাধানগুলিতে আপনি সনাক্ত করেছেন এমন নিদর্শন ।

একটি প্যাটার্ন তুচ্ছভাবে পুনরায় ব্যবহারযোগ্য নয়। আপনি নিচের পদ্ধতি অনুসরণ করে আপনার ডাউন ডিজাইনটি প্রয়োগ করতে পারেন।

রিলেশনাল ডিজাইন প্যাটারগুলিতে এই জাতীয় জিনিস অন্তর্ভুক্ত থাকে:

  1. বিদেশী কী ব্যবহার করে একের সাথে একাধিক সম্পর্ক (মাস্টার-ডিটেইলস, পিতামাতা-সন্তান) সম্পর্ক।

  2. ব্রিজ টেবিলের সাথে বহু থেকে বহু সম্পর্ক।

  3. Kচ্ছিক এক থেকে এক সম্পর্ক এফকে কলামে NULL এর সাথে পরিচালিত।

  4. স্টার-স্কিমা: ডাইমেনশন এবং ফ্যাক্ট, ওএলএপি নকশা।

  5. সম্পূর্ণরূপে ওলটিপি নকশাকে সাধারণীকরণ করুন।

  6. এক মাত্রায় একাধিক সূচিযুক্ত অনুসন্ধান কলাম umns

  7. "লুকআপ টেবিল" যাতে এক বা একাধিক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত পিকে, বিবরণ এবং কোড মান (গুলি) থাকে। কোড আছে কেন? আমি জানি না, তবে যখন সেগুলি ব্যবহার করতে হবে, কোডগুলি পরিচালনা করার জন্য এটি একটি উপায়।

  8. Uni-টেবিল। [কেউ একে এন্টি-প্যাটার্ন বলে; এটি একটি প্যাটার্ন, কখনও কখনও এটি খারাপ, কখনও কখনও এটি ভাল]

  9. অ্যারে টেবিল। এটি একটি টেবিল যা কলামগুলিতে অ্যারের বা মানগুলির ক্রম রেখে প্রথম স্বাভাবিক ফর্ম লঙ্ঘন করে।

  10. মিশ্র-ব্যবহার ডাটাবেস। এটি লেনদেন প্রক্রিয়াজাতকরণের জন্য সাধারণ একটি ডাটাবেস তবে প্রতিবেদন এবং বিশ্লেষণের জন্য প্রচুর অতিরিক্ত সূচী সহ। এটি একটি অ্যান্টি-প্যাটার্ন - এটি করবেন না। লোকেরা যেভাবেই হোক না কেন এটি এখনও একটি নিদর্শন।

বেশিরভাগ লোকেরা যারা ডাটাবেসগুলি ডিজাইন করেন সহজেই "এটি তাদের মধ্যে অন্য একটি" অর্ধ-ডজনকে সহজেই ছড়িয়ে দিতে পারে; এগুলি হ'ল ডিজাইন নিদর্শন যা তারা নিয়মিত ব্যবহার করেন।

এবং এর মধ্যে ব্যবহার এবং পরিচালনার প্রশাসনিক ও পরিচালিত নিদর্শন অন্তর্ভুক্ত নয়।


আমি দেখেছি এমন আরও কিছু নিদর্শনগুলি হ'ল মাল্টি-প্যারেন্ট চাইল্ড টেবিল (যেমন, কোনও অবজেক্ট টাইপের সাথে গ্লোবাল নোটের মতো এবং যে কোনও অন্য টেবিলের সাথে লিঙ্ক করতে পারে), বা স্ব-রেফারেন্সিয়াল এফকে (যেমন, কর্মচারী.ম্যানেজার -> কর্মচারী)। ID)। এছাড়াও আমি একটি সিঙ্গলটন কনফিগার টেবিল ব্যবহার করেছি যার অনেকগুলি কলাম রয়েছে।
r00fus

1
কেন ঠিক একটি মিশ্র-ব্যবহারের ডাটাবেস একটি অ্যান্টি-প্যাটার্ন। আমি যদি ডেটাবেস থেকে রিপোর্টগুলি টানতে চাই তবে আমি কী বোঝাতে চাইছি?
জলপাই

3
@lhnz: আপনি একটি টান করতে পারবে না অনেক এর বড় একটি লেনদেনজনিত ডাটাবেস নকশা রিপোর্ট - প্রতিবেদনের নিচে লেনদেন মন্থর করে দেবে জন্য লকিং। কমপ্লেক্সে যোগ দেয় (বারবার সম্পাদিত হয়) লেনদেনের পারফরম্যান্সের বিরুদ্ধে আরেকটি নক are আপনি উভয়ই একটি ডাটাবেসে করতে পারবেন না। অনেক বড় রিপোর্ট করতে, আপনাকে অবশ্যই একটি স্টার স্কিমাতে ডেটা স্থানান্তর করতে হবে। স্টার স্কিমা প্যাটার্নটি প্রতিবেদনের জন্য অনুকূলিত। এবং ডেটা সরানো যে কোনও লক বিরোধকে সরিয়ে দেয়।
এসলট

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

6

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

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

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


4

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

প্রশ্ন:

  • আপনি কি ভবিষ্যতে অন্য একটি ডিবিএমএস ব্যবহার করতে চান? যদি হ্যাঁ হয় তবে বর্তমান ডিবিএমএসের বিশেষ এসকিউএল স্টাফ ব্যবহার করা হয় না। আপনার প্রয়োগে যুক্তি সরিয়ে দিন।

ব্যবহার করে না:

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

recomendations:

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

আমি এটি একটি ভাল সূচনা পয়েন্ট আশা করি।


7
যদিও আপনার মন্তব্যগুলি বেশ শিক্ষণীয় এবং দরকারী তবে সেগুলি নকশার নিদর্শন নয়। তারা সেরা অনুশীলন হয়। ধন্যবাদ,
Sklivvz

7
আমি অনন্য কলাম নামগুলির জন্য সুপারিশের সাথে একমত নই। আমি বরং ক্রেতাদের বলার চেয়ে কম ডিজাইন করতে বলি, এমনকি যেখানে ক্ষুন্ন করার মতো কিছুই নেই।
পল টমবলিন

1

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


ইউপিএসআরটি এসকিউএল ভাষার একটি কমান্ড এবং অংশ। এটি কোনও প্যাটার্ন নয়।
টড আর

ইউপিএসআরটি এসকিউএল ভাষার কিছু বৈকল্পিকের একটি কমান্ড - বেশ কয়েকটি প্ল্যাটফর্মের এটি নেই, বা এটি সম্প্রতি পেয়েছে।
স্টিভ হোমার

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

1

কোনও প্যাটার্ন দ্বারা আপনি কী বোঝাতে চান তা নির্ভর করে। আপনি যদি ব্যক্তি / সংস্থার / লেনদেন / পণ্য এবং এরকম চিন্তা করে থাকেন তবে হ্যাঁ - ইতিমধ্যে অনেকগুলি জেনেরিক ডাটাবেস স্কিমার উপলব্ধ।

আপনি যদি কারখানা, সিঙ্গেলটন ... ভেবে থাকেন তবে তা না - আপনার ডিবি প্রোগ্রামিংয়ের জন্য এটি নিম্ন স্তরের হওয়ায় আপনার কোনও প্রয়োজন হবে না।

আপনি যদি ডাটাবেস অবজেক্টের নামকরণের কথা ভাবছেন, তবে এটি কনভেনশনগুলির বিভাগের অধীনে, প্রতি সেয়ে ডিজাইন নয়।

বিটিডাব্লু, এস.লট, একের সাথে অনেকগুলি এবং অনেকের সাথে অনেকগুলি সম্পর্ক "নিদর্শন" নয়। তারা রিলেশনাল মডেলের বেসিক বিল্ডিং ব্লক।


(ব্যক্তি, গ্রাহক, কর্মচারী) এর মতো ডাটাবেসের উত্তরাধিকার সম্পর্কে কী ঘটে সেই ধরণের জিনিসটিকে ডিজাইনের ধরণ হিসাবে বিবেচনা করা যেতে পারে?
মুফ্লিক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.