2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
Model是到概念模型的映射,而不是到表的映射。Model是和模型一致,而不是和數(shù)據(jù)表一致。
模型可以存在一張表,也可以存進(jìn)多張表。如果是一張表,那么碰巧Model可以和一張數(shù)據(jù)表一致,如果User這個(gè)概念正好是一張表,那么UserModel映射到這張表是自然的,如果User這個(gè)概念有多張表來(lái)實(shí)現(xiàn),那么UserModel應(yīng)該映射到是一個(gè)JOIN的結(jié)果,這并不矛盾,概念是一致的,只不過(guò)存儲(chǔ)細(xì)節(jié)不同而已。數(shù)據(jù)分多少?gòu)埍泶鎯?chǔ)是底層設(shè)計(jì)問(wèn)題,Model如何抽象是上層概念,抽象不應(yīng)受限于底層存儲(chǔ),而應(yīng)該隱藏底層存儲(chǔ)的細(xì)節(jié),這是用Model的目的。
明白了這一點(diǎn),你的選擇就多了,無(wú)論是user表做冗余,一次查詢,還是分表做JOIN,這些只是具體實(shí)現(xiàn),是Model自己內(nèi)部要處理的問(wèn)題,都不應(yīng)該影響你Model本身的接口設(shè)計(jì),所以UserModel始終應(yīng)該包含這些額外數(shù)據(jù)的成員,只不過(guò)具體使用的時(shí)候,你可以優(yōu)化這個(gè)它的實(shí)現(xiàn),允許使用它的代碼按需加載額外數(shù)據(jù),這又是一個(gè)實(shí)現(xiàn)細(xì)節(jié),不改變概念上這些額外數(shù)據(jù)的存在。

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
做好保持一致啊,這樣時(shí)間久遠(yuǎn)自己也不會(huì)忘記,并且自己開(kāi)發(fā)其他項(xiàng)目時(shí),別的同事可以更快速的接手你之前的工作。
- 2 回答
- 0 關(guān)注
- 641 瀏覽
添加回答
舉報(bào)