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


14

আমি মূলত একটি ওয়েব বিকাশকারী এবং আমার কয়েকটি ব্যক্তিগত প্রকল্প রয়েছে যা আমি বন্ধ করতে চাই।

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

আপনি কীভাবে কোনও ওয়েব অ্যাপের দৃষ্টিকোণ থেকে ডাটাবেসের কাছে যান? আপনি কীভাবে শুরু করবেন এবং আপনি কী সন্ধান করছেন? সতর্কতা জন্য পতাকা কি?


8
ওয়েব অ্যাপ্লিকেশনগুলির জন্য ভাল ডাটাবেস ডিজাইন কোনও অ্যাপ্লিকেশনের জন্য ভাল ডাটাবেস ডিজাইনের সমান। অনেকগুলি প্রাথমিক বই পাওয়া যায় যা বুনিয়াদিগুলি আবরণ করার জন্য ভাল কাজ করে।
রবার্ট হার্ভে

1
@harvey এমন কোনও বই যা আপনি সুপারিশ করতে চান?
ব্রোন

উত্তর:


14

ডেটাবেস ডিজাইনের বিষয়ে আমি সেরা বইটি কিনেছিলাম মাইকেল হার্নান্দেজ আইএসবিএন দ্বারা রচিত ডেটাবেস ডিজাইন ফর মেরে মর্টালস : 0-201-69471-9 4 আমাজন তালিকা তালিকা আমি লক্ষ্য করেছি যে তার তৃতীয় সংস্করণ রয়েছে।

তৃতীয় সংস্করণে লিঙ্ক

তিনি আপনাকে একটি ডেটাবেস ডিজাইনের সম্পূর্ণ প্রক্রিয়া (শুরু থেকে শেষ পর্যন্ত) চলছেন। আমি আপনাকে এই বইটি দিয়ে শুরু করার পরামর্শ দিচ্ছি।

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

প্রোগ্রামিংয়ে আপনার রয়েছে:

  • যদি কনস্ট্রাক্টস
  • অন্য যদি নির্মাণ
  • লুপ করার সময় করুন
  • লুপ অব দ্য ডু
  • কেস কনস্ট্রাক্টস

আপনার কাছে থাকা ডাটাবেসের সাথে:

  • ডেটা সারণী
  • সারণী সন্ধান করুন
  • ওয়ান টু ওয়ান সম্পর্ক
  • ওয়ান টু অনেক রিলেশনশিপ
  • অনেক থেকে অনেক সম্পর্ক
  • প্রাথমিক কী
  • বিদেশী চাবি

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

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

ওয়েব তার নিজস্ব চ্যালেঞ্জগুলির সেট নিয়ে আসে। ব্যান্ডউইথ ইস্যু। Statelessness। প্রক্রিয়াগুলি থেকে ভ্রান্ত ডেটা যা শুরু হয় কিন্তু কখনই শেষ হয় না।


11

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

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

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

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


10

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


1
ORM আপনার স্কিমা আবিষ্কার করে না। আপনি আপনার বস্তুগুলিতে যা করেছেন তার ভিত্তিতে এটি এটি তৈরি করে। যদি আপনি আপনার স্কিমা থেকে আপনার অবজেক্টগুলি তৈরি করেন তবে আপনি আসলে আপনার বোকা ওআরএমকে একটি গুরুত্বপূর্ণ কাজ অর্পণ করছেন।

1
@ পিয়েরে 303 স্কিমাটি সেই ওআরএম এর ভিতরে থাকা প্রোগ্রামিংয়ের নিয়মের বাইরে তৈরি করা হয়েছে যা আপনার পরিস্থিতি / ডিজাইনের সাথে পুরোপুরি জাল নাও হতে পারে। এটি একটি সাবঅপটিমাল ডাটাবেস তৈরি করতে পারে। আমি দেখেছি কিউরি স্তরে এমনকি কিছু ভয়ঙ্কর জিনিসগুলি ওআরএম থেকে বেরিয়ে এসেছে।
m4tt1mus

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

