পোস্টগ্রিএসকিউএল-এ উত্তরাধিকার সূত্রে প্রাপ্ত টেবিলগুলি কখন ব্যবহার করবেন?


84

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

আমি ভেবেছিলাম এটি এটির মতো কাজ করেছে:

সারণীতে usersসকল ব্যবহারকারীর স্তরের জন্য প্রয়োজনীয় সমস্ত ক্ষেত্র রয়েছে। টেবিল পছন্দ moderators, admins, bloggers, ইত্যাদি কিন্তু ক্ষেত্র না পিতা বা মাতা থেকে চেক। উদাহরণস্বরূপ usersইমেলের ক্ষেত্র রয়েছে এবং উত্তরাধিকার সূত্রে bloggersএটি এখন খুব বেশি রয়েছে তবে এটি উভয় usersএবং bloggersএকই সাথে অনন্য নয় । অর্থাত্ উভয় টেবিলের মতো আমি ইমেল ক্ষেত্র যুক্ত করি same

কেবলমাত্র ব্যবহারের জন্য আমি ভাবতে পারি এমন ক্ষেত্রগুলি যা সাধারণত ব্যবহৃত হয়, যেমন সারি_আইস_ডিলিটেড , তৈরি_আট , পরিবর্তিত_এট । উত্তরাধিকার সূত্রে প্রাপ্ত টেবিলগুলির জন্য এটিই কি একমাত্র ব্যবহার?

উত্তর:


111

পোস্টগ্রিতে টেবিলের উত্তরাধিকার ব্যবহারের কয়েকটি বড় কারণ রয়েছে।

বলি, আমাদের পরিসংখ্যানগুলির জন্য কিছু টেবিল রয়েছে যা প্রতি মাসে তৈরি করা হয় এবং পূরণ করা হয়:

statistics
    - statistics_2010_04 (inherits statistics)
    - statistics_2010_05 (inherits statistics)

এই নমুনায়, আমাদের প্রতিটি টেবিলের মধ্যে 2.000.000 সারি রয়েছে। প্রতিটি টেবিলের মধ্যে ম্যাচের মাসের জন্য কেবলমাত্র ডেটা এতে সঞ্চিত থাকে তা নিশ্চিত করার জন্য একটি চেক বাধা রয়েছে।

সুতরাং উত্তরাধিকারটিকে কী দুর্দান্ত বৈশিষ্ট্য হিসাবে তৈরি করে - ডেটা বিভক্ত করা কেন শীতল?

  • কার্যকারিতা: ডেটা বাছাই করার সময়, আমরা এক্স এবং ওয়াইয়ের চেয়ে তারিখের কোথাও পরিসংখ্যান থেকে * নির্বাচন করি এবং পোস্টগ্র্রেস কেবল টেবিলগুলি ব্যবহার করে, যেখানে এটি বোধগম্য হয়। যেমন পরিসংখ্যান থেকে * নির্বাচন করুন যেখানে '2010-04-01' এবং '2010-04-15' এর মধ্যে কেবলমাত্র টেবিলের পরিসংখ্যানগুলি স্ক্যান করে_2010_04, অন্যান্য সমস্ত সারণী স্পর্শ করবে না - দ্রুত!
  • সূচকের আকার: কলামের তারিখে বড় ফ্যাট সূচক সহ আমাদের কাছে কোনও বড় ফ্যাট টেবিল নেই। আমাদের প্রতি মাসে ছোট ছোট টেবিল রয়েছে, ছোট সূচীগুলি - দ্রুত পাঠ্য।
  • রক্ষণাবেক্ষণ: আমরা অন্যান্য সমস্ত ডেটা লক না করে ভ্যাকুয়াম পূর্ণ, রিইন্ডেক্স, ক্লাস্টারটি প্রতি মাসের টেবিলে চালাতে পারি

পারফরম্যান্স বুস্টার হিসাবে সারণীর উত্তরাধিকারের সঠিক ব্যবহারের জন্য, পোস্টগ্র্যাস্কল ম্যানুয়ালটি দেখুন। ডাটাবেসটি জানাতে আপনাকে প্রতিটি টেবিলে CHECK সীমাবদ্ধতা নির্ধারণ করতে হবে, কোন কীতে আপনার ডেটা বিভক্ত হয়ে যায় (পার্টিশনযুক্ত)।

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

আপডেট: ফিলফ্যাক্টর ডিফল্টটি 100, http://www.postgresql.org/docs/9.1/static/sql-createtable.html থেকে :

একটি টেবিলের জন্য ফিলফ্যাক্টরটি 10 ​​থেকে 100 এর মধ্যে শতাংশ। 100 (সম্পূর্ণ প্যাকিং) ডিফল্ট



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

