সেরা অভ্যাস: ডেটাবেস অ্যাপ্লিকেশন প্রোগ্রামিং নিদর্শন


11

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

আমার প্রশ্নটি উদাহরণের মাধ্যমে সর্বোত্তমভাবে ব্যাখ্যা করা যেতে পারে বলে মনে করুন। আমি এখন ব্যবহার করি এমন 2 টি পন্থা রয়েছে বলে আমার কাছে একটি চালান অবজেক্ট / শ্রেণি রয়েছে:

প্রথমটি হ'ল স্থায়ী সদস্যের কার্যাদি ব্যবহার করা

class Invoice
{
   int id;
   string ref;
   int customer_id;
   date created;
   date due;

   static id create();
   static bool update(id, field1, field2, ...);
   static bool delete(id);
   static bool get(id);
};

দ্বিতীয় পদ্ধতির প্রতিটি জিনিস একটি ডাটাবেস অবজেক্টে রাখা:

class Database extends ProprietaryDBConnecter, Singleton
{
   id createInvoice();
   bool updateInvoice(id, field1, field2, ...);
   bool deleteInvoice(id);
   bool getInvoice(id);

   id createCustomer();
   bool updateCustomer(id, field1, field2, ...);
   bool deleteCustomer(id);
   bool getCustomer(id);

   // etc...
}

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

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

আমি প্রশ্নটি পরিষ্কারভাবে ব্যাখ্যা করেছি কিনা জানি না, এই আর্কিটেকচার / ডিজাইনের প্যাটার্ন / এটি-এর-হিসাবে-পরিচিত হিসাবে আরও কিছু সেরা পন্থা কী?

পরামর্শের জন্য ধন্যবাদ

উত্তর:


14

আমি মনে করি আপনি একটি ওআরএম ব্যবহার করতে পারেন।

তবে সত্যই, ডাটাবেস ডিজাইনের ওওপি প্রিপিলগুলি অনুসরণ করা উচিত নয়, এটি নরমালাইজের মতো ডেটাবেস ডিজাইনের প্রাইপলগুলি অনুসরণ করা উচিত। এবং এটি অ্যাপ্লিকেশনটিতে নয় ডাটাবেজে ডিজাইন করা উচিত। এবং ডেটাবেস স্তরের নিয়ম প্রয়োগের মাধ্যমে ডাটাবেস স্তরে প্রয়োগ করা উচিত।

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


5
সবকিছুর জন্য না হয় +1 অবশ্যই ওওপি হওয়া উচিত (এমনকি কিছু ওআরএম বেশ সুন্দর হলেও!)
জাভিয়ার

1
ও / আরএমগুলি দুর্দান্ত, তবে এগুলি ব্যবহারের অর্থ এই নয় যে আপনি ভাল ডাটাবেস ডিজাইনের সাথে খাপ খাই করতে পারবেন না।
ব্ল্যাকিসি

1
@ ডেভিড, আমি একমত যে এটি কারও হাতে যারা সত্যই জানে যে সে কী করছে। এবং আমি প্রস্তাব দিয়েছিলাম যে সে কোনও ওআরএমের দিকে নজর দেবে, তবে সত্যই যদি আপনি প্রথমে ডাটাবেস ডিজাইনটি না জানেন তবে একটি ওআরএম একটি বিপজ্জনক সরঞ্জাম।
এইচএলজিইএম

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

অ্যাপ্লিকেশনটি কেবল কখনওই এমন একমাত্র জিনিস নয় যা ডেটা পরিবর্তন করে। ডাটাবেসের মধ্যে না রাখা ব্যবসায়ের নিয়মগুলি খুব সহজেই লঙ্ঘিত হয় যখন কাউকে কিছু ডেটা ফিক্স সমর্থন করার জন্য ডেটা একটি বিশাল অংশে দ্রুত পরিবর্তন করতে হয়।
এইচএলজিইএম

10

আমি এমন কোনও কাঠামো খুঁজে পাই না যা একটি ওওপি পদ্ধতির পরিপূরক করে যা ডেটাবেসের বাস্তবায়নকে সজ্জিত করে

দেখে মনে হচ্ছে আপনি অবজেক্ট-রিলেশনাল ইম্পিডেন্স ম্যাচ ম্যাচটি বর্ণনা করছেন ।

এই ওওডিবিএমএস, ওআরএম সরঞ্জামগুলি, ডেটা অ্যাক্সেস সরঞ্জামের একটি হোস্টের সমাধান করার কথা রয়েছে এমন অনেকগুলি বিষয় রয়েছে ।

আমি মনে করি যে অনেকগুলি সমাধানের সত্যতা আমাকে বিশ্বাস করতে পরিচালিত করে যে একটি সত্য সমাধান S বিদ্যমান নেই।

সুতরাং আপনি নিজের জ্ঞান সুরক্ষিত যে কোনও দিক বেছে নিতে পারেন যে কিছু লোক এটি ঘৃণা করবে এবং কিছু এটি পছন্দ করবে।


দেখে মনে হচ্ছে এটি আরও কঠোর উপায়ে।
জেক

2

আপনি যদি কোনও ওআরএম মোড়ক ব্যবহার করতে না চান, এমন ডেটাবেস ব্যবহার করুন যা মঙ্গোডিবি এর মতো ওওপি স্টাইল স্টোরেজ সমর্থন করে ।

MongoDB (থেকে "হু মোঙ্গো আমাদের") একটি ক্রস-প্ল্যাটফর্ম ডকুমেন্ট ভিত্তিক ডাটাবেসের সিস্টেম। একটি "হিসাবে শ্রেণীবদ্ধ করা NoSQL " ডাটাবেস, MongoDB ঐতিহ্যগত টেবিল ভিত্তিক eschews রিলেশনাল ডাটাবেস পক্ষে গঠন তাদেরকে JSON গতিশীল স্কিমের সঙ্গে দস্তাবেজ (MongoDB বিন্যাস আহ্বান -একটি BSON ), সহজ এবং দ্রুত অ্যাপ্লিকেশন কিছু নির্দিষ্ট ডাটা একীকরণ করে। ..

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