@ এইচএলজিইএম: আপনি সম্ভবত হাইবারনেটের মতো উন্নত ওআরএম এর সাথে কাজ করতে পারবেন না এবং এই মন্তব্যটি লিখতে পারবেন না

ওহ, কীভাবে orm আপনার অ্যাপ্লিকেশন ব্যতীত অন্য জিনিসগুলির দ্বারা নিরীক্ষণ এবং ক্ষেত্রগুলি পরিচালনা করে?
এইচএলজিইএম

5

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

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

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

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


5

ডেটাবেস ডিজাইনটি কীভাবে ডেটা ব্যবহার করা হবে তা বিবেচনা না করে সম্পূর্ণ করা যায় না, সুতরাং পদক্ষেপের একটি সংক্ষিপ্ত তালিকা এখানে:

  • সংস্থাগুলির মধ্যে সম্পর্ক ক্যাপচার ছোট বাক্য লিখুন
  • বাক্যগুলি উপস্থাপন করে একটি সত্তা-সম্পর্ক চিত্রটি আঁকুন
  • ইআর ডায়াগ্রাম থেকে একটি সাধারণীকরণযুক্ত লজিকাল ডেটা মডেল তৈরি করুন
  • অ্যাপ্লিকেশন এবং সত্তাগুলির জন্য একটি CRUD ম্যাট্রিক্স তৈরি করুন
  • প্রতিটি সত্তার জীবনচক্রের কভারেজ যাচাই করতে ম্যাট্রিক্স ব্যবহার করুন
  • প্রতিটি অ্যাপ্লিকেশন জন্য সাবচেমাস নিষ্কাশন
  • প্রতিটি বড় / সিআরইউডি অপারেশনের জন্য সাবচেমাসের উপরে নেভিগেশন পাথ পরীক্ষা করুন
  • প্রয়োজনীয় প্রতিবেদনগুলি বিবেচনা করুন
  • উপরের সমস্তটির উপর ভিত্তি করে দৈহিক ডেটা মডেলটি ডিজাইন করুন; সংক্ষিপ্তকরণ, পার্টিশন, এবং উপযুক্ত যেখানে স্টার স্কিমা ব্যবহার করুন

যদি আপনি চেকগুলি লেখেন এমন লোকদের সন্তুষ্ট করার পরিকল্পনা করেন তবে আপনি প্রতিবেদনটি ঠিক মতো পেয়েছেন তা নিশ্চিত করে নিন।
জেফো

3

সাফল্যের সাথে একটি ডাটাবেস ডিজাইন করার জন্য আপনাকে প্রথমে বেশ কয়েকটি বিষয় বিবেচনা করতে হবে:

  • আমার কী ডেটা সংরক্ষণ করতে হবে এবং এটি আমার সঞ্চয় করা অন্যান্য ডেটার সাথে কীভাবে সম্পর্কিত। সময়ের সাথে সাথে কীভাবে এই ডেটা পরিবর্তন করা দরকার? আমার কি সময়মতো স্ন্যাপশটটি দেখতে পাওয়া দরকার (সেই আদেশটি ২০০৯ থেকে) অথবা আমার কেবল বর্তমান (কেবলমাত্র সক্রিয় ব্যবহারকারীগণ) যা প্রয়োজন তা কি দরকার?
  • কীভাবে আমি নিশ্চিত করতে পারি যে আমার ডেটা অর্থবহ এবং সময়ের সাথে সাথে ডেটা বজায় রাখে (ডেটা অখণ্ডতা)?
  • আমি কীভাবে তা নিশ্চিত করতে পারি যে ডেটা অ্যাক্সেস দ্রুত?
  • আমি কীভাবে আমার ডেটা সুরক্ষিত রাখতে পারি?

সুতরাং আপনি একটি ডাটাবেস ডিজাইন করা শুরু করার আগে আপনাকে প্রথমে সাধারণীকরণ এবং ডেটাটির অখণ্ডতা বজায় রাখতে ব্যবহৃত ডাটাবেসের বৈশিষ্ট্যগুলি সম্পর্কে শিখতে হবে।

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

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

