অবজেক্ট ওরিয়েন্টেড "নরমালাইজেশন"


28

ডাটাবেস প্রোগ্রামিংয়ে "নরমালাইজেশন" নামক একটি প্রযুক্তি রয়েছে যা আপনি সংরক্ষণ করতে চান এমন ডেটাতে করেন।

কেউ কি এই ধারণাটি ডিজাইনের ক্ষেত্রে প্রয়োগ করার চেষ্টা করেছেন? তুমি কিভাবে করেছিলে? এটা কি ভাবে কাজ করে?

সম্পাদনা: প্রসারিত / স্পষ্ট করার জন্য, অপ্রয়োজনীয়তা হ্রাস করার জন্য নীতিগুলির একটি সেটের চেয়ে বেশি ডাটাবেস সাধারণকরণ। আসলে আপনি যে ধাপগুলি এবং ধাপগুলি অতিক্রম করছেন সেগুলি রয়েছে এবং কমপক্ষে পরিমিতরূপে উদ্দেশ্যমূলক পদক্ষেপ রয়েছে যা আপনাকে জানায় যে আপনি কোন পর্যায়ে আছেন। আপনি যে XX-form0,1,2 ... ইত্যাদি ... এবং পরবর্তী সবচেয়ে "নর্মালাইজড" স্তরে যাওয়ার পদ্ধতিগুলি?


2
... আপনি বলতে চাইছেন যে আমরা আমাদের ক্লাসে একাধিক রিলান্ড্যান্ট ভেরিয়েবল না রাখার চেষ্টা করেছি, এবং আমাদের প্রকল্পগুলিতে একাধিক রিডানড্যান্ট ক্লাস নেই? এটা কি কাজ করবে?
স্যাটোনিকপপি

2
@ স্টিভেন এ। লো: পাঁচ বছর আগে যখন আপনি আমার মাস্টার থিসিসের বিষয়ে সিদ্ধান্ত নিচ্ছিলেন আপনি কোথায় ছিলেন? ;)

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

একটি খুব আকর্ষণীয় প্রশ্ন আমি এটি খুঁজে।

5
আমি মনে করি রিফ্যাক্টরিং অনেকগুলি কভার করে যা উভয় ওওপি এবং অন্যান্য প্রোগ্রামিং পদ্ধতির জন্য।
জনএফএক্স

উত্তর:


27

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

অন্য কথায়, কেউ কি ওওপিতে ডাটাবেস নরমালাইজেশন কৌশল প্রয়োগ করার চেষ্টা করেছে? না, কারণ ওওপি-র ইতিমধ্যে ভাগ করা সমস্যাগুলির সমাধান রয়েছে যা সম্পর্কিতকরণের ডাটাবেসের জন্য সাধারণীকরণ সমাধান করে।


আমি লেখার চেষ্টা করছিলাম তার চেয়ে অনেক বেশি +1!
মাইকেল কে

সেগুলি নীতিগুলি, যদিও কৌশল নয়। কীভাবে আপনি এই নীতিগুলি কোনও অবজেক্ট ডিজাইনের "স্বাভাবিককরণ" করতে ব্যবহার করবেন?
এডওয়ার্ড স্ট্রেঞ্জ

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

5
@ ক্রেজি এডি: আপনি কীভাবে এটি একটি সম্পর্কিত ডেটাবেস দিয়ে করেন? কোনও প্রিন্সিপাল লঙ্ঘিত হয়েছে এমন উদাহরণগুলির সন্ধান করুন এবং এটি সংশোধন করুন। আপনি যদি তিনটি চাকরিযুক্ত কোনও শ্রেণি দেখতে পান তবে আপনি এটি তিনটি শ্রেণি হিসাবে পুনরায় লিখবেন। আপনি যদি "নরমালাইজ" এর মতো ক্রিয়াটি খুঁজছেন তবে এটির "রিফ্যাক্টর" যদিও এটি সুনির্দিষ্ট নয় তবে এটি অন্তর্ভুক্ত it
জেরেমি

1
@Rein: ডাটাবেস নকশা তন্ন তন্ন ছোট কিংবা গলি কম জটিল, কিন্তু এটি এক বিশাল সুবিধা ছিল: এটা শুরু হয় একটি কঠিন তাত্ত্বিক ভিত্তি এবং গাণিতিক মডেল সঙ্গে। ওওপি প্রচুর তাত্পর্যপূর্ণ বিকাশ করেছে, তবে এখনও কোনও সম্পূর্ণ আনুষ্ঠানিকতা নেই।
স্টিভেন এ লো 16

18

হ্যাঁ, হ্যাঁ আমার আছে

আমি দীর্ঘদিন এই বিষয়ে চুপ করে রয়েছি; এটা সময় বলার।

  • কেউ কি এই ধারণাটি ডিজাইনের ক্ষেত্রে প্রয়োগ করার চেষ্টা করেছেন?

