zoukankan      html  css  js  c++  java
  • model一定是和数据库表对应的么?

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

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

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

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


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

    6,涉及到下拉列表时,可以选择再次请求后台输出(很多网站都是这么做的),也可以进行页面的封装,一次将数据都取回来(ViewModel),然后自己用JS进行html封装

    应该采取什么样的方式呢?
    或者是不是应该创建一个数据库视图?可以将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、Model不一定和数据库表一致,结构简单时可以一致,Model中比表中多的字段再进行插入更新数据时可以不使用
            2、划分为Model和ViewModel,会构建多个model,ViewModel是前台展示Model,可以是多个Model的结合体,ViewModel结构取决于前端页面有哪些数据,是整个页面的数据,而不仅仅是表关联的查询结果。

           

  • 相关阅读:
    C语言 · 阶乘计算 · 基础练习
    C语言 · 查找整数 · 基础练习
    UML课程复习重点
    运维参考
    mysql语法总结
    Python杂篇
    Python练习题
    Python参考
    k8s中ipvs和iptables选择
    安装cni网络插件-非必须
  • 原文地址:https://www.cnblogs.com/beipiaoxiaohuo/p/5912261.html
Copyright © 2011-2022 走看看