আপনার শুরু করার আগে ডেটাবেসগুলি রিফ্যাক্টরিং সম্পর্কে কিছুটা পড়তে সহায়ক, কারণ পরে রিফ্যাক্টরিং করা দরকার এবং কীভাবে কীভাবে সেট আপ করা যায় তা জানার পক্ষে সাহায্য করা যাতে আপনি যতটা সম্ভব রিফ্যাক্টর করতে পারেন।

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


2

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

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

একটি শালীন মডেল তৈরির ক্ষেত্রে - @ টিমটি ডাটাবেসের জন্য এটি নিখুঁতভাবে তৈরি করেছে এবং মূলত আপনার অবজেক্টের মডেল তৈরি করা ব্যাপকভাবে একই রকম হতে চলেছে - কী অনন্য, এক শ্রেণিবদ্ধতা, যেখানে অনেকগুলি সম্পর্ক ইত্যাদি রয়েছে, ইত্যাদি, তবে আপনি একটি ডাটাবেস এ যান, নিশ্চিত করুন যে আপনি সমস্ত ভাল জিনিস করছেন।

এছাড়াও স্ক্র্যাচ থেকে স্কিমা তৈরি করতে এবং আপনি পরিবর্তনগুলি করার সাথে সাথে আপডেট করার জন্য কোডটিতে স্ক্রিপ্ট বা ডিডিএল রয়েছে তা নিশ্চিত করুন (কোডে ডিডিএল আমার পছন্দের পদ্ধতি - আমার একটি সিস্টেম আছে এবং এটি কাজ করে)।


2

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

শেষ পর্যন্ত যদি মডেলটি খুব বড় হয়ে যায় আমি এটিকে ভিজিওতে স্থানান্তর করব এবং হোয়াইটবোর্ডে টুকরো টুকরো করে কাজ করব।

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

"এসকিউএল তারপরে ওআরএম" বা বিপরীতে, এটি আপনার উপর নির্ভর করে। আপনার মডেলটি প্রথমে একটি ভাল ভিত্তি তৈরি করে তা নিশ্চিত করুন।


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

ঠিক এটাই আমি পেরিয়ে যাওয়ার চেষ্টা করছিলাম। আপনার যা প্রয়োজন তা তৈরি করুন, আরও কিছু নয়। তবে আপনি যদি পরে সম্প্রসারণের পরিকল্পনা না করেন, ভাল, আপনি কি কখনও উপসাগর অঞ্চলে রাশ আওয়ার ট্র্যাফিকে ছিলেন? আপনি কীভাবে প্রসারণের প্রয়োজন হতে পারে তার আগে চিন্তা না করলে কী হয় তার এটি নিখুঁত উদাহরণ।
Hounshell

এবং রঙগুলি আরও ভালভাবে স্পষ্ট করার জন্য: কালো এমন জিনিসগুলির জন্য যা আমি জানি যে সঠিক। সাধারণত সরল জিনিস যা সত্যিকার অর্থে অন্য কোনও স্কিম নেই। নীল এমন জিনিসগুলির জন্য যা আমি সামান্য পুনর্গঠন করার সিদ্ধান্ত নিতে পারি। জিনিসগুলি সম্ভবত সঠিক, তবে আমি মুছে ফেলতে পারি। সবুজ এমন জিনিসগুলির জন্য যেখানে আমি সত্যিই মন্ত্রমুগ্ধকর এবং আমার মুছার সম্ভাবনা খুব বেশি।
Hounshell

1

আমি প্রথমে অবজেক্টগুলি ডিজাইন করি তারপরে আমি স্কিমা তৈরি করতে একটি ORM (যেমন এনহাইবারনেট) ব্যবহার করি। এটি আমাকে বিপরীতমুখী করার চেয়ে অনেক বেশি নমনীয়তা দেয়।

পরবর্তী পদক্ষেপটি উত্পাদিত স্কিমাটির অপ্টিমাইজেশন।

ডাটাবেস টেবিলগুলি যেখানে প্রথম ডিজাইন করা হয়েছে সেখানে আমি এমন একটি প্রকল্প দেখেছি এটি দীর্ঘদিন হয়েছে।


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

