数据库实体

【简明翻译】Hibernate 5.4 Getting Started Guide 官方入门文档

吃可爱长大的小学妹 提交于 2019-12-01 07:43:47
前言 最近的精力主要集中在Hibernate上,在意识到Hibernate 5 的中文资料并不多的时候,我不得不把目光转向Hibernate的官方doc,学习之余简要翻一下入门文档。 原文地址: https://docs.jboss.org/hibernate/orm/5.4/quickstart/html_single/ ,勘误请在评论区留言 原文序 使用面向对象软件和关系型数据库可能既麻烦且耗时。开发成本往往会因数据在软件和数据库中的数据范式(paradigm)表现不一而显著地增长,Hibernate就是一种Java语言环境下的一个对象/关系映射 解决方案(ORM框架),对象/关系映射(ORM)的概念,则代指一种将数据的对象模型形式,即在软件中的表现形式,和数据模型形式,即数据库中的表现形式,这两种形式的数据相映射的技术。可以参照 Wikipedia上的ORM词条 以获得更详细的了解。 虽然Hibernate并不要求用户需要有非常丰富的SQL编程经验,但是对于一些概念的基本理解着实可以让你更快更全面的理解Hibernate,特别是对数据建模原理的理解就显得尤为重要,这两篇文章可以帮助你快速开始理解这些原理 dataModeling101 、 DataModeling(wiki) 。 Hibernate负责Java class和数据库表的映射工作,同时也会处理两者间数据格式的映射

在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

微笑、不失礼 提交于 2019-12-01 00:12:48
原文: 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射 一、前言 #   在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能存在很大的差异,所以这里更常见的方法是去创建一些对应于页面数据展示的 `视图模型` 类,通过对获取到的数据进行二次加工,从而满足实际页面显示的需要。   因此,如何更便捷的去实现 数据库持久化对象 与 视图对象 间的实体映射,避免我们在代码中去一次次的手工实现这一过程,就可以降低开发的工作量,而 AutoMapper 则是可以帮助我们便捷的实现实体转换这一过程的利器。所以,本章我们就来学习如何在 ASP.NET Core 项目中通过使用 AutoMapper 去完成实体间的映射。   当然,如果你习惯于从视图展现到持久化到数据库都采用数据库实体,那么本篇文章对你可能不会有任何的帮助。   代码仓储: https://github.com/Lanesra712/grapefruit-common/tree/master/sample/aspnetcore/aspnetcore-automapper-tutorial 二、Step by Step #   AutoMapper 是一个 OOM(Object

Django 数据库查询优化

ぃ、小莉子 提交于 2019-11-30 13:58:55
Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理。如果事先理解Django的优化技巧,开发过程中稍稍留意,后期会省不少的工作量。 一 利用标准数据库优化技术: 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的。在这里算是题外话,挑两点通用的说说: 索引,给关键的字段添加索引,性能能更上一层楼,如给表的关联字段,搜索频率高的字段加上索引等。Django建立实体的时候,支持给字段添加索引,具体参考Django.db.models.Field.db_index。按照经验,Django建立实体之前应该早想好表的结构,尽量想到后面的扩展性,避免后面的表的结构变得面目全非。 使用适当字段类型,本来varchar就搞定的字段,就别要text类型,小细节别不关紧要,后头数据量一上去,几亿几亿的数据,小字段很可能是大问题。 二 了解Django的QuerySets: 了解Django的QuerySets对象,对优化简单程序有至关重要的作用。QuerySets是有缓存的,一旦取出来,它就会在内存里呆上一段时间,尽量重用它。举个简单的例子: 了解缓存属性: >>> entry = Entry.objects.get(id=1) >>> entry.blog # 博客实体第一次取出

day22数据库

