প্রথমবারের ডেটাবেস ডিজাইন: আমি কি ওভাররিঞ্জাইনারি করছি? [বন্ধ]


246

পটভূমি

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

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

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

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

আমি যে স্কিমা নিয়ে এসেছি তা হ'ল:

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

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

বিকল্প পাঠ
(উত্স: maian.org )

উদাহরণস্বরূপ ক্যোয়ারী আমি চালাচ্ছি

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

প্রশ্ন (গুলি)

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

আপনার সময় জন্য ধন্যবাদ


131
প্রিয় প্রথম বর্ষের সিএস ছাত্র: দয়া করে স্ট্যাকওভারফ্লো ব্যবহার করা চালিয়ে যান। আপনার প্রশ্নটি আকর্ষণীয়, লিখিত এবং সহায়ক। অন্য কথায়, আপনি প্রশ্নকারীদের শীর্ষ 1% শীর্ষে রয়েছেন।
অ্যাডাম ক্রসল্যান্ড 18

একটি বিভাগ অন্যান্য বিভাগ থাকতে পারে? যদি এটির ক্ষেত্রে থাকে তবে একটি "রয়েছে" টেবিলটি বিভাগটির সাথে সংযুক্ত বিভাগটিকে আবার সংযুক্ত করতে ব্যবহৃত হতে পারে contained
মার্ক শুলথিস

সদয় মন্তব্যের জন্য ধন্যবাদ :) চিহ্নিত করুন আমাকে আবার এই প্রকল্পের জন্য ডকুমেন্টেশনগুলি দেখতে হবে, তবে আমি মনে করি না যে আমরা এই কেসটি চিহ্নিত করেছি। এটা ইশারা জন্য ধন্যবাদ।
বব এস্পোঞ্জ

1
আমি আপনার প্রাথমিক কী নামকরণ কনভেনশন পছন্দ করি না। টেবিলের divisionsনাম রয়েছে কলাম divisionid। আপনি কি অপ্রয়োজনীয় খুঁজে পাচ্ছেন না? শুধু নাম দিন id। এছাড়াও আপনার টেবিলের নামগুলি সহ _has_: আমি এটিকে সরিয়ে ফেলব এবং উদাহরণস্বরূপ এটির নাম দেব cities_departments। ব্যবহারকারীদের ইনপুট মান না DATETIMEহওয়া পর্যন্ত আপনার কলামগুলি প্রকারের TIMESTAMPহওয়া উচিত । আমার মনে হয় এটা আছে একটি ভাল ধারণা citiesএবং countriesটেবিল। আপনি একক টেবিল সীমাবদ্ধ করতে সমস্যা হতে পারে status। একটি ব্যবহার বিবেচনা করুন INTএবং এতে বিটওয়াইজ তুলনা সম্পাদন করুন- যাতে আপনি আরও অর্থ ধরে রাখতে পারেন
জেমস

@ বিন্বইব আইডিটি প্রাথমিক কীটির নাম হিসাবে ব্যবহার করার বিষয়ে অনেক যুক্তি রয়েছে যা সিদ্ধান্ত নেওয়ার আগে লোকেরা বিবেচনা করা উচিত।
জেডি

উত্তর:


42

আপনার প্রশ্নের আরও কিছু উত্তর:

1) আপনি এমন কারও টার্গেটে রয়েছেন যিনি প্রথমবারের মতো এই ধরণের সমস্যায় পৌঁছেছেন। আমি মনে করি এই প্রশ্নে অন্যদের থেকে নির্দেশকরা এতদূর পর্যন্ত এটি কভার করে। ভাল করেছ!

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

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

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

এগুলি সমস্তই দীর্ঘায়িত রেন্ট যা আপনি যে ডিজাইনের নীতি এবং কৌশল ব্যবহার করেন সেগুলি আপনার তৈরি করা ডিবির ভূমিকা বিবেচনা করে ভিন্ন হতে পারে rate আমি আশা করি এটি সহায়ক।


