"টেবিলের উত্তরাধিকার" এর অর্থ "শ্রেণীর উত্তরাধিকার" এর চেয়ে আলাদা কিছু এবং তারা বিভিন্ন উদ্দেশ্যে পরিবেশন করে।
পোস্টগ্রিসগুলি ডেটা সংজ্ঞা সম্পর্কিত। কখনও কখনও সত্যিই জটিল ডেটা সংজ্ঞা। ওওপি (জিনিসগুলির সাধারণ জাভা বর্ণের অর্থে) একক পারমাণবিক কাঠামোর ডেটা সংজ্ঞাতে আচরণকে অধস্তন করার বিষয়ে। "উত্তরাধিকার" শব্দের উদ্দেশ্য এবং অর্থ এখানে উল্লেখযোগ্যভাবে পৃথক।
ওওপি জমিতে আমি সংজ্ঞায়িত করতে পারি (সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের সাথে এখানে খুব শিথিল হওয়া):
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- শৈলীর শ্রেণীর উত্তরাধিকার অবলম্বন করেন।