মনে করুন আমার কাছে একটি অবজেক্ট রয়েছে, নির্দিষ্ট ক্ষেত্রগুলি যা আমি ইতিহাস ট্র্যাক করতে চাই এবং নির্দিষ্ট ক্ষেত্রগুলি যা আমি ইতিহাস ট্র্যাক করতে চাই না। একটি সাধারণকরণের দৃষ্টিকোণ থেকে, নিম্নলিখিত স্কিমা ঠিক আছে:
CREATE TABLE MyObject AS (
MyObjectId INT IDENTITY NOT NULL PRIMARY KEY,
MyObjectField1 VARCHAR(100) NOT NULL,
MyObjectField2 VARCHAR(100) NOT NULL,
MyObjectField3 VARCHAR(100) NOT NULL,
MyObjectTrackedField1 VARCHAR(100) NOT NULL,
MyObjectTrackedField2 VARCHAR(100) NOT NULL,
MyObjectTrackedField3 VARCHAR(100) NOT NULL,
)
CREATE TABLE MyObjectHistory AS (
MyObjectHistoryId INT IDENTITY NOT NULL PRIMARY KEY,
MyObjectId INT NOT NULL FOREIGN KEY REFERENCES MyObject(MyObjectId),
MyObjectTrackedField1 VARCHAR(100) NOT NULL,
MyObjectTrackedField2 VARCHAR(100) NOT NULL,
MyObjectTrackedField3 VARCHAR(100) NOT NULL,
)
যেখানে মায়োবজেক্টহিস্টরিতে সর্বশেষ সংস্করণ ব্যতীত সকলের জন্য ট্র্যাক করা ক্ষেত্র রয়েছে। বা, সমস্ত ট্র্যাক করা ক্ষেত্রগুলি একটি টেবিলের মধ্যে থাকা উচিত, এবং সর্বশেষ সহ সমস্ত সংশোধনী সেই টেবিলে থাকা উচিত:
CREATE TABLE MyObject AS (
MyObjectId INT IDENTITY NOT NULL PRIMARY KEY,
MyObjectField1 VARCHAR(100) NOT NULL,
MyObjectField2 VARCHAR(100) NOT NULL,
MyObjectField3 VARCHAR(100) NOT NULL,
)
CREATE TABLE MyObjectHistory AS (
MyObjectHistoryId INT IDENTITY NOT NULL PRIMARY KEY,
MyObjectId INT NOT NULL FOREIGN KEY REFERENCES MyObject(MyObjectId),
MyObjectTrackedField1 VARCHAR(100) NOT NULL,
MyObjectTrackedField2 VARCHAR(100) NOT NULL,
MyObjectTrackedField3 VARCHAR(100) NOT NULL,
)