4
প্যারেন্ট টেবিলে একটি কোয়েরি করা কার্যকরভাবে সাধারণ সারিগুলির প্রতিটি বংশধর টেবিল জুড়ে একটি ইউনিয়ন ALL এ একটি কোয়েরি সম্পাদনের সমান। ক্যোয়ারী পরিকল্পনাকারী প্রতিটি পার্টিশন সংজ্ঞায়িত চেক সীমাবদ্ধতা সম্পর্কে অবগত এবং যতক্ষণ না তারা পার্টিশনকে ওভারল্যাপ না করে তা নির্ধারণ করতে ব্যবহার করে যে এটি চেকিং টেবিলগুলি এড়াতে পারে যার জন্য CHECKs নির্দেশ করে যে কোনও সারি ফিরে আসবে না। এটিতে ডক্স পোস্ট করে
zxq9

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

হুঁ। আপনি কি নিশ্চিত যে এটি অবরুদ্ধ হয় না? আমার অনুরূপ সেটআপ রয়েছে, তবে আমি যখন একটি একক পার্টিশনে ক্লুস্টার কমান্ডটি চালাচ্ছি, তখন অন্য পার্টিশন ব্লকের হাতে থাকা ডেটা সম্পর্কিত একটি নির্বাচনী বিবৃতি!
ই ভ্যান পুটেন

37

"টেবিলের উত্তরাধিকার" এর অর্থ "শ্রেণীর উত্তরাধিকার" এর চেয়ে আলাদা কিছু এবং তারা বিভিন্ন উদ্দেশ্যে পরিবেশন করে।

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

ওওপি জমিতে আমি সংজ্ঞায়িত করতে পারি (সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের সাথে এখানে খুব শিথিল হওয়া):

import life

class Animal(life.Autonomous):
  metabolism = biofunc(alive=True)

  def die(self):
    self.metabolism = False

class Mammal(Animal):
  hair_color = color(foo=bar)

  def gray(self, mate):
    self.hair_color = age_effect('hair', self.age)

class Human(Mammal):
  alcoholic = vice_boolean(baz=balls)

এর জন্য সারণীগুলি দেখতে দেখতে পারা যায়:

CREATE TABLE animal
  (name       varchar(20) PRIMARY KEY,
   metabolism boolean NOT NULL);

CREATE TABLE mammal
  (hair_color  varchar(20) REFERENCES hair_color(code) NOT NULL,
   PRIMARY KEY (name))
  INHERITS (animal);

CREATE TABLE human
  (alcoholic  boolean NOT NULL,
   FOREIGN KEY (hair_color) REFERENCES hair_color(code),
   PRIMARY KEY (name))
  INHERITS (mammal);

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

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

CREATE TABLE animal
  (name       varchar(20) PRIMARY KEY,
   ilk        varchar(20) REFERENCES animal_ilk NOT NULL,
   metabolism boolean NOT NULL);

CREATE TABLE mammal
  (animal      varchar(20) REFERENCES animal PRIMARY KEY,
   ilk         varchar(20) REFERENCES mammal_ilk NOT NULL,
   hair_color  varchar(20) REFERENCES hair_color(code) NOT NULL);


CREATE TABLE human
  (mammal     varchar(20) REFERENCES mammal PRIMARY KEY,
   alcoholic  boolean NOT NULL);

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


আপনি যদি প্রতিটি পরিচিত স্তন্যপায়ী যুক্ত হন? আপনি কি এখানে স্তন্যপায়ী থেকে উত্তরাধিকারী হবেন বা আপনার মতো বিদেশী কী পাবেন? বিদেশী কীগুলির সাথে আমার যে সমস্যাটি হ'ল তা হ'ল আপনি এতগুলি যোগদান করে।
puk

4
@ পুক আপনাকে প্রথমে সিদ্ধান্ত নিতে হবে যে আপনি কেন প্রতিটি পরিচিত স্তন্যপায়ী যুক্ত করছেন। যেভাবে ডেটা ব্যবহৃত হবে তা দিয়ে ডেটার আকারটি নির্ধারণ করা যাচ্ছে (সম্ভবত এই ক্ষেত্রে প্রাণীর জন্য একটি টেবিল থাকা প্রয়োজন নেই - গেম বেসিরিয়ার্সের ডেটাবেসগুলি বিবেচনা করুন যেখানে আপনার কাছে সত্যই প্রতিটি ধরণের ভিড় রয়েছে )। উপরের ক্ষেত্রে আমি সাধারণত একটি ভিউ যুক্ত করব যা সর্বাধিক সাধারণ ঘটনা mammal JOIN human, কেবল কারণ প্রতিবার যোগদান করে লেখা বিরক্ত করে। তবে যোগদান এড়বেন না । আরডিবিএমএস-এ আর কী রাখে তা যোগ দেয়। আপনি যদি যোগ দিতে চান না তবে আপনার আলাদা ডিবি টাইপ ব্যবহার করা উচিত।
zxq9

@ জেডএক্সকিউ 9: আমি অনুমান করছি যে বৃহত টেবিলগুলির কারণে বিশাল, অদক্ষ সংখ্যায় মিলিত হয় যেখানে বস্তুগত দৃষ্টিভঙ্গি কার্যকর হয়? (আমি এত দিন পোস্টগ্র্রেস ব্যবহার করি না)
মার্ক কে কোয়ান

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