হ্যাঁ। আমি 20 বছরেরও বেশি সময় ধরে অবজেক্ট নরমালাইজেশন (এবং তাই অন্তর্নিহিত অবজেক্ট-ভিত্তিক তত্ত্ব) আনুষ্ঠানিককরণে কাজ করছি।

  • তুমি কিভাবে করেছিলে?

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

  • এটা কি ভাবে কাজ করে?

এটি এখনও পর্যন্ত বেশ কার্যকরভাবে কাজ করেছে - আমি বিশ্বাস করি অর্জিত অন্তর্দৃষ্টিগুলি আমার নকশা, বিশ্লেষণ এবং রিফ্যাক্টরিংয়ের দক্ষতার "গোপন অস্ত্র"।

আমি এর আগে প্রকাশ্যে এ সম্পর্কে কিছু বলিনি কারণ আমি বুঝতে পেরেছিলাম যে শেষ পর্যন্ত আমার কাছে গবেষণা শেষ করার সময় হবে - এবং নিজেই অন্তর্নিহিত সরঞ্জামগুলি উত্পাদন করতে পারি।

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

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

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

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

তাই এখন আমি ভাবছি যে সবচেয়ে ভাল কাজটি হ'ল শব্দটি প্রকাশ করা, সম্ভবত ডিসি-তে ডেভডয়েস ২০১১-তে কথা বলতে বলার মাধ্যমে এবং খুঁজে বের করুন যে আমার মতো এই জিনিসগুলির দ্বারা উত্সাহিত কোনও সম্প্রদায় আছে কিনা।

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


1
এরপরে আর কোন দলিল নেই?
স্টিভ 314

4
প্রকাশ! (দয়া করে?) (সুন্দর প্লিজ?) আপনার যদি ডক্স ক্রম পেতে কোনও সহায়তার প্রয়োজন হয় তবে আমার সাথে যোগাযোগ করুন।
AJ01

1
@ ক্রিসিসায়ারফাইস: আমাকে স্টিভেন.লোয়ে@নোভ 8 আর ডটকম এ ইমেল মারতে পেরে খুশি হোন
স্টিভেন এ। লো

1
@ ক্রিসক্রাইফাইস: কেবল এফআইআই, পিএইচডি প্রার্থী একটি আলাদা বিশ্ববিদ্যালয়ে চলে এসেছেন; ব্যাক-বার্নারে আবার প্রকল্প (তবে আমি ডিডিডিতে একটি বই লিখছি)
স্টিভেন এ। লো

1
হাই @ স্টিভেনা। নীচে আমি আপনার গবেষণায় সত্যই আগ্রহী। আমি বরং ছোট কাগজ পেয়েছি encrypted.google.com/... আপনি এই কোন মন্তব্য আছে? বিটিডব্লিউ, সম্ভবত আপনি প্রথমে একটি ব্লগ পোস্ট লিখে আপনার ধারণাটি আরও কিছুটা চিত্রিত করতে পারেন? ধন্যবাদ।
ওয়েই কিউউ

5

এটি রেন হেনরিচের চমৎকার উত্তরের মন্তব্য হিসাবে শুরু হয়েছিল , তবে খুব দীর্ঘ ...

সাধারণীকরণ সম্পর্কিত ডেটা প্রযোজ্য। এটি সদৃশতা এড়ানোর জন্য ব্যবহৃত হয়, যা প্রতিটি ডেটাম কেবলমাত্র এক জায়গায় সঞ্চিত থাকায় ডেটা অখণ্ডতা নিশ্চিত করা সহজ করে তোলে। আপনি একটি সাধারণ রূপের লঙ্ঘন সন্ধান করে এবং সেগুলি সংশোধন করে একটি ডাটাবেসকে সাধারণকরণ করেন।

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

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


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

2

ব্যবসায়ের মডেল অবজেক্টগুলি ডিজাইন করার জন্য খুব ভাল পন্থা যা সাধারণীকরণের অনুরূপ , রঙের ইউএমএল মডেলিং

এটি পিটার কোডের দ্বারা পাওয়া একটি নকশার কৌশল যা ব্যবসায়ের মডেল অবজেক্টগুলিকে বিমূর্ত করতে সহায়তা করে।

দুর্ভাগ্যক্রমে বইটি - জাভা মডেলিং ইন কালার উইথ ইউএমএল: এন্টারপ্রাইজ উপাদান এবং প্রক্রিয়া - বিক্রি হয়ে গেছে এবং আপনি কেবল ব্যবহৃত ব্যবহৃত কিনতে পারেন।

এই কৌশলটি সম্পর্কে ইন্টারনেটে বেশ কয়েকটি নিবন্ধ রয়েছে।

আপনি যদি রিলেশনাল ডিজাইনের সাথে পরিচিত হন তবে আপনাকে রঙিন রঙের ইউএমএল মডেলিং আপনাকে গাইড করতে দরকারী বলে খুঁজে পেতে পারেন:


0

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


0

অবজেক্টের রেফারেন্স বা পয়েন্টারগুলি বিদেশী কীগুলির অনুরূপ। এটি আমি গভীরভাবে চিন্তা করতে ইচ্ছুক। :)

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

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