3 回答

TA貢獻1875條經(jīng)驗 獲得超5個贊
千萬不能把它們都放在一個表與IsCurrent鑒別屬性。這僅會導致一系列問題,需要代理密鑰和各種其他問題。
設(shè)計2確實存在模式更改問題。如果更改了Employees表,則必須更改EmployeeHistories表及其所伴隨的所有相關(guān)存儲??赡苁鼓募軜?gòu)更改工作加倍。
設(shè)計1運作良好,如果做得好,不會對性能造成太大影響。您可以使用xml模式甚至索引來克服可能的性能問題。您對解析xml的評論是有效的,但是您可以使用xquery輕松創(chuàng)建視圖-您可以將其包含在查詢中并加入其中。像這樣
CREATE VIEW EmployeeHistory
AS
, FirstName, , DepartmentId
SELECT EmployeeId, RevisionXML.value('(/employee/FirstName)[1]', 'varchar(50)') AS FirstName,
RevisionXML.value('(/employee/LastName)[1]', 'varchar(100)') AS LastName,
RevisionXML.value('(/employee/DepartmentId)[1]', 'integer') AS DepartmentId,
FROM EmployeeHistories
添加回答
舉報