送分小仙女□ 提交于 2019-11-30 12:50:33
数据库 基本概念 数据库:长期存储在计算机内的,有组织的,可共享的数据集合。数据库中的数据按一定的数据模型组织。描述和存储,具有较小的冗余度。较高的数据独立性和已扩散性病可为各个用户共享。 数据库管理系统,主要功能包括: 数据定义功能 数据操纵功能 数据库运行管理 数据库的建立和维护功能 数据库系统:一般由数据库,数据库管理系统,应用系统,数据库管理员,用户。DB,DBMS,application,admin,user 模型 概念模型:也称信息模型,它是按用户的观点对数据和信息建模,主要用于数据库设计 数据模型:按照计算机系统的观点对数据建模,主要用于DBMS的实现。包括网状模型,层次模型 总结:如果实体和实体是一对一的关系,外键随便放在哪个实体上,。如果实体和实体之间是一对多的关系,外键放在多的实体上面。如果实体和实体之间存在多对多的关系,再建一个关系实体。 数据库建模:如何将现实生活中的数据存储到数据库中。 概念模型ER图。将实体和关系理清。 逻辑模型,确定主键和外键,主键是唯一的标识,外键表明与其他实体之间的关系 以二维表存储数据的数据库称为关系型数据库。 工厂(工厂号,厂名,厂长名 车间(车间号,车间主任姓名,地址,电话,工厂号 工人(职工号,姓名,年龄,性别,工种,车间号 产品(产品号,价格,车间号,仓库号 零件(零件号,重量,价格,仓库号 仓库(仓库号,仓库主任姓名

数据库实体、关系(一对一实现方式、一对多实现方式、多对多实现方式)

那年仲夏 提交于 2019-11-30 06:31:51
就数据库而言, 实体 往往指某类事物的集合。 把每一类数据对象的个体称为实体。 数据库中: E-R图 也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 实体之间的关系有 一对一; 一对多,多对一; 多对多; 数据库中一对一的实现方式: ( 如一个学生对应一个档案,一个档案对应一个学生) (1) 唯一外键方式 :在A和B任意一表中添加唯一外键(注意是添加完外键后,再点唯一键,进行设置) 具体方式点此 。 (2) 主键关联方式 :当A和B的主键相同时,我们就认为是一组数据。(注意是“我们就认为”,数据库中并没有提供主键关联的约束方式。) (3) 中间关系表 :创建一张新表作为中间关系表,两个列分别记录A和B,并且每一列的取值中,值均不能重复(即将这两列均设置为唯一外键,注意:将这两列“既设置为主键,又设置为外键”的方式不能实现该功能,因为可能会出现一列相等而另一列不相等的情况)。 数据库中多对一、一对多的实现方式: (如一个班级对应多个学生) (1) 在多的一方添加外键 :在学生表中添加一列,记录该学生是哪一个班的,该列设置成外键,取值为班级表的主键。 (2) 建立中间表 :创建一个新表,该表至少有两列,分别记录学生和班级。学生列要设置成为“外键+唯一键”,以防有两行数据的学生列的值一样

FreeSql (三十四)CodeFirst 迁移说明

半腔热情 提交于 2019-11-29 20:48:30
FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能。 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也是缺点,优点是充分利用数据库特性辅助开发,缺点是切换数据库变得困难。不同程序员的理念可能不太一致,作为功能库FreeSql支持到了极致,至于是否使用是项目组技术衡量的另一个问题。 尽管多种数据库适配逻辑非常复杂,FreeSql始终秉承优化程序开发习惯的原则尽量去实现,中间碰到了一些非技术无法攻克的难题,比如数据库的自定义类型,和实体类本身就是一种冲突,为了减少使用成本,诸如此类的数据库功能没有得到支持。 IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10") .UseAutoSyncStructure(true) //自动同步实体结构【开发环境必备】 .Build(); 《实体特性说明》 《FluentApi

mysql数据库设计

浪尽此生 提交于 2019-11-29 13:55:31
数据库设计 简介 简单来说,数据库设计就是根据业务系统的具体需要,结合我们所选的数据库管理系统,为这个业务系统构造出最优的数据库存储模型.并建立好数据库中的表结构及表与表之间的关联关系的过程.使之能有效的对应应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问. 常用关系型数据库:mysql、Oracle、SQL server、PgSql 常用非关系型数据库:Mongo、Memcache、Redis 数据库设计作用 优良的设计 糟糕的设计 减少数据冗余 存在大量数据冗余 避免数据维护异常 存在数据插入,更新,删除异常 节约存储空间 浪费大量存储空间 高效的访问 访问数据低效 维护调整方便 较难调整维护 数据库设计步骤 需求分析 数据库是什么 数据库有哪些属性 数据库和属性各自的特点有哪些 逻辑设计 使用ER图对数据库进行逻辑建模 物理设计 根据使用的数据库自身的特点把逻辑设计转换为物理设计 维护优化 新需求进行表建立 索引优化 大表拆分 需求分析 1.了解系统中所要存储的数据 2.了解数据的存储特点 3.了解数据的生命周期 需求分析要搞清以下问题 实体及实体之间的关系(1对1,1对多,多对多) 实体所包含的属性有什么 哪些属性或属性的组合可以唯一标识一个实体 实例演示需求分析过程 以小型电子商务网站为例,包含的模块: 用户模块 包括属性:用户名、密码、电话、邮箱、身份证号

14 个实用的数据库设计技巧

孤者浪人 提交于 2019-11-28 20:30:59
点击上方“ 后端技术精选 ”,选择“置顶公众号” 技术文章第一时间送达! 作者:echozh juejin.im/post/5d5b4c6951882569eb570958 原始单据与实体之间的关系 主键与外键 基本表的性质 范式标准 通俗地理解三个范式 要善于识别与正确处理多对多的关系 主键PK的取值方法 正确认识数据冗余 E--R图没有标准答案 视图技术在数据库设计中很有用 中间表、报表和临时表 完整性约束表现在三个方面 防止数据库设计打补丁的方法是“三少原则” 提高数据库运行效率的办法 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中

Django的性能优化

帅比萌擦擦* 提交于 2019-11-28 10:35:48
Django的性能优化 一,利用标准数据库优化技术 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的。在这里算是题外话,挑两点通用的说说:    索引,给关键的字段添加索引,性能能更上一层楼,如给表的关联字段,搜索频率高的字段加上索引等。Django建立实体的时候,支持给字段添加索引,具体参考Django.db.models.Field.db_index。按照经验,Django建立实体之前应该早想好表的结构,尽量想到后面的扩展性,避免后面的表的结构变得面目全非。    使用适当字段类型,本来varchar就搞定的字段,就别要text类型,小细节别不关紧要,后头数据量一上去,愈来愈多的数据,小字段很可能是大问题。 二 ,了解Django的QuerySets   了解Django的QuerySets对象,对优化简单程序有至关重要的作用。QuerySets是有缓存的,一旦取出来,它就会在内存里呆上一段时间,尽量重用它。 # 了解缓存属性: >>> entry = Entry.objects.get(id=1) >>> entry.blog # 博客实体第一次取出,是要访问数据库的 >>> entry.blog # 第二次再用,那它就是缓存里的实体了,不再访问数据库 >>> entry = Entry.objects.get(id=1) >>> entry