Model 应该要和数据库表结构一致么
2个回答
2016-12-29
展开全部
Model是到概念模型的映射,而不是到表的映射。Model是和模型一致,而不是和数据表一致。
模型可以存在一张表,也可以存进多张表。如果是一张表,那么碰巧Model可以和一张数据表一致,如果User这个概念正好是一张表,那么UserModel映射到这张表是自然的,如果User这个概念有多张表来实现,那么UserModel应该映射到是一个JOIN的结果,这并不矛盾,概念是一致的,只不过存储细节不同而已。数据分多少张表存储是底层设计问题,Model如何抽象是上层概念,抽象不应受限于底层存储,而应该隐藏底层存储的细节,这是用Model的目的。
明白了这一点,你的选择就多了,无论是user表做冗余,一次查询,还是分表做JOIN,这些只是具体实现,是Model自己内部要处理的问题,都不应该影响你Model本身的接口设计,所以UserModel始终应该包含这些额外数据的成员,只不过具体使用的时候,你可以优化这个它的实现,允许使用它的代码按需加载额外数据,这又是一个实现细节,不改变概念上这些额外数据的存在。
模型可以存在一张表,也可以存进多张表。如果是一张表,那么碰巧Model可以和一张数据表一致,如果User这个概念正好是一张表,那么UserModel映射到这张表是自然的,如果User这个概念有多张表来实现,那么UserModel应该映射到是一个JOIN的结果,这并不矛盾,概念是一致的,只不过存储细节不同而已。数据分多少张表存储是底层设计问题,Model如何抽象是上层概念,抽象不应受限于底层存储,而应该隐藏底层存储的细节,这是用Model的目的。
明白了这一点,你的选择就多了,无论是user表做冗余,一次查询,还是分表做JOIN,这些只是具体实现,是Model自己内部要处理的问题,都不应该影响你Model本身的接口设计,所以UserModel始终应该包含这些额外数据的成员,只不过具体使用的时候,你可以优化这个它的实现,允许使用它的代码按需加载额外数据,这又是一个实现细节,不改变概念上这些额外数据的存在。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询