4
@ মারককোয়ান "ধীর" একটি আপেক্ষিক শব্দ। বৃহত্তর ব্যবসায়িক সিস্টেম এবং গেম সার্ভারগুলিতে যেখানে আমরা কোনও জিজ্ঞাসা ফেরত দেওয়ার জন্য ms 50ms গ্রহণ করতে পারি, আমার অভিজ্ঞতায় 20 টি টেবিল যোগ দেয় না (পোষ্টগ্রিস 8+ তে যাই হোক) been তবে যে ক্ষেত্রে পরিচালনাগুলি 10 বি সারিতে <1 এস প্রতিক্রিয়া চায়> আনইনডেক্সড ডেটাতে (বা উত্পন্ন মানগুলি!) 5+ টেবিল জুড়ে যোগ দেয় ... বিশ্বের কোনও সিস্টেমই গত মাসে এটি যোগ করা এবং স্ট্যাশিংয়ের ব্যতীত "দ্রুত" বোধ করবে না দ্রুত কে / ভি স্টোরে (যা মূলত কোনও বস্তুগত দৃষ্টিভঙ্গি বিশেষ পরিস্থিতিতে যেমন কাজ করতে পারে) is লেখার বা পড়ার সময়টিতে কোনও বাণিজ্য থেকে পালাতে পারবেন না।
zxq9

6

উত্তরাধিকার হ'ল একটি ওওপি দৃষ্টান্তে ব্যবহার করা যেতে পারে যতক্ষণ না প্যারেন্ট টেবিলে বিদেশী কীগুলি তৈরি করার দরকার নেই। উদাহরণস্বরূপ, আপনার যদি একটি বিমূর্ত শ্রেণীর যানবাহন কোনও গাড়ির টেবিল এবং এটির উত্তরাধিকার সূত্রে প্রাপ্ত একটি টেবিল গাড়ীতে থাকে তবে সমস্ত গাড়ি গাড়ির টেবিলটিতে দৃশ্যমান হবে তবে গাড়ির টেবিলের ড্রাইভার টেবিলের একটি বিদেশী কী এর সাথে মেলে না won't রেকর্ড।

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


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

3

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

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


2

উত্তরাধিকার সূত্রে প্রাপ্ত টেবিলগুলির সাথে আমার একমাত্র অভিজ্ঞতা, বিভাজনে। এটি দুর্দান্ত কাজ করে তবে এটি পোস্টগ্র্রেএসকিউএল এর সর্বাধিক পরিশীলিত এবং ব্যবহার করা সহজ নয়।

গত সপ্তাহে আমরা একই ওওপি সমস্যাটি দেখছিলাম, তবে হাইবারনেট (আমাদের সেটআপ পছন্দ হয়নি) এর সাথে আমাদের অনেক সমস্যা হয়েছিল, তাই আমরা পোস্টগ্র্যাসকিউএলএতে উত্তরাধিকার ব্যবহার করি নি।


0

টেবিলের মধ্যে আমার 1 টির বেশি 1 টির বেশি সম্পর্ক থাকলে আমি উত্তরাধিকার ব্যবহার করি।

উদাহরণ: ধরুন আপনি x, y, ঘূর্ণন, স্কেল বৈশিষ্ট্যযুক্ত অবজেক্ট ম্যাপের অবস্থানগুলি সঞ্চয় করতে চান।

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

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


-4

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

পরিবর্তে, আরও সাধারণ ফর্মগুলি সহ যথাযথ সম্পর্কযুক্ত মডেলিংয়ের সাথে মিলিত সারণী বিভাজন ব্যবহার করুন।


4
এটি সত্য নয় যে পোস্টগ্রিসএসকিউএলসের উত্তরাধিকার বৈশিষ্ট্য তথ্য নীতিটি ভঙ্গ করে সম্পর্কের মডেলটিকে লঙ্ঘন করে। তথ্য নীতি বলে, যে একটি রিলেশনাল ডাটাবেসের মধ্যে সমস্ত ডেটা সম্পর্ক ডাটা মান দ্বারা প্রতিনিধিত্ব করা হয় এবং সমস্ত অনুসন্ধানের ফলাফলগুলি চলে আবার সম্পর্ক হিসাবে প্রতিনিধিত্ব করা হয়। ( En.wikipedia.org/wiki/Relational_model ) এই সবসময় ক্ষেত্রে, সব টেবিল থেকে , যে অন্য টেবিলের উত্তরাধিকারী, আবার সাধারণ টেবিল। যে কারণে একটি "ব্যাগ" হিসাবে কিছুই নেই, এর অর্থ যাই হোক না কেন।
রোল্যান্ড

4
ঠিক আছে, উইকিপিডিয়া সম্পর্কিত সম্পর্ক সম্পর্কিত মডেল সম্পর্কে খুব কমই উল্লেখ করা যেতে পারে; এটি এসকিউএলটি সম্পর্কিত মডেল লঙ্ঘন করে তা স্বীকার করতে অস্বীকার করে। একটি ব্যাগ একটি চাবিবিহীন একটি টেবিল, কারণ এটির সদৃশ নকল রয়েছে, সুতরাং এটি কোনও সম্পর্ক নয়; একটি সম্পর্ক একটি সেট হতে হবে।
লিয়ান্ড্রো

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

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