1
1. ধন্যবাদ, এটি আশ্বাস দেয়! 2 এবং 3. সূচীগুলি কীভাবে কাজ করে তা আমি এখনও জানি না, এটি আমি পড়ার পরিকল্পনা করেছি। আমাদের যদি কখনও মিলিয়ন রেকর্ডে পৌঁছানোর "সমস্যা" থাকে তবে সম্ভবত অভিজ্ঞ বিকাশকারীদের ভাড়া দেওয়ার জন্য একটি বাজেট হবে: পি বিদ্যমান বিভিন্ন ডিবি ভূমিকার অন্তর্দৃষ্টিটির জন্য ধন্যবাদ, এটি আমার কাছে নতুন এবং এটি জানতে খুব আকর্ষণীয়। আপনি যা বর্ণনা করেছেন তা মূলত প্রকল্পের শেষ লক্ষ্য হিসাবে আমি স্ন্যাপশটগুলিতে সন্ধান করব।
বব এস্পোনজা

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

14

আপনি সঠিক ধারণা পেয়েছেন। তবে আপনি এটি পরিষ্কার করতে পারেন এবং ম্যাপিংয়ের কয়েকটি (টেক্সট টেবিল) মুছে ফেলতে পারেন।

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

তা ছাড়া, আমি মনে করি সবকিছু ঠিক আছে ...


4
আমি মনে করি যদি তিনি বিভিন্ন বিভাগ বা শহর জুড়ে বিভাগের সংজ্ঞা পুনরায় ব্যবহার করতে চান তবে তার ম্যাপিং টেবিলগুলি দরকার।
জ্যাকব জি

1
হ্যাঁ, আমি রাজি হব ..... তবে এটি মনে হয়েছিল এক বিভাগ কেবলমাত্র একটি শহরে / বিচ্ছেদ হতে পারে। যদি তা না হয় তবে তার যা ছিল তা অবশ্যই সঠিক ছিল।
শ্রদ্ধেয় গঞ্জো

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

6

আমি কেবলমাত্র পরিবর্তনগুলি করব:
1- আপনার ভিচারারকে এনভিচারচারে পরিবর্তন করুন, আপনি যদি আন্তর্জাতিক হয়ে যেতে পারেন তবে আপনি ইউনিকোড পেতে চাইতে পারেন।

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

3- আপনার সংস্থার জন্য -> বিভাগ -> বিভাগের কাঠামো পর্যাপ্ত না হতে পারে Three এখন, এটি ওভার ইঞ্জিনিয়ারিং হতে পারে তবে আপনি এই শ্রেণিবিন্যাসকে সাধারণীকরণ করতে পারেন যাতে আপনি এন-স্তরকে গভীরতার সাথে সমর্থন করতে পারেন। এটি আপনার কিছু প্রশ্নের আরও জটিল করে তুলবে, যাতে এটি বাণিজ্য বন্ধ নাও হতে পারে। আরও, এটি এমনও হতে পারে যে কোনও ক্লায়েন্টের আরও স্তর রয়েছে সহজেই এই মডেলটিতে "স্ট্যাফটেবল" হতে পারে।

4- আপনার ক্লায়েন্ট টেবিলের একটি স্ট্যাটাসও রয়েছে যা একটি ভিআরচআরআর এবং স্ট্যাটাস টেবিলের কোনও লিঙ্ক নেই। আমি সেখানে ক্লায়েন্টের স্ট্যাটাসটি কী উপস্থাপন করে সে সম্পর্কে আরও কিছুটা স্পষ্টতা আশা করব।


1- ধন্যবাদ, আমি ডায়ায়্রিটিক্স এবং ইউটিএফ 8 নিয়ে সমস্যায় পড়েছি যার জন্য আমি আরও একটি প্রশ্ন পোস্ট করতে চলেছি। সম্ভবত এটিই সমস্যা। 2- আমি এসও তে এই বিষয়ে আরও বিবাদী মতামত নিয়ে আরও কিছু প্রশ্ন পড়েছি, আমি এই বিষয়ে আরও পড়ব। 3- আমি আবার আমার বাবার সাথে এই কথা বলব, আমি যে "স্পিপ" লিখেছি তা দেখছি এবং দেখি এটি আমাদের কিছু দেখার উচিত কিনা।
বব এস্পোঞ্জ

