首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库模型设计——历史与版本设计

在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据。对于这种需求,我们可以使用保留历史数据或者使用版本来实现。...为了能够保留历史数据,在版本设计时有以下方案: 一、使用版本号 版本号是一种常见的版本设计方案,就是在要进行历史数据保留的表上面增加一个版本号字段,该字段可以是DateTime类型,也可以是int类型,...2.使用单独的历史表 这是另外一种实现历史版本记录的方法: 三、使用单独的历史表 使用历史表其实就是建立完全相同Schema的表(当然,也可以添加更多的字段用于记录额外的历史版本信息),该表只保留历史版本的数据...业务数据表的Schema不需要调整,增加额外的版本字段。由于对原有数据表不做Schema变更,所以原有查询逻辑也不用更改。对于一个现有的数据库设计,在增加历史数据记录功能时更简单。...另外就是对查询历史版本功能进行修改,因为历史数据在另外一个表中,所以对于的SQL是不一样的。当然,我们也可以创建历史版本数据库,里面保存了所有的历史表。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库表结构设计原则有哪些_数据库表的设计方法

    转载自: http://hi.baidu.com/yzx110/blog/item/0159fadc7b7839a4cd116686.html 数据库表结构设计浅谈 这篇文章如题所述,只打算谈一下数据库表本身设计...基本上在设计数据库表的时候,首先考虑设计要满足功能需求,这是最根本的,其次是满足性能需求,再次则是满足扩展性需求,这一点在大规模系统中是必须要考虑的。...在大规模系统中,除了性能,可扩展性也是设计的关键字点,而数据库表扩展性主要包含表逻辑结构、功能字段的增加、分表等。...对于表的逻辑结构我遵循的设计原则:一个表只包含一个主要实体,如果主要实体中包含从属实体数据,并且多个主要实体共享一个从属实体,则把从属实体单独设计为表,与主要实体关联,这样增加一个从属实体增加单独的表就行...我的设计原则:小表(比如50w行、100MB数据以内的表)不用特别考虑此扩展性问题,设计时只需要设计符合当前需求就可以,因为即使以后对结构修改,也可以在很快的时间内完成。

    72720

    树形结构的数据库表设计

    树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。...然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,因此是不能直接将Tree存入DBMS,设计合适的Schema及其对应的CRUD算法是实现关系型数据库中存储树形结构的关键。...三、基于左右值编码的Schema设计 在基于数据库的一般应用中,查询的需求总要大于删除和修改。...第一次看见这种表结构,相信大部分人都不清楚左值(Lft)和右值(Rgt)是如何计算出来的,而且这种表设计似乎并没有保存父子节点的继承关系。但当你用手指指着表中的数字从1数到18,你应该会发现点什么吧。...第一次看见这种表结构,相信大部分人都不清楚左值(Lft)和右值(Rgt)是如何计算出来的,而且这种表设计似乎并没有保存父子节点的继承关系。但当你用手指指着表中的数字从1数到18,你应该会发现点什么吧。

    2.6K20

    嵌套评论的数据库表设计

    设计嵌套评论数据库表可仿效无限级分类,在表中加一个ParentId字段。...嵌套评论页面大致这样: 评论1 回复评论1 恢复评论1 评论2 回复评论2 评论3 …… 但是, 在显示评论的时候,如果使用ParentId会涉及到多表的联结,嵌套层级越多意味着表之间的联结增多...于是,我们想到在表中增加一个字段,用来显示所有的层级:/1/2/5/ 设计数据库和表: create database NestedCommnets use NestedCommnets Create...Content nvarchar(100) not null, Depth smallint not null, Thread nvarchar(max) not null ) 往数据库表中添加如下数据...--nLength,返回的字符串长度;nDecimalPlaces,返回字符串的小数位数 select SPACE(u.Depth*6) + u.Content as 评论, u.Thread +

    87210

    Oracle数据库 表连接与表设计

    用于定位数据库中一条记录的一个 相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。 ROWID 它是一个伪列,它并不实际存在于表中。...数据库的大多数操作都是 通过 ROWID 来完成的,而且使用 ROWID 来进行单记录定位速度是最快的。我们可以将其用于删除重复数据。...在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。...create index idx_emp on emp(sal,ename); drop index idx_emp; select * from emp order by sal,ename; ---- 三、设计表...设计表首先应该按需遵循三范式 --表与表之间的关系: 一对一 一对多|多对一(主外键) 多对多{中间表} --表 表名 字段 约束 表与表之间的关系

    2.2K20

    数据库表设计 到 dataware house 表设计 --- 拉链表

    今天来说说其中的一种big data设计的表类型,拉链表。...2 进行当月天数的拉链表分区表的设计,分区键一般是 可以是开始时间,或符号业务逻辑的字段 3 通过某些手段获取第二天变化过的购物车表的记录,并存储进临时表 将第二天业务表中,插入的,UPDATE ,delete...的操作(有可能是逻辑操作,这里假设是物理操作) I D U 三种操作 4 通过之前一天的数据变化历史表,与当天记录的历史的变化数据进行 left join 运算,然后得出当天 Delete 和 update...5 通过这样的方式可以得到一整个月的数据变化,(也可以在DATA WAREHOUSE 的 业务历史表根据记录行的最后一次的操作状态(可以是物理,也可以是逻辑),来将已经删除的记录排除到下一次数据的历史分区表之外...在学习这方面知识的同时,DW在表设计这方面要灵活,相关方法也很多,当然学习中可能就会通过不断的深入而发现之前的一些失误,如您发现还请指正,感谢。

    1.2K20

    数据库表设计之用户权限表

    大家好,又见面了,我是你们的朋友全栈君。 需求分析 1、管理员给用户分配权限,权限数据写到数据库中。...2、认证服务在进行用户认证时从数据库读取用户的权限数据(动态数据) user:用户表,存储了系统用户信息,用户类型包括:学生、老师、管理员等 role:角色表,存储了系统的角色信息,学生、老师...、教学管理员、系统管理员等 user_role:用户角色表,一个用户可拥有多个角色,一个角色可被多个用户所拥有 menu:记录了菜单及菜单下的权限 role_permission:角色权限表,一个角色可拥有多个权限...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.8K20

    app数据库表的设计_订单数据库设计

    大家好,又见面了,我是你们的朋友全栈君。 近期公司要着手一个商城的项目,后台那边暂时有项目。让我设计一下数据库。这是我总结设计的,记录下日后完善。...登录相关 用户信息表(账户相关) CREATE TABLE UserAccount ( UID INT NOT NULL AUTO_INCREMENT, /* 用户ID */ ParentID...NULL, /* 登录类型(手机号 邮箱 用户名)或第三方应用名称(微信 微博等) */ Identifier VARCHAR(40) NOT NULL, /* 标识(手机号 邮箱 用户名或第三方应用的唯一标识...) */ Credential VARCHAR(40) NOT NULL, /* 密码凭证(站内的保存密码,站外的不保存或保存TOKEN) */ PRIMARY KEY (AuthsID,UID...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    56120

    rbac权限管理设计 7表_数据库角色权限表设计

    有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。...powerdesigen设计图如下: 权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。...这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。 权限表和功能操作表多对多的关系。...请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等...总的设计图: 实际项目中我们涉及到的权限。

    4.8K20

    SQL-记录表历史

    很多时候,都需要对数据表进行历史记录。比如每修改一次表单,之前的表单数据都需要计入历史。当表单比较多的时候,记录历史是一件比较麻烦的事情。又要建日志表,又要写存储过程,又要写页面逻辑等等。...有没有通用点的办法呢?最近做项目时碰到了,要求每次审核、退回等操作时就要记录表历史。于是,笔者就想到了以下方案。在此与大家分享了,如果有更合适的或合理的建议,请回复本帖。...1)创建日志表 一个一个建表是一件烦躁的事,而且还容易出错。那么,以下存储过程就能批量建表了,还添加了LogCreateDate、LogDefaultFlag、LogPTID这3个字段。...值得注意的是,创建表结构可以用以下语句“SELECT * Into tableName_Log FROM tableName”。如果只需要复制表结构,那就插入一行,再删除就是。...----------------------------- END 以上语句值得注意的是在查找以“_Log”结尾的表名的搜索条件,需要加上“escape '\'”。

    59830

    数据库的设计与表创建

    数据库设计 数据库设计采用新奥尔良设计法 产品需求分析 需求分析是数据库设计的第一步,也是最困难、应当投入最大精力的一步.需求分析要做的是了解、分析用户对系统的需求,弄清系统要达到的目标、要实现的功能....需求分析的结果用数据流程图和数据字典表示.值得注意的是,要使一个系统具有较长的生命周期,除了要满足用户提出的需求外,还需要系统设计人员预测未来系统可能要支持的功能 概念结构设计 概念结构设计是将系统需求分析得到的用户需求抽象为信息结构的过程...概念结构具有的特点∶是现实世界的真实模型、易于理解、易于更改、易于向数据模型转换。 逻辑结构设计 逻辑结构设计的任务就是把概念模型转换成某个具体的DBMS所支持的数据模型。...通常概念模型向逻辑模型转换过程分3步进行: 概念模型转换为—般的数据模型 一般的数据模型转换为特定DBMS支持的数据模型 优化数据模型 物理结构设计 数据库的物理结构:数据库在物理设备上的存储结构与存取方法...物理结构设计分为两步: 确定数据库的存取方法和存取结构 对物理结构进行评价(重点是时间和效率),若评价结构满足原设计要求,则可以进行物理实施;否则要修改物理结构,甚至返回逻辑设计阶段修改数据模型

    1.5K20

    数据库表设计对性能的影响

    很多人看来,数据库Schema设计是一件非常简单的事情,大体按照系统设计时候的相关实体对象对应成一个一个表格就可以了。...为了在功能上尽可能容易扩展,根据数据库范式规则进行调整,做到第三范式或第四范式,基本就算完事了 真的这么简单么?...看一个案例 需求概述:一个简单的讨论区系统,需要有用户、用户组、组讨论区这三部分基本功能 简要分析: (1)须要存放用户数据的表; (2)须要存放分组信息和用户与组关系的表; (3)须要存放讨论信息的表...表的nick_name相对应 另一个就是第二个方案将user表和group_message表都分拆成了两个表,分别是一一对应的 方案二看上去比方案一要更复杂一些,首先是表的数量多了2个,然后是在group_message...按照第一种解决方案设计,须要执行类似SQL SELECT t.id, t.subject,user.id, u.nick_name FROM ( SELECT id, user_id, subject

    1.4K50

    Access数据库表设计步骤

    大家好,上节介绍了Access数据库表中常见的概念,Access数据库中表的部分主要难点就在于表的设计,本节主要是串联一下Access数据库中表设计时的大概步骤,只先了解即可,具体的内容部分后面根据分解的知识点展开讲解...二、、确定数据库中的表和字段 首先说明下在设计Access数据库的表时,追求的目标是设计性能优良的数据库表,减少数据的冗余和错误。 因而在设计数据库表时可以遵循一些规范的规则,这些规则就是范式。...(关系型数据库目前通常有6层范式,从最低要求的第一范式1NF,以此类推,一直到最高要求的6NF。) 那么如何设计数据库中的表格和字段?...在图书馆数据库管理表设计时,书籍和借阅人就是两个不同的实体。书籍的属性包括图书编号、名称、作者、单价、库存数量、被借次数等。而读者的属性包括年龄、读者编号、联系方式等等。...五、确定表与表之间的关系 前面在介绍数据库优化时介绍了数据库范式的概念,对于优秀的数据库设计通常为了减少数据冗余,为此会将很多数据拆分成基于不同主键的表。

    4K30

    Echo的数据库表是如何设计的

    Echo 这个项目数据库设计并不复杂,需要我们手动设计的只有四张表: 帖子表:discuss_post 评论表:comment 用户表:user 私信表:message 用户表 ?...激活的逻辑也很简单,就是检查一下这个链接中的用户 id 和激活码是否和数据库中存储的一样。 帖子表 ?...可能会有同学会问啥不把点赞数量也缓存到帖子表中,因为点赞数量是存在 Redis 中的,获取点赞数量咱连数据库都不用进的,还费劲在这存一份干啥) score:热度 / 分数(用于按照热度排行帖子) ?...评论表 这个表应该是相对来说最复杂的一张了。因为不仅有评论(对帖子的评论),还有对评论的回复,都放在这一张表里面了。 ?...私信表 这张表不仅存储用户之间的私信,也存储系统通知,不同的是,系统通知的 from_id 特定为 1。用于发送系统通知的角色(用户) SYSTEM 已内置。 ? 下面来看私信表的结构: ?

    88721

    access数据库设计报告-Access数据库表设计步骤

    大家好,上节介绍了Access数据库表中常见的概念,Access数据库中表的部分主要难点就在于表的设计,本节主要是串联一下Access数据库中表设计时的大概步骤,只先了解即可,具体的内容部分后面根据分解的知识点展开讲解...二、、确定数据库中的表和字段   首先说明下在设计Access数据库的表时,追求的目标是设计性能优良的数据库表,减少数据的冗余和错误。   ...因而在设计数据库表时可以遵循一些规范的规则,这些规则就是范式。(关系型数据库目前通常有6层范式,从最低要求的第一范式1NF,以此类推,一直到最高要求的6NF。)   那么如何设计数据库中的表格和字段?...然后来初步确定建立那几张表access数据库设计报告,然后再结合数据库范式,将数据库逐步优化,看是否需要再建立新的表。   ...五、确定表与表之间的关系   前面在介绍数据库优化时介绍了数据库范式的概念,对于优秀的数据库设计通常为了减少数据冗余,为此会将很多数据拆分成基于不同主键的表。

    3.6K20

    数据库-库表设计 【分享一些库表设计经验】

    大家好,又见面了,我是你们的朋友全栈君。 本文的核心内容:记录积累一些库表设计方案与技巧 数据库实体与实体间的对应关系 1)数据库表的菜单【分类】设计:如省市关联、图书的一、二级分类。...2)数据库表设计之树形结构的表 3)表的简化方案(特定情况,例如,用户触发过的场景记录表) 4)数据库表设计之购物车,利用Session暂时存储购物车信息。...一对多 一对多,是最常见的一种设计。就是 A 表的一条记录,对应 B 表的多条记录,且 A 的主键作为 B 表的外键。...外语[英语、日语、韩语、俄语、德语] 计算机[计算机理论、计算机考试、数据库、人工智能、程序设计] BookInf 图书详情 :...我分享两种设计方法: ①:维护一张购物车表,以用户ID为外键 一个用户一个购物车,用户注册成功的同时,为用户在购物车表内维护一个专属于用户的购物车。

    1.6K30

    (二)购物商城数据库设计-商品表设计

    大家好,又见面了,我是你们的朋友全栈君。 大家好,今天我们来设计一下购物商城的商品表。...我们的目标是表结构能够满足下面这张图的搜索: 在设计表之前,我们先来了解下商品中的两个概念:SPU和SKU SPU SPU(Standard Product Unit):标准化产品单元。...因此,我们要新建一张分类表,里面存放各种分类名称,然后在SPU表里面添加一个分类id,如图: 现在,我们已经把SPU相关的表设计好了,现在来设计SKU相关的表。...至于增值保障,肯定需要一张表来存放增值保障信息,然后它跟SKU的关系是多对多的关系,需要一张中间表来关联 至此,商品表的核心内容已经设计得差不多了,当然还有其它内容。篇幅有限我们就不一一展开讨论了。...下一篇文章我们根据本篇的设计来做具体的建表,并来一次实际演练。

    3.8K30

    浅析数据库的历史

    3、1970-Relational Model 时间来到了 1970 年代,在层次和网状模型的标准下,IBM 的工作人员会因为数据库的结构表更而不断地重写代码,这非常的浪费人力。...关系型模型(Relational Model)是沿用至今的数据库模型,已经事实上基本成为了行业标准。 关系模型基于二维表,每个实体都被映射为一张表,每个实体之间可以通过表中的记录进行关联。...基于关系型模型,在 1970 年代诞生了三个主要的数据库系统,分别是由三位数据库界的远古大神开发的。...5、1990-Boring Days 90 年代,在数据库设计方面并没有太大的变化,这段时期可能看起来比较的无聊(Boring),但是仍然有一些值得关注的事情。...这也造就了这些年资本市场对于数据库行业的垂青,数据库创业也火的一塌糊涂。 未来数据库会朝着什么样的方向发展,会呈现出什么样的格局呢,让我们拭目以待吧。

    84240
    领券