model一定是和数据库表对应的么?

Posted 北漂小伙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了model一定是和数据库表对应的么?相关的知识,希望对你有一定的参考价值。

Model既不绝对对应数据表,也不需要对应前端视图,Model对应的是“数据模型”这个抽象的概念 —— 状态和操作。

数据表是Model的存储实现,存储实现不一定只有数据表,可能用不同存储系统存放
数据分片,Model的作用就是掩盖这个底层细节,给上层代码一个统一稳定的接口。

前端视图需要Model的状态,但并不直接操作Model,这是Controller或者View做的事,所以本身并不直接决定Model的
设计。

Model的设计表面上同时对应数据表和前端视图,严格地说两者都不是Model设计的起因。Model实现“数据模型”这个抽象的概念。


Model 应该要和数据库表结构一致么?
以user为例子,假设前端呈现的user信息有某个字段不包含在user表内,而是要通过联合其他表多表查询得出。
这个时候后端UserModel应该:
1,和数据库保持一致,发送数据给前端前 整合数据(发送另一个user class)
2,和前端保持一致,在后端填充构造Model时就一步到位。(目前我是真么做的,Model里冗余了数据字段,未和数据表一一对应)
3,多造API,从前台整合数据。
4,在user表中添加一个字段
5,其他

应该采取什么样的方式呢?
或者是不是应该创建一个数据库视图?可以将view 作为数据源获取数据么?

不考虑修改成本。

新手,问得问题比较傻,如有错误,大家可以随意喷。。。但希望还是可以帮我解答一下,十分感谢!

所以才会提出MVVM啊
M = Model = 映射数据库结构
VM = ViewModel = 映射显示层需要的数据结构
V = View = 显示层本身

当然这个概念本来是给WPF和银光用的,所以放到web app上不完全合适。但是基
本概念没任何问题

在web app里边
V层就是你的前端,html+CSS+JS
VM就是你的web service返回值以及前端JS需要的数据结构
M就是你后台的数据映射

VM和M之间的转化就是你的web service
V和VM之间的关
系一般靠各种框架来解决,比如React或者Angular等等

至于你的VM和M怎么划分,那就是另一个问题了

 


结论:1、不一定一致,结构简单时可以一致
         2、划分为Model和ViewModel,会构建多个model

以上是关于model一定是和数据库表对应的么?的主要内容,如果未能解决你的问题,请参考以下文章

python django应用中的model啥作用

一条sql 俩个表级联查询的语句,我想只显示前七条,从表有一个字段是和主表对应的。要求一起显示。。。。

我做开发时,习惯数据库中每个表对应一个model类,里面封装各种操作,这样做好吗?

thinkphp model 必须对应数据库表名

django中数据查找条件是表中的外键对应表的列该如何查找?

在db2 如何计算表空间和表缓存空间?有会的么?