BeX5开发中MySQL视图使用的一个小问题
问题
数据操作中的查询是极端重要的,使用频繁。MySQL数据库中视图概念的存在十分类似于微软Access小型关系数据库中的查询(二级考试重点)。视图的存在极大减小了数据表的创建数量,而且还有更为高级的运用技巧。本文介绍在基于起步科技的BeX5平台上使用MySQL数据库中视图时反向生成本体时注意的一个小问题。
MySQL数据库中表在BeX5平台开发中对应于“物理表”概念,但是为了增强软件开发中数据层的灵活性(软件需求阶段的实体结构不是一下百分之分确定的;有时需要不断调整),平台引入了本体的概念。
实际开发中,一般需要先创建本体,再由本体生成物理表。但是,有时在已经存在物理表的情况下,也需要由物理表反向生成本体。
上面提到了视图(相当于ACCESS的选择查询)的重要性;但是,要想在BeX5平台开发中使用视图技术,则必然需要和本体打交道。这就需要由视图反向生成本体。
第一,在MySQL中创建视图是比较简单的,如下例:
CREATE VIEW v AS mv_homepage_person_view SELECT a.fID,a.fLegCode,a.fCaseName,a.fBeginDate,a.fWho,b.fPersonName,c.fEndDate FROM MV_LegInfo a,MV_Person2 b,MV_Penalty2 c where a.fLegCode=b.fLegCode and b.fLegCode=c.fLegCode
上述视图一旦保存,便生成MySQL中的一个物理表(这一点与Access的生成表查询是一致的)。
第二,在平台端即可由上述由视图创建的表反向生成平台开发要求的本体。
此过程中,许多初次使用这个功能的同学往往在创建上面视图时忽略了字段a.fID的选择,而这个字段在默认的平台生成的本体中是担当主键作用的,而且其默认值为guid()。如果不选择这个字段,则创建UI2端.W文件时引用此本体对应的ACTION必然出现错误(提示大致内容是缺少fID字段)!
解决办法
经过上面分析,解决上述问题的办法就很简单了。但是,要注意两个小问题:
(1)在上面创建视图时一定要选择某一个表的fID字段(其实也未必一定是这个字段,只要是直到主键作用的字段理论上讲都可以--但后面的guid()函数很可以不再适合了,需要根据需要灵活表达)。
(2)在反向生成本体后,一定要修改一下“主键关系”,类似于下图:
点击上面的“主键关系”后在弹出的对话框中选择你创建视图时选择的主键即可。当然,在此高度建议使用默认的fID作为主键。这就要求生成视图的子表中要提供fID字段(这个是平台默认支持的)。
之后的其他操作便不再赘述。尽管视图生成的子表是“死”的,但是由于创建视图的create view语句可以轻松修改,即可以根据开发需要随时创建需要的这种临时表;所以,视图的应用在数据库端是高频的。相应地,在BeX5平台上由视图反向生成本体的操作也会是高频的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从无到用写个股票分析APP(一)
前言:再给自己挖个坑吧。 我想写个什么东西呢? 一:可以浏览当下相关资讯,以及大盘指数实时更新。 二:添加自选股票,可以查看该股票的走势图,相关资讯以及基本数据。 三:通过 server 端定义相关指标及常用策略,手机上可以直接添加已定义的技术指标及策略用以组合,然后在在 server 端得到结果,手机端查看。 项目地址:https://github.com/youerning/pstock 所用技术: ● nodejs:socket.io ● golang ● javascript:angularjs,chartjs ● css. ● Python:tushare,PyAlgoTrade,tornado,flask ● 打包:ionic 然后预览一下两天做的 demo 文章目录: ● 一:布局 ● 二:部分细节说明 ● 三:获取数据 ● 四:绘图 ● 五:编写策略 //等待填坑 ● 六:优化细节 //等待填坑 ● 七:美化,收尾 //等待填坑 注:为了使文章不会过于冗长,代码细节可能有所删减,详情参考项目源码: (一) 1. 环境搭建参考:从无到有写一个运维APP(一) 2. 创建项...
- 下一篇
自定义菜单,仿优酷菜单
效果图如下:点击主页后,上面2个圆环旋转消失与出现,点击中间圆环的中间那个菜单按钮,最外围的圆环旋转消失于出现 利用了自定义控件技术,以及图片的旋转和布局时各个控件的相对关系。 1、acitivity_main.xml的布局文件 <?xmlversion="1.0"encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.yuanlp.youkudemo.MainActivity"> <RelativeLayout android:id="@+id/le...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 2048小游戏-低调大师作品