4- আমি সংক্ষিপ্তসার জন্য মূল প্রশ্নে এটি প্রবেশ করিনি: ক্লায়েন্টের স্ট্যাটাসটি হ'ল তারা সক্রিয় (সেশনগুলি বাকী রয়েছে) বা নিষ্ক্রিয় (কোনও সেশন অবশিষ্ট নেই)। আরও স্পষ্টতার দ্বারা, আপনি কি কর্নেলটির জন্য আরও বর্ণনামূলক নাম বোঝাতে চাইছেন? যেমন এনরোলমেন্ট_স্ট্যাটাস? আপনার ইনপুট জন্য ধন্যবাদ।
বব এস্পোঞ্জ

আবার # 4- আপনার স্বচ্ছ নাম ছাড়াও, যদি কেবল দুটি রাষ্ট্রই থাকে, সক্রিয় / নিষ্ক্রিয় হয়, তবে কেন এটি কেবল সামান্য কলাম তৈরি করবেন না?
জ্যাকব জি

3
জিইউডিগুলি, কাঁপুনি সম্পর্কে মতানৈক্য করুন। তারা অভিনয় জন্য ভয়ঙ্কর হতে পারে। আপনার পুনর্বিবেচনার প্রয়োজন না হলে এগুলি ব্যবহার করবেন না।
এইচএলজিইএম

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

6

না। দেখে মনে হচ্ছে আপনি খুব ভাল স্তরে ডিজাইন করছেন।

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

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

অন্য কথায়, ক্লায়েন্টদের আপনি যে টেবিলে ডিভিশনস_হাস_ বিভাগগুলি কল করেন সেই টেবিলের সাথে লিঙ্ক করা উচিত (তবে আমি কেবল বিভাগগুলি কল করব)। যদি এটি হয় তবে আপনি ডাটাবেসে স্ট্যান্ডার্ড রেফারেনশিয়াল অখণ্ডতা ব্যবহার করতে চাইলে আপনাকে অবশ্যই উপরে বর্ণিত শহরগুলিকে বিভাগগুলিতে পরিণত করতে হবে।


দেশগুলির টেবিলটি যদি / যখন আমাদের ক্লায়েন্ট রয়েছে যা একাধিক দেশে কাজ করে এবং প্রত্যেকের জন্য আলাদা এইচআর বিভাগ রয়েছে for আমরা যে বিভাগটি নিয়ে কাজ করছি সেই দেশ থেকে আমরা ডেটা দিয়ে প্রতিবেদন তৈরি করতে পারি departments দু'টি শহরেই তাদের প্রধান অফিস রয়েছে Or বা কমপক্ষে যুক্তিটি ছিল, আমি সত্যিই এটি প্রয়োজনীয় কিনা তা দেখার জন্য আমি বসে বসে পুনর্বিবেচনা করব। কোম্পানির টাইপ সম্পর্কে ভাবেনি না, এটি আমাদের ট্র্যাক করার দরকার কি না তা আবিষ্কার করব।
বব এস্পোনজা

আরই: সারণি প্রস্থান করে, আমার আসল চিন্তাভাবনাটি হ'ল প্রকৃত বিভাগ হিসাবে এটি ব্যবহার করা ছিল, যার সাথে বিভাগের নামটি ছিল। এটি কেবলমাত্র বিভাগের ধরণগুলির জন্য ঘটেনি, যা আরও যুক্তিযুক্ত বলে মনে হয়। কোন বিভাগ এবং কোন্ কোন্ বিভাগের তা জানার বিষয়ে আমি ভেবেছিলাম যে বিভাগটি একটি শহর এবং বিভাগের সাথে যুক্ত হয়েছে (যা কোনও সংস্থার সাথে যুক্ত) কাজ করবে। আমি কি ভুল ছিলাম? শহরগুলিকে বিভাগগুলিতে ভাঙ্গার জন্য, কিছু বিভাগ একাধিক শহর বিস্তৃত এবং আমি মনে করি সম্ভবত দেশগুলিও। আমি আবার এটি দেখতে হবে। আপনার ইনপুট জন্য ধন্যবাদ।
বব এস্পোনজা

5