1
@ এলগ্রিঙ্গো গ্রান্ডে আপনি ডিবিগুরু না হলে আপনার পক্ষে সবচেয়ে রুডিমিটরি অ্যাপ্লিকেশন ব্যতীত অন্য কোনও ডাটাবেস ডিজাইনের কোনও ব্যবসা নেই। যদি এটির জন্য 10 টিরও বেশি টেবিলের প্রয়োজন হয় এবং এটি 100000 এর বেশি রেকর্ড না রাখে এবং আপনার কাছে কোনও পেশাদার ডাটাবেস ডিজাইনার নেই, তবে আপনি এটি ভুল করছেন।
এইচএলজিইএম

ভাল বকাবকি। আমি এমন একটি ডেটাবেস ডিজাইন করেছি যাতে 160 টিরও বেশি টেবিল রয়েছে এবং কয়েক মিলিয়ন সারি রয়েছে (বৃহত্তম টেবিলটিতে একটি মাঝারি আকারের গ্রাহকের জন্য মাত্র এক মিলিয়ন রেকর্ড রয়েছে The বৃহত্তম গ্রাহকের রয়েছে 5 মিলিয়নেরও বেশি)। বেশিরভাগ গ্রাহকের কয়েক শতাধিক সমবর্তী ব্যবহারকারী এবং বৃহত্তম 2 হাজারেরও বেশি ব্যবহারকারী রয়েছে। এবং আমি কোনও ডিবি গুরু নই বা আমরা একজনকেও ভাড়া করি নি। বিভিন্ন অ্যাপ্লিকেশন ছিন্ন করার জন্য আমি এই কয়েকটি ডিবি ডিজাইন করেছি। ছেলে আমি স্ক্রু আপ।
এলগ্রিঙ্গো গ্র্যান্ডে

1
এলগ্রিঙ্গো গ্র্যান্ডে: আপনি যদি টেবিলগুলিতে কয়েক সহস্র ব্যবহারকারী এবং কয়েক মিলিয়ন সারি ব্যবহার করে এমন ডেটাবেসগুলি তৈরি করেন এবং ব্যবহারকারীরা খুশি হন তবে আপনি ডিবি-গুরু। সম্ভবত আপনি এখনও বুঝতে পারেন নি।
ypercubeᵀᴹ

1

অন্যান্য ফেলো দ্বারা এখনও অবধি স্পষ্ট করে কিছু বলা হয়নি:

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

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

  • প্রোগ্রামগুলিতে কোন কোডটি করতে হবে এবং কোন কোডটি DB কে যত্ন নিতে দেবে তা জানুন। এটি প্রয়োজনীয় যাতে আপনি ডেটা কলামের নাল, নাল ইত্যাদি ঠিকভাবে সেট করেন। এটি আপনার আরআইও সঠিকভাবে নির্দিষ্ট করে দেওয়ার জন্যও প্রয়োজনীয়।

  • আপনার প্রাথমিক কীগুলি ভালভাবে নির্ধারণ করুন। আপনি যখন পারবেন তখন সাধারণ কীগুলির জন্য যান।

  • অন্যান্য অ্যাপ্লিকেশনগুলির সাথে সংহতকরণের প্রয়োজনীয়তাগুলি বিবেচনা করুন।

  • সর্বজনীন ডেটা মডেলগুলি ব্যবহার করে বিবেচনা করুন এবং নামকরণ এবং ডেটা কলামের আকারে শিল্পের মানগুলি অনুসরণ করুন।

  • ভবিষ্যতের প্রয়োজনগুলি সম্পর্কে চিন্তা করুন (কখন এবং কখন প্রযোজ্য হবে)

  • আপনার মোডটি অন্যদের দ্বারা পর্যালোচনা করুন।

  • মডেলিংয়ের জন্য একটি সরঞ্জাম ব্যবহার করুন - হয় ERD সরঞ্জাম বা একটি ইউএমএল সরঞ্জাম।

  • উত্পন্ন ডিডিএল কোড পর্যালোচনা এবং বুঝতে understand এটি মর্যাদার জন্য গ্রহণ করবেন না।

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