列名 userid 不明确。 表结构_那些你不知道的表结构设计思路

ERP表结构的设计--第9篇

用日志记录“开源软件”的诞生

赤龙ERP开源地址:

点亮星标,感谢支持,与开发者交流 kzca2000

码云:

https://gitee.com/redragon/redragon-erp

GitHub:

https://github.com/redragon1985/redragon-erp

赤龙ERP官网:

https://www.redragon-erp.com

52721417e491e0eddf6c1b52b9013b94.png

前言

上一篇文章说了ERP的系统设计,数据库结构只是一笔带过,今天重点说说我在【赤龙ERP】的表结构里面的都做了哪些特殊的设计,并且为什么这么设计。

ID与编码

我在每一个表几乎无一例外的都增加了两个默认的字段,即ID和Code。这两个字段看似都是可标识数据的唯一性字段,但为什么要设计两个呢?它们当然各有用途。

(1)ID是一个表的主键,一般都是自增的,主要用于排序、定位、查询,由于它是数字所以更清晰、速度更快。

(2)Code是唯一键,类型多是字符。可用UUID或雪花算法等生成。当然在有具体业务场景的情况下,可以由用户输入或按逻辑生成。除了可以具备强语义外,还优先用于外键的关联。

这里做个特殊说明:为什么要用Code做外键,ID也可以做外键啊。外键要具备两个最大的特点:唯一,不可变。ID由于多是自增或由数据库的特质生成,所以不能保证在数据迁移时绝对不变。所以使用Code更安全可靠一些。

组织机构

这个字段名为:org_code,表示组织机构。那什么是组织机构呢?简单说就是独立的公司或主体。作用主要是用于数据隔离,由于没有必要为不同公司建立不同的数据表,所以用一个字段将不同公司的数据隔离开。有点像财务的账套的概念。

操作记录

在每个表都会增加四个字段,用来记录谁在什么时间做了数据操作。分别为:

(1)CREATED_DATE(创建时间)

(2)LAST_UPDATED_DATE(最后修改时间)

(3)CREATED_BY(创建人)

(4)LAST_UPDATED_BY(最后修改人)

创建人和创建时间,在数据新增的时候设置;最后修改人和最后修改时间,在数据更新的时候设置

数据权限

信息化系统都需要数据权限的控制,即什么人可以操作哪些数据。一般企业级信息化,数据权限的逻辑都是在组织架构的层面进行控制的。一般包括:自己操作自己的数据、不同级别部门内的数据可共享、整个公司的数据共享。

为了解决上述的数据权限控制的需要,所以增加一个字段DEPARTMENT_CODE(部门编码)。这个字段只会记录创建当前数据的人所属的部门,即这条数据的所属部门。代码层面再结合数据权限,即可实现数据权限的管控。

版本与日志表

在需要记录数据版本的表中增加VERSION(版本号),常见的业务场景就是“变更功能”。下面举个例子,比如:采购订单变更。当我们创建了一个采购订单,并且审批通过后,这个数据本质是不能修改的,但出现需要修改的时候,我们就需要用上采购订单变更功能。当订单变更时,需要做的就是版本号+1,并且在日志表生成历史数据。

自定义字段

自定义字段的作用是让用户可以根据自己的业务需要增加一个表的字段并保存数据。做法是需要在一个表中增加attribute字段,多数情况下会预留多个attribute字段,字段名attribute1、attribute2、attribute3以此类推。然后再通过可配置的功能来设置attribute字段和字段中文名的对应关系即可。

希望您读完本文可以帮助笔者进入【码云】或【GitHub】搜索“赤龙ERP”点击星标。等待着您的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCL—关键点检测(rangeImage)低层次点云处理

博客转载自:http://www.cnblogs.com/ironstark/p/5046479.html 关键点又称为感兴趣的点,是低层次视觉通往高层次视觉的捷径,抑或是高层次感知对低层次处理手段的妥协。 ——三维视觉关键点检测 1.关键点,线,面 关键点 …

lombok的使用三部曲及使用中遇到的问题(持续更新)

lombok的使用 1.安装lombok插件 工欲善其事,必先利其器(这一点是不能忘记的,好多小伙伴可能只导入了依赖,却忘了去下载安装插件) 2.导入lombok依赖,看准了千万别倒错 导入依赖,记得更新PoM文件…

详细设计说明书示例_专利说明书常用句型汇总

第六课 说明书常用句型1. 以上一般描述和以下的详细说明都只是本发明的示例,并旨在提供概况或框架,用来理解如本发明所主张的本发明的本质和特征。It is to be understood that both the foregoing general description and the following detailed desc…

Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build

解决步骤如下: 1.打开project下的build.grade 2.将jcenter()注释掉或者直接删除本行代码。 3.sync now

