精华内容
下载资源
问答
  • 数据库中的Schema是什么?

    万次阅读 多人点赞 2018-01-10 13:14:35
    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式。模式包含了schema对象,可以是表(table)、列(column)、数据类型(data type...

    参考:http://database.guide/what-is-a-database-schema/

    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas 和schemata都可以作为复数形式。模式中包含了schema对象,可以是(table)、(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系

     

    以上是模式图的一个简单例子,显示了三个表及其数据类型、表之间的关系以及主键和外键,以下是数据库模式的一个更复杂的例子。

     

    在这种情况下,模式图分为四个部分:

    (1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等

    (2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等

    (3)Inventory(库存):所有产品的细节。在这里,产品是电影,所以它包含电影标题,类别,演员等数据。

    (4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。

    Schema和DataBase是否等同?

    涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

    取决于数据库供应商

    对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式

    1MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。

    2但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。

    (3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

    因此,取决于您使用的RDBMS,模式和数据库可能不一样。

    SQL标准对schema如何定义?

    ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前对schema的定义疑惑不解,希望看了我的这篇文章会好一些,起码不会更差。

    广义上

    造成疑惑的另一个原因可能是由于schema这一术语具有如此广泛的含义,因为它在不同的环境下有不同的含义,schema一词源于希腊语skhēma,意思是形态(form),轮廓(figure),形状(shape)或方案(plan)。Schema在心理学中被用来描述组织信息类别及其之间关系的有组织的思维或行为模式。我们在设计一个数据库之前,还需要看看数据中的信息种类和它们之间的关系, 在我们开始使用DBMS中的物理模式之前,我们需要创建一个概念模式。在软件开发中讨论模式时,可以讨论概念模式、物理模式、内部模式、外部模式、逻辑模式等,每一个都有其特定的含义。

    DBMS的schema定义

    以下是三个领先的关系数据库系统的schema定义:

    MySQL

    Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example, theINFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.

    In MySQL, physically, aschema is synonymous with adatabase. You can substitute the keywordSCHEMA instead ofDATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.

    Some other database products draw a distinction. For example, in the Oracle Database product, aschema represents only a part of a database: the tables and other objects owned by a single user.

    MySQL官方文档指出,从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE

    参考: MySQL Glossary, MySQL 5.7 参考手册. MySQL, Retrieved 6 June 2016。

    SQL Server

    The names of tables, fields, data types, and primary and foreign keys of a database.

    SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。参考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.

    Oracle Database

    Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。

    A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema.

    Oracle官方文档指出,schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。

    参考: Oracle Database Objects. Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016.

    如果想了解更多关于schema的内容,可以参考这篇文章schema definitions by DBMS.

    创建Schema

    尽管上述三个DBMS在定义schema方面有所不同,还是有一个共同点,就是每一个都支持CREATE SCHEMA语句。

    MySQL

    在MySQL中,CREATE SCHEMA创建了一个数据库,这是因为CREATE SCHEMACREATE DATABASE的同义词。 换句话说,你可以使用CREATE SCHEMA或者CREATE DATABASE来创建一个数据库。

    Oracle Database

    在Oracle中,CREATE SCHEMA语句实际上并不创建一个模式,这是因为已经为在创建用户时,数据库用户就已经创建了一个模式,也就是说在ORACLE中CREATE USER就创建了一个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从而不必在多个事务中发出多个SQL语句。

    SQL Server

    在SQL Server中,CREATE SCHEMA将按照名称创建一个模式,与MySQL不同,CREATE SCHEMA语句创建了一个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了一个模式(前面说到这个语句在ORACLE中不创建一个模式),在SQL Server中,一旦创建了模式,就可以往模式中添加用户和对象。

    总结

    schema这个词可以用在很多不同的环境中,在特定数据库管理系统创建一个schema时,您需要使用DBMS特定定义模式,当你切换到一个新的数据库管理系统时,一定要查看该系统是如何定义schema的。

    展开全文
  • 数据库实体

    千次阅读 2015-10-25 23:58:54
    实体是对自然事物的抽象表示在数据库中实体分为弱实体和强实体,如果实体中没有该实体的primary key,则该实体称为弱实体,反之,则成为强实体。弱实体必须依赖强实体存在。如果强实体中的primary key 为弱...

    实体是对自然事物的抽象表示,在数据库中实体分为弱实体和强实体,如果在该实体中没有该实体的primary key,则该实体称为弱实体,反之,则成为强实体。弱实体必须依赖强实体存在。如果强实体中的primary key 为弱实体中foriegn key,则他们之间的关系称为一对多的关系。

    展开全文
  • 数据库中,设计的ER图里面弱实体A依赖于弱实体B的话,是否需要将弱实体B的主键放去弱实体A充当主键?
  • 关系型数据库中,按照x对x的分类,可以分为三种,分别为一对一、一对多、多对多。 实际应用 我使用的是MySQL的可视化工具Workbench,建立新的Model EER图时,可以看到这样的界面 图中用红色标出的地方则可以...

    【数据库】关系型数据库中的关系

    关系分类

    在关系型数据库中,按照x对x的分类,可以分为三种,分别为一对一一对多多对多

    实际应用

    我使用的是MySQL的可视化工具Workbench,在建立新的Model EER图时,可以看到这样的界面
    在这里插入图片描述
    在图中用红色标出的地方则可以选择关系类型,建立两个table(表)之间的关系。
    给出两个翻译帮助理解(不保证正确)
    在这里插入图片描述
    放置一个新的1:1非决定性关系(Non-Identifying Relationship)
    在这里插入图片描述
    放置一个新的1:1决定性关系(Identifying Relationship)

    可以看出虚线表示的是非决定性关系,实线表示决定性关系。

    自己研究了一番:
    ①1:1和1:n都有非决定性关系和决定性关系,而m:n只有决定性关系;
    ②1:1和1:n关系在建立后,只是在从表中增加了一个外键;而m:n关系建立后,增加了一个新表,表中有两个外键,分别来自两个主表。那么这个新表的主键就是两个外键的组合。

    再结合一些网上的资料,我给出我对决定性关系和非决定性关系的理解。

    决定性关系:从表中的关系受主表中关系的影响,需由主表中的外键和从表中的主键共同标识。
    非决定性关系:从表中的关系与主表中关系不直接相关,主表的变动不影响从表的关系。

    以上只是我个人的理解,只停留在理论层面,后续实际操作表中数据有新发现新体会时,会更新此文。欢迎各位大佬指正!

    展开全文
  • 关系型数据库中实体之间的关系

    千次阅读 2018-06-20 20:47:00
     反之实体集B 的每一个实体,在实体A只有一条数据与它对应  这样的实体关系主是一对一关系  实例:  员工表、员工详细信息表之间的关系是员工表的一行与详细信息表的一行对应 一对多关...

    关系型数据库实体间有三种关联关系:一对一,一对多,多对多。

    一对一关系(1:1):

      如果实体集(表)A 中的每一个实休(就是每行记录),在实体集B中只有一条数据与它对应,

       反之实体集B 中的每一个实体,在实体A中只有一条数据与它对应

      这样的实体关系主是一对一关系

      实例:

      员工表、员工详细信息表之间的关系是员工表中的一行与详细信息表中的一行对应

     

    一对多关系(1:n):

      如果实体集A中每一个实体,在实体集B中有n个与之对应(n>1)(当n为1时,就是一对一的关系)

      反之在实体集B中每一个实体,在实体集A中最多只有一个实体与之对应

      这样的实体就是一对多关系

      实例:

      学生表与班级表,多个学生属于同一个班级,班级表中的一行与学生表的多行数据对应

      在学生表中新增字段(班级号),该字段作为学生表的外键与班级表中的班级号关联。每一个学生实体在班级号字段的值,表示该学生属于的班级。

      

     

    多对多关系(m:n):

      如果实体集A中每一个实体,在实体集B中有m个与之对应(m>1)

      反之如果实体集B中每一个实体,在实体集A中也有n个与之对应(n>1)

      这样的实体关系就是多对多关系

      实例:

      学生表与教师表,一位学生有多位老师来教,一位老师也可以教多位学生,可以看作由两个一对多关系组合而成

      

     

    外键:

      mysql中的innodb引擎才支持外键

    A实体的某个字段指向 B实体的主键, 则称A实体的那个字段为该实体的外键, 一个表里可以有多个外键,也可以没有外键;

    被指向的实体称为主实体(主表),也叫父实体(父表),负责指向的实体称为从实体(从表),也叫子实体(子表)。

    一般在哪个表里定义外键,这个表就是子表

    在创建的时候应该先创建主表,然后再创建从表, 插入数据时也应该先插入主表数据

    在删除表的时候应该先删除从表(子表), 然后再删除主表

      

    设置级联操作

    在主表发生数据改变时,与之相关的从表应该要怎么处理

    可以使用关键词on update, on delete来标识

    允许的级联操作有:

    • cascade: 如果主表更新或者删除数据时,那么从表也会执行相应的操作
    • set null: 如果主表更新或者删除数据时, 那么从表相应的数据会设置成null
    • restrict: 拒绝主表的操作(默认)
    /*删除主表信息时,从表相应的字段设置为null(该字段定义时能为null)*/
    Alter table student add foreign key (class_id) references class (class_id) On delete set null

      

    /*主表执行删除或更新时,从表执行同样的操作*/
    alter table student add foreign key (class_id) references class (class_id) on delete cascade on update cascade

      

    转载于:https://www.cnblogs.com/dyx2018/p/9205849.html

    展开全文
  • mybatis plus忽略映射字段时可以在实体类属性...在实体类的属性上面加上这个注解后,此字段就不会映射数据库了。 @TableField(exist = false) private Position position; Spring data jpa 或 Hibernate???? //数
  • 数据库设计--实体关系图(ERD)

    万次阅读 多人点赞 2015-08-01 15:15:17
    1、E-R图的定义 ...E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。实体关系图表示信息系统概念模型的数据存储。 –百度百科 2.1E-R图表示法(Chen’s模型)
  • 2、@Table 是用来表示这个类(实体)对应的数据库表的信息 有三个属性:1、name 2、catalog 3、schema 这三个属性都是可选的 name表示数据库中的这个类对应的表的名称() //大家是不是疑惑了?上面的Ent
  • 数据库设计中实体关联的四种类型

    千次阅读 2016-05-01 05:28:24
  • 使用mybatis-plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist=false):表示该属性不为数据库表字段,但又是必须使用的。 @TableField(exist= true):表示该属性为数据库表字段。 ...
  • 实体类需要标注@Entity 表示实体类 @Table(name = “t_tag”) 表示生成的表名称为 t_tag @Id 表示主键 @GeneratedValue 表示主键自动递增 这两个注解都需要标注主键id上 如何表示对象之间的联系呢? 例如博客与...
  • 一个实体集A实体另一个实体集B至多有一个实体与之对应,反之,实体集B实体在实体A至多有一个实体与之对应,则称A和B具有1:1关系 例: 一个学生至多拥有一张学生卡,每张学生卡只对应一个学生 ...
  • 数据库设计 - 直接在数据库更改数据库结构会有风险, 为避免破坏数据库中的数据,需要仔细规划一切变更。通过绘制 ER 图来展示数据库设计蓝图,可以轻松找出错误和识别设计缺陷,并执行数据库更改之前作出修正。 ...
  • 数据库——实体联系模型

    千次阅读 2020-02-28 20:04:55
    1.实体 1.实体:客观存在并且可以相互区分的任何事物,可以是实际对象,也可以是抽象概念。 2.属性:实体所代表的事物具有的某种特性,每个实体都可以用... 实体实体集的型都用其属性名的列表表示  例如,学生...
  • spring data jpa 框架在实体添加非数据库字段的属性 Spring-data-jpa表实体的字段和表的字段是一一对应的。比如,那么,如果我查询时,想表字段的基础上添加几个返回的字段,怎么办? @Transient privite ...
  • 定义属性值int类型的时候,在数据库中默认null,当插入操作的时候会把默认值变成0 b.定义属性值Integer类型的时候,在数据库中默认也是null,但是当插入操作的的时候默认值会变成null。 这是做springboot项目...
  • 是hibernate、morphia等框架的注解,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic  示例: ...
  • 数据库设计之实体E-R图

    万次阅读 2013-07-07 01:11:41
    1、用户实体对象 2、主题实体对象 3、论坛实体对象 4、回复主题实体对象
  • 数据库实体表的关系学习

    千次阅读 2017-12-29 11:08:32
    数据库实体表关系
  • 数据库实体间关系笔记

    千次阅读 2017-03-30 09:12:49
    判断实体间关系只需要问自己两个问题: 1. 实体A包含实体B吗? 2. 实体B包含实体A吗? - 都回答‘是’-->M:N - 都回答‘否’-->1:1 - 答案不同 --> 1:N ---- 当实在是不能分辨两个实体间的关系是 一对多 还是 多...
  • 数据库 - 建模:实体关系图(ERD)

    万次阅读 2018-10-27 10:32:34
    实体关系模型,也称为实体关系(ER)图,是实体(将成为您的表)及其相互关系的图形表示数据库建模是创建数据模型的过程。 实体 一个简单的矩形块代表一个表。 关系 它使用钻石形状勾勒出来。 关系...
  • jdbc查询数据库返回实体对象集合

    千次阅读 2016-08-03 16:03:20
    最近做prefuse中用到原始的数据库查询 try { ResultSet rs = null; String hqltonode="SELECT * FROM report_result_external where device_name='"+m_text+"'"; rs = con.prepareStat
  • 当我们自定义了枚举类型或者其他某个类型、个别值,需要数据库中存或者在数据库取出来时转换类型或者对值做某些处理,就可以继承BaseTypeHandler<T>,自己实现各种转换。 看下面源码是Integer...
  • 数据库实体联系模型与关系模型

    千次阅读 2020-03-02 19:11:33
    数据库设计是指根据用户的需求,某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。例如,编程微课是在线编程教育项目,该项目涉及到课程、学生、老师、学习资料等数据,这些数据都要被存储下来,...
  • 常规的思路是,设计好数据库,建好表,借助MyEclipse(也可以是其他IDE),自动生成映射,或者自己写映射。早就听说hibernate可以自动生成表。但是一直没有试验。...-- 启动时删数据库中的表,然后创建,退出时不...
  • 数据库中的number是指的数量 我的是一个论坛的数据库 number表示的是帖子的阅读的数量 java类应该是什么类型呢 用String 类型的话 是不是向数据库中存数据的时候需要进行类型转换 两个问题 请分开回答 谢谢大神...
  • 使用DLINQ查询数据库,定义实体

    千次阅读 2011-09-10 10:33:25
    DLNQ是LINQ的扩展形式,用于查询和操作数据库的内容,DLINQ是ADO.NET的基础上建立起来的。DLINQ提供了一个高级的抽象,使你不再需要操心具体如何操作ADO.NET Command对象,不再需要 操心如何遍历有DataReader对象...
  • 现实世界的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据...
  • 1.怎样查询某个字段哪个表 SELECT COLUMN_NAME,TABLE_NAME,TABLE_SCHEMA FROM INFORMATION_SCHEMA.columns WHERE COLUMN_NAME='字段名'; 上面的这条语句只有我标注成汉字的地方需要...TABLE_SCHEMA 表示数据库...
  • MyBatis:由数据库自动生成实体

    千次阅读 2016-04-06 10:47:02
    需要的工具jar包 mybatis-generator-core-1.3.2.jar //该包为核心包 mysql-connector-java-5.0.4.jar /数据库连接驱动

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,835
精华内容 77,534
关键字:

在数据库中表示实体的是