যাইহোক, এটি লক্ষণীয় যে আপনি যদি ইতিমধ্যে সিএসভি তৈরি করছেন এবং এগুলি একটি মাইএসকিউএল ডাটাবেসে লোড করতে চান, লোড ডেটা লোকাল ইনফিল আপনার সেরা বন্ধু: http://dev.mysql.com/doc/refman/5.1/ en / load-data.html । মাইস্ক্লিম্পোর্টটি সন্ধানের পক্ষেও মূল্যবান এবং এটি একটি কমান্ড-লাইন সরঞ্জাম যা লোড ডেটা প্রতিরোধের জন্য মূলত একটি দুর্দান্ত মোড়ক।


3

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

আরও একটি জিনিস: আপনি কি বিশ্বাস করেন যে আপনার সত্যিই 'শহর' এবং 'দেশগুলির' টেবিলগুলি দরকার? আপনার ব্যবহারের ক্ষেত্রে বিভাগের টেবিলে একটি 'শহর' এবং 'দেশ' কলামটি যথেষ্ট নয়? যেমন আপনার অ্যাপ্লিকেশনটিতে শহর ও শহর দ্বারা বিভাগগুলি তালিকাভুক্ত করা দরকার?


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

2
একটি ডাটাবেসের নকশা পর্যায়ে অনুকূলকরণ গুরুত্বপূর্ণ! এটি অকাল অপটিমাইজিং নয় কারণ ডেটাবেসগুলি যখন মিলিয়ন রেকর্ড রয়েছে তখন তারা রেফাকোটারের সাথে উল্লেখযোগ্যভাবে শক্ত।
এইচএলজিইএম

1
আমি বলিনি যে তার ডিজাইনের চাপ-পরীক্ষা করা উচিত নয় :)
হ্যান্স ওয়েস্টারবিক

3

বিজনেস ইন্টেলিজেন্স / রিপোর্টিং বিশেষজ্ঞ এবং কৌশল / পরিকল্পনা পরিচালক হিসাবে ভূমিকা উপর ভিত্তি করে মন্তব্য অনুসরণ:

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

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

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

  4. আপনি কয়টি রেকর্ডের সাথে কাজ করবেন তা উল্লেখ করেননি যার দ্বারা নিজেকে একটি বৃহত বিকাশের উদ্যোগের জন্য দাঁড় করানো যেতে পারে যা প্রিপেইকেজড "রিপোর্টিং" সফ্টওয়্যারটির সাথে দ্রুত এবং অনেক কম মাথা ব্যথা করতে পারত। যদি আপনার একটি বৃহত ডাটাবেস (<65000) সারিগুলির সাথে ডিল না করে থাকে তবে নিশ্চিত হয়ে নিন যে এমএস-অ্যাক্সেস, ওপেনঅফিস (বেস) বা সম্পর্কিত প্রতিবেদন / অ্যাপ্লিকেশন ডেভ সমাধানগুলি কৌশলটি করতে পারে না do আমি ওরাকলের ফ্রি এপেক্স সফ্টওয়্যারটি বেশ খানিকটা নিজেরাই ব্যবহার করি, এটি আসে তাদের নিখরচায় ডেটাবেস ওরাকল এক্সই সাথে তাদের সাইট থেকে ডাউনলোড করে।

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

শুভেচ্ছা।


1. আপনার অর্থ ক্লায়েন্টের টেবিলে এই সমস্ত কলাম যুক্ত করা হচ্ছে? আমি মনে করি যে এটি স্বাভাবিকীকরণ ভঙ্গ করবে, এবং ধারাবাহিক রাখাও কঠিন করে তুলবে, আমি নিশ্চিত না যদিও আমি সঠিকভাবে বুঝতে পেরেছি। ২. প্যাকগুলি অনুক্রমিক, কেবল সাম্প্রতিক প্যাকের মধ্যে creditণ বকেয়া থাকতে পারে, তাই একাধিক প্যাকগুলি ট্র্যাক করার প্রয়োজন নেই। আপনি কি এখনও এক্ষেত্রে ক্লায়েন্ট টেবিল এ সঞ্চয় করার পরামর্শ দিবেন? ৩. দেখে মনে হচ্ছে এটি ক্লায়েন্ট সংস্থাগুলির কাঠামো নির্ণয় করতে খুব সহায়ক হবে, আমি এটিকে ধন্যবাদ জানব।
বব এস্পোনজা