mysql 添加唯一索引_浅谈Mysql索引

文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。我们都知道,数据库索引可以帮助我们更加快速的找出符合的数据,但是如果不使用索引,Mysql则会从第一条开始查询&am…

Flask第一篇——URL详解

原创 2018-02-14 孟船长 自动化测试实战URL是Uniform Resource Locator的缩写,即统一资源定位符。 一个URL通常由一下几个部分组成: scheme://host:port/path/?query-stringxxx#anchor scheme:代表访问协议,一般为http&#xff0…

Linux优盘挂载卸载以及文件查看

1.插入优盘,连接到虚拟机 这一步差点整死我,老弹出这个也没在意,后来查看盘的时候找不到自己的优盘,傻眼了。 如果你的优盘也是3.0接口,那么请看3.0的正确打开方式: 找到虚拟机设置(我这里下载的是8.0版本的Centos&a…

mysql六:数据备份、pymysql模块

阅读目录 一 MySQL数据备份 二 pymysql模块 一 MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中…

Vim案列掌握vim的基本操作——案例一:vim创建编写txt文件

案例一:vim创建编写txt文件 1.vim创建test.txt文件 vim test.txt 2.输入i,I,a,A,o,O,r,R均可(这里以i为例) 3.保存文件并退出vim。 a.先返回到一般模式 Esc b.冒号切换到命令行模式 : c.保存文件 :w d.退出vim :q successful 退回界面后可以再次…

Vim功能键整理(图片来自mooc)

1.一般模式 2.编辑模式 3.命令行模式

rpn风险等级评价准则_2019一建经济学习重点:技术方案经济效果评价

2019年一级建造师备考正在进行中,你是在看教材还是在刷题呢?今天优路教育小编是来送干货的,教材太厚,知识点太乱,那就来看这里的考点总结吧。接下来小编带大家一起学习《工程经济》第一章工程经济。一建《工程经济》第…

Android编程之页面跳转整理(只涉及关键步骤,需要有一定的基础,小白学习勿入)

自我学习篇: 1.创建你需要的页面,这里演示以创建一个主页和一个 子页进行跳转作为参考。 2.编写layout,这里仅需要创建一个按钮即可,至于样式美观大家可以根据需要进行自我调整。 这里需要注意的是对id的修改,自己应该起一个相对…

电脑无法打开特定网页_监理检测网校电脑微信无法打开公路试验检测视频课程的处理方法...

电脑版微信安装后,通过微信中置顶的监理检测网校公众号,菜单进入网校课程有的人会出现课程打不开,直接打开的是浏览器,无法学习,处理方法如下:电脑上打开微信,左下角三横线图标点开 &#xff0c…

Linux环境下创建运行.java文件

1.下载安装jdk。 一条yum指令就可以搞定了,也可以自己从windows上共享文件进行操作,有些复杂,这里不做详细描述。 以后熟练了,可能进行二更。 yum install java-1.8.0-openjdk* -y 这里需要注意是需要你转换到自己的root权限的 su root 截图…

Linux下的Shell编程之Helloworld.sh看过来

1.编写HelloWorld.sh vim HelloWorld.sh 2.按下i进行编辑 里面的代码如下: #!bin/sh echo "hello world!" 然后Esc退出编辑模式 然后:wq保存并退出vim 小白看参考: 小白vim指令学习 3.运行HelloWorld.sh(方式有两种) a.sh HelloWorld.sh …

Linux下删除非空文件目录

删除目录大家第一反应应该和我一样都是rmdir 但今天有一个目录里因为配置有好多文件直接烦死,不能rmdir直接删除,要是使用这个指令还要先用cd指令转换到该目录下一个个删除,实在是有点麻烦,最后终于还是找到了正确的打开方式。 …

jdk1.8配置(自我速成)

1.JAVA_HOME 变量名字:JAVA_HOME 变量值:找到自己安装jdk的目录即可,有的教程路径到了bin,但其实到不到都可以。 2.CLASSPATH 变量名:CLASSPATH 变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意这里那个英文的点点不要少了…

Eclipse export导出war包报错(Module name is invalid.)

出于设计模式的作业过程中遇到的问题,老师要求代码文件最后大家要导出war包,前两次还好好的,今天突然报错 这里来说一下原因,也就是web项目可以导出war包,而java项目是不可以的,下面的操作其实本质上就是给…

车载电脑中控软件_数字图书馆智能化系统集成-ipad中控软件

随着社会发展进入数字化时代,智慧展厅一词,也渐渐的让我们熟悉,在打造智慧展厅的同时,“中控系统软件”功不可没,中控系统软件的可能大家对这个产品也不是特别了解,但接下来,鼎深小编所要介绍的…

Tool:Visual Studio

ylbtech-Tool:Visual StudioMicrosoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环…