3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
千萬不能把它們都放在一個(gè)表與IsCurrent鑒別屬性。這僅會(huì)導(dǎo)致一系列問題,需要代理密鑰和各種其他問題。
設(shè)計(jì)2確實(shí)存在模式更改問題。如果更改了Employees表,則必須更改EmployeeHistories表及其所伴隨的所有相關(guān)存儲(chǔ)??赡苁鼓募軜?gòu)更改工作加倍。
設(shè)計(jì)1運(yùn)作良好,如果做得好,不會(huì)對(duì)性能造成太大影響。您可以使用xml模式甚至索引來克服可能的性能問題。您對(duì)解析xml的評(píng)論是有效的,但是您可以使用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
添加回答
舉報(bào)