৪. আমি পরের বছর ধরে আমাদের যে ক্লায়েন্ট এবং সেশনগুলির প্রত্যাশা রেখেছি তা পরীক্ষা করে দেখতে হবে, তবে সেশন টেবিলটি এক বছরে বা তার বেশি সারিতে পৌঁছানো আমার পক্ষে এটি সম্ভবপর বলে মনে হচ্ছে। আমি রিপোর্টিং সফটওয়্যারটি সন্ধান করব, এটি আমার কাছে ঘটেনি। ৫. মনে হয় দুর্ঘটনাক্রমে আমি এমন পরিস্থিতিতে পৌঁছেছি; ওয়েব অ্যাপ্লিকেশনটি হ'ল আমাদের "লেনদেনের ডাটাবেস" এবং এই প্রকল্পটি আমাদের "পুনর্নির্মাণের ডেটাবেস" হবে :) আপনার ইনপুটটির জন্য ধন্যবাদ।
বব এস্পোনজা

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

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

2

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

আমি অবশ্যই বলতে পারি আপনার ডিজাইনটি প্রথম বছরের সিএস শিক্ষার্থীর জন্য চিত্তাকর্ষক।


1

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


enums খারাপ। যতবারই আপনাকে এনাম বাড়ানোর দরকার হবে, আপনার টেবিলটি পুনরায় তৈরি করতে হবে - যা আপনার টেবিলটি অনেকগুলি জিবি আকারে না হওয়া পর্যন্ত ঠিক।
মার্টিন

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

এটি মনে মনে একটি এনামের জন্য উপযুক্ত বলে মনে হচ্ছে। সমস্ত সম্ভাব্য ফলাফল সময়ের আগে সন্তুষ্ট। একটি অন্তর্নিহিত এছাড়াও খুব ভাল যা আপনি আপনার অ্যাপ্লিকেশন একটি এনাম বা স্থির ints দ্বারা প্রতিনিধিত্ব করতে পারেন। আসলে কিছু যায় আসে না :) আপনি যদি কোনও সরঞ্জাম ব্যবহার করে আপনার ডাটাবেস সম্পাদনা করেন তবে এনামগুলি দেখতে আরও সুন্দর।
ক্রিস ডেনেট

যখন আপনার কাছে বড় টেবিলগুলি অনলাইন 24x7 হতে হবে এবং এনাম পরিবর্তন করা দরকার তখন এনামগুলি সমস্যাযুক্ত হতে পারে (সম্ভবত মন্দটি খুব শক্ত শব্দ) can প্রদত্ত যে আপনি টেবিলগুলি স্ক্র্যাচ থেকে পুনরায় তৈরি করছেন - এটি সম্পর্কে চিন্তা করবেন না। একটি ছোট পর্যাপ্ত ডেটা সেট দেওয়া, আপনি পাশাপাশি কেবল স্ট্রিং ব্যবহার করতে পারেন।
মার্টিন

1

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

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


আমি যদি আপনাকে সঠিকভাবে বুঝতে পারি তবে এটি মোটেই ভাল নয় not "কোর্স" পরবর্তী সেশনগুলির কেবলমাত্র গ্রুপ। এটি কোনও গতানুগতিক সেমিস্টার-ভিত্তিক সিস্টেম নয়। আমি ক্লায়েন্ট ডোমেনে যুক্ত হতে পারে এমন অন্য কোনও কিছু ভাবতে পারি না, আপনার কি কোনও উদাহরণ আছে? এছাড়াও আমি উদ্বিগ্ন ছিলাম যে জটিলতা নিয়ে আমি ইতিমধ্যে ওভারবোর্ডে গিয়েছি, খুশি তা ঘটেনি :) আপনার ইনপুটটির জন্য ধন্যবাদ।
বব এস্পোঞ্জ

0

কয়েকটি বিষয় মাথায় এলো:

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

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

  3. "প্যাকগুলি" ধারণাটি মোটেই পরিষ্কার নয়।

  4. যেহেতু আপনি এটি একটি ছোট ব্যবসা নির্দেশ করেছেন তাই বর্তমান মেশিনগুলির গতি এবং ক্ষমতা বিবেচনা করে পারফরম্যান্স কোনও সমস্যা হয়ে থাকলে অবাক করা হবে।

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