以下の DDL をご覧ください。
CREATE TABLE Sport (ID int, Description varchar(50),primary key(ID))
CREATE TABLE Audit (AditID int, PersonID int, SportID int, AuditDate datetime,primary key(id))
CREATE Table Person (ID int not null, Name varchar(50), FavouriteSportID int, PRIMARY KEY (id),
FOREIGN KEY (FavouriteSportID) REFERENCES Sport(Id))
INSERT INTO Sport VALUES (1,'Football')
INSERT INTO Sport VALUES (2,'Basketball')
INSERT INTO Sport VALUES (3,'Squash')
INSERT INTO Person VALUES (1,'Ian',1)
INSERT INTO Audit VALUES (1,1,1,'2012-01-01')
INSERT INTO Audit VALUES (2,1,1,'2012-02-01')
INSERT INTO Audit VALUES (3,1,'2012-03-01')
監査テーブルには、個人が過去に好きだったスポーツが表示されます。
これには、Person.FavouriteSportID と最新の監査レコード (監査レコード ID 3) の 2 つの場所にお気に入りのスポーツを保存する必要があることを認識しています (監査レコードが最新であるため)。
この単純な要件に対してより良い設計があるかどうか疑問に思っています。