给数据库set类型表增加属性 通过private getset 方法 debug运行后加不进去数据库set类型

在做项目重构的时候增加了两个功能

  2、token的验证从以前的数据库验证移到了redis端。

* 授权(验证权限时调用) // //用户权限列表 * 认证(登录时调用) // //查询用户信息 // //查询用户信息

 然后启動项目就出现datasource循环依赖的问题。

有更好的办法欢迎留言。谢谢
}

数据库是长期存储在计算機内、有组织的、可共享的大量数据的集合 
数据库中存储的是数据及数据之间的关系。

永久存储、有组织、可共享 
(數据的最小存取单位是数据项)

②数据的共享性,冗余度易扩充

数据独立性包括:物理独立性和逻辑独立性 
a)物理独立性(外模式\模式映像): 
用户程序不需要了解,应用程序要处理的只是数据的逻辑結构这样当数据的物理存储改变了,应用程序不用改变 
b)逻辑独立性(模式\内模式映像): 
逻辑独立性是指用户的应用程序与数据库的邏辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变 
independence)是指概念模式改变,外模式和应用程序不变在逻辑数据獨立性里,数据的逻辑结构发生改变或存储关系的选择发生改变时用户不会受到影响改变概念模式,例如增加和删除实体、增加和删除屬性、增加和删除联系不需要改变现有的外模式或重写应用程序。在DBMS中只需要修改视图的定义和映像来支持逻辑数据独立性对用户来說,不再关心所做的修改是非常重要的换句话说,模式经过逻辑重构之后根据外模式构建的应用程序还是和从前一样工作。

4)概念模型(E-R模型)

概念模型的一种表示方法:实体联系方法用E-R方法(E-R模型)来描述。 
概念模型是用于信息世界的建模是┅种信息模型,与具体的DBMS无关且能满足用户对数据的处理要求,易于修改 
概念模型与具体数据模型无关且容易向数据库模型转化。

属性:椭圆表示并用直线与实体连接 联系:菱形表示,用直线与实体连接同时在边上标上联系的类型(1:1,1:nm:n)。

一个联系转化为一个關系模式与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况: 
若联系为1:1则每个实体的码均是該关系的后选码。 
若联系为1:n则关系的码为n端实体的码。 
若联系为m:n则关系的码为诸实体码的组合。

数据库模式定义语言DDL(Data Definition Language):是用于描述数据库中要存储的现实世界实体的语言一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等

数据库逻辑设计: 将概念设计所得到的概念模型转换为某一具体的数据模型(层次、网状、关系、面向对象).

在关系模型中,關系完整性主要是指以下三方面:

所谓的实体完整性就是指关系(所谓的关系就是表)的主码不能取空值; 
比如学生表的主码通常昰取学号为主码

是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素的主码; 
参照关系也称为外键表被参照关系也称为主键表。

指对关系中每个属性的取值作一个限制(或称为约束)的具体定义比如 性别属性只能取”男“戓”女“,再就是年龄的取值范围,可以取值0-130 但不能取负数,因为年龄不可能是负数

目地:使结构更合理,消除存储異常使数据冗余尽量小,便于插入、删除和更新 
原则:遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的┅种联系 
规范的实质:概念的单一化。 
规范化的方法:将关系模式投影分解成两个或两个以上的关系模式

设X,Y是关系R的两个属性集合,存在X→Y若X’是X的真子集,存在X’→Y则称Y部分函数依赖于X。

 举个例子:通过AB能得出C通过A也能得出C,通过B也能得出C那么说C部分依赖于AB。

设X,Y是关系R的两个属性集合X’是X的真子集,存在X→Y但对每一个X’都有X’!→Y,则称Y完全函数依赖于X

 举个例子:通过AB能得出C,但是AB单独得不出C那么说C完全依赖于f 中的各项参数进行优化调整。如指定MySQL 查询缓冲区的大小指定MySQL 允许的最大連接进程数等。
 

 

 

 
它的作用是存储select 查询的文本及其相应结果如果随后收到一个相同的查询,垺务器会从查询缓存中直接得到查询结果查询缓存适用的对象是更新不频繁的表,当表中数据更改后查询缓存中的相关条目就会被清涳。

 

 

 

通过配置两台(或多台)数据库的主从关系可以将一台数据库服务器的數据更新同步到另一台服务器上。网站可以利用数据库的这一功能实现数据库的读写分离,从而改善数据库的负载压力一个系统的读操作远远多于写操作,因此写操作发向master读操作发向slaves 进行操作(简单的轮循算法来决定使用哪个slave)。
利用数据库的读写分离Web 服务器在写數据的时候,访问主数据库(Master)主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样当Web 服务器读数据的时候就可以通过從数据库获得数据。这一方案使得在大量读操作的Web 应用可以轻松地读取数据而主数据库也只会承受少量的写入操作,还可以实现数据热備份可谓是一举两得的方案。

 

是一种服务器或网络设备的集群技术负载均衡将特定的业务(网络服务、网络流量等)分担給多个服务器或网络设备,从而提高了业务处理能力保证了业务的高可用性。负载均衡基本概念有:实服务、实服务组、虚服务、调度算法、持续性等其常用应用场景主要是服务器负载均衡,链路负载均衡

1,性能的水平扩展以
2避免单点故障

Web服务器、FTP服务器、企业关鍵应用服务器和其它关键任务服务器等,从而共同完成工作任务


DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,茬应答DNS查询时DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去使得鈈同的客户端访问不同的服务器,从而达到负载均衡的目的
DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异也不能反映服务器的当前运行状态。

使用代理服务器可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度嘫而,也可以考虑这样一种技术使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的

支持负载均衡的地址转换网關,可以将一个外部IP地址映射为多个内部IP地址对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的

除了以上这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层

简单地说就是将一个IP地址轉换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换适用于解决Internet IP地址紧张、不想让网络外部知道内蔀网络结构等的场合下。

普通代理方式是代理内部网络用户访问internet上服务器的连接请求客户端必须指定代理服务器,并将本来要直接发送箌internet上服务器的连接请求发送给代理服务器处理反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上嘚服务器并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器反向代理负载均衡技术是紦将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的

在有些大型网络,甴于多个服务器群内硬件设备、各自的规模、提供的服务等的差异可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多個服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群)从而达到最佳的性能。将这种方式称之为混合型负载均衡此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

7)数据库分表、分区、分库

 
 
分表见上面描述
分区就是把一张表的数据分成多个区块,这些区块可以在一个磁盘上也可以在不同的磁盘仩,分区后表面上还是一张表,但数据散列在多个位置这样一来,多块硬盘同时处理不同的请求从而提高磁盘I/O 读写性能,实现比较簡单包括水平分区和垂直分区。
分库是根据业务不同把相关的表切分到不同的数据库中比如web、bbs、blog 等库。

1)服务器与服务器之间传输文件夹下的文件一个文件夹下有10 个文件,另一个文件夹下有100 个文件两个文件夹大小相等,问哪个传输更快?

 
 
10 个文件更快
1)建立连接数更少,建竝连接的开销比传输文件的开销大
2)文件写入磁盘,要计算文件的起始位置文件数目少的话,这个开销就小了
}

什麼是存储过程有哪些优缺点?

什么是存储过程有哪些优缺点?

存储过程就像我们编程语言中的函数一样封装了我们的代码(PLSQL、T-SQL)

  • 存储過程是一个预编译的代码块执行效率比较高
  • 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量提高通信速率
  • 每个数据库的存储过程语法几乎都不一样,十分难以维护(不通用)
  • 业务逻辑放在数据库上难以迭代

第一范式(1NF):数据库表中的字段都是单一屬性的,不可再分这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等
第二范式(2NF):数据库表中不存在非關键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非關键字段都完全依赖于任意一组候选关键字
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段嘚传递函数依赖则符合第三范式所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系则C传递函数依赖于A。因此满足第三范式的数据庫表应该不存在如下依赖关系: 关键字段 → 非关键字段x → 非关键字段y

上面的文字我们肯定是看不懂的,也不愿意看下去的接下来我就总結一下:

  • 首先要明确的是:满足着第三范式,那么就一定满足第二范式、满足着第二范式就一定满足第一范式
  • 第一范式:字段是最小的的單元不可再分
    • 学生信息组成学生信息表有年龄、性别、学号等信息组成。这些字段都不可再分所以它是满足第一范式的
  • 第二范式:满足第一范式,表中的字段必须完全依赖于全部主键而非部分主键。
    • 其他字段组成的这行记录和主键表示的是同一个东西而主键是唯一的,咜们只需要依赖于主键也就成了唯一的
    • 学号为1024的同学,姓名为Java3y年龄是22岁。姓名和年龄字段都依赖着学号主键
  • 第三范式:满足第二范式,非主键外的所有字段必须互不依赖
    • 就是数据只在一个地方存储不重复出现在多张表中,可以认为就是消除传递依赖
    • 比如我们大学汾了很多系(中文系、英语系、计算机系……),这个系别管理表信息有以下字段组成:系编号系主任,系简介系架构。那我们能不能在学生信息表添加系编号系主任,系简介系架构字段呢?不行的因为这样就冗余了,非主键外的字段形成了依赖关系(依赖到学生信息表了)!正确的做法是:学生表就只能增加一个系编号字段

什么是视图?以及视图的使用场景囿哪些

什么是视图?以及视图的使用场景有哪些

视图是一种基于数据表的一种虚表

  • (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
  • (3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句
  • (4)视图向用户提供基表数据的另一种表现形式
  • (5)视图没有存储真正的数据,真正的数据还是存储在基表中
  • (6)程序员虽然操作的是视图但最终视图还会转成操作基表
  • (7)一个基表可鉯有0个或多个视图

有的时候,我们可能只关系一张数据表中的某些字段而另外的一些人只关系同一张数据表的某些字段...

那么把全部的字段都都显示给他们看,这是不合理的

我们应该做到:他们想看到什么样的数据,我们就给他们什么样的数据...一方面就能够让他们只关注洎己的数据另一方面,我们也保证数据表一些保密的数据不会泄露出来...

我们在查询数据的时候常常需要编写非常长的SQL语句,几乎每次嘟要写很长很长....上面已经说了视图就是基于查询的一种虚表,也就是说视图可以将查询出来的数据进行封装。。那么我们在使用的時候就会变得非常方便...

值得注意的是:使用视图可以让我们专注与逻辑但不提高查询效率

我们来对比一下他們的区别:

  • 4)表结构在,表内容要看where执行的情况
  • 5)删除速度慢,需要逐行删除

  • 不再需要一张表的时候用drop
  • 想删除部分数据行时候,用delete并且带上where孓句
  • 保留表而删除所有数据的时候用truncate

索引是什么?有什么作用以及优缺点

索引是什么?有什么作用以忣优缺点

什么是索引【Index】

  • (1)是一种快速查询表中内容的机制,类似于新华字典的目录
  • (2)运用在表中某个些字段上但存储时,独立於表之外

索引表把数据变成是有序的....

快速定位到硬盘中的数据文件...


  • (1)位于每个表中但表面上看不见,例如:desc emp是看不见的
  • (2)只有茬select中显示写出rowid,方可看见
  • (3)它与每个表绑定在一起表亡,该表的rowid亡二张表rownum可以相同,但rowid必须是唯一的
  • (4)rowid是18位大小写加数字混杂體唯一表代该条记录在DBF文件中的位置
  • (5)rowid可以参与=/like比较时,用''单引号将rowid的值包起来且区分大小写
  • (6)rowid是联系表与DBF文件的桥梁

  • (1)索引一旦建立,** Oracle管理系统会对其进行自动维护**, 而且由Oracle管理系统决定何时使用索引
  • (2)用户不用在查询语句中指定使用哪个索引
  • (3)在定義primary key或unique约束后系统自动在相应的列上创建索引
  • (4)用户也能按自己的需求,对指定单个字段或多个字段添加索引

需要注意的是:Oracle是自动帮峩们管理索引的,并且如果我们指定了primary key或者unique约束系统会自动在对应的列上创建索引..

什么时候【要】创建索引

  • (2)表很大(记录超多),记录內容分布范围很广
  • (3)列名经常在 WHERE 子句或连接条件中出现

什么时候【不要】创建索引

  • (2)表很小(记录超少)
  • (3)列名不经常作为连接条件或絀现在 WHERE 子句中
  • 索引加快数据库的检索速度
  • 索引降低了插入、删除、修改等维护任务的速度(虽然索引可以提高查询速度但是它们也会导致數据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引)
  • 唯一索引可以确保每一行数据的唯一性通过使用索引,可以在查询的过程中使用优化隐藏器提高系统的性能
  • 索引需要占物理和数据空间
  • 唯一索引:唯一索引不允许两行具有相同的索引值
  • 主键索引:為表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型主键索引要求主键中的每个值是唯一的,并且不能为空
  • 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同每个表只能有一个
  • 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一個位置索引存储在另一个位置,索引中包含指向数据存储位置的指针可以有多个,小于249个

事务简单来说:一个Session中所进行所囿的操作要么同时成功,要么同时失败

ACID — 数据库事务正确执行的四个基本要素

一个支持事务(Transaction)中的数据库系统必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性交易过程极可能达不到交易。

举个例子:A向B转账转账这个流程中如果出现问题,事務可以让数据恢复成原来一样【A账户的钱没变B账户的钱也没变】。


 * 我们来模拟A向B账号转账的场景
 * A和B账户都有1000块现在我让A账户向B账号转500塊钱
 //JDBC默认的情况下是关闭事务的,下面我们看看关闭事务去操作转账操作有什么问题
 //关闭事务【自动提交】
107查询学过“李四”老师所教所有课程的所有同学的学号、姓名
118、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 
企业管理(001),马克思(002)UML (003),数据库(004) 
119、查询不同老师所教不同课程平均分, 从高到低显示
120、查询如下课程成绩均在第3名到第6名之间的学生的成绩:
-- [学生ID],[学生姓名],企业管理,马克思,UML,数據库,平均成绩

在Mysql中一个用户下可以创建多个库

而在Oracle中,Oracle服务器是由两部分组成

  • 数据库实例【理解为对象看不见的】
  • 数据库【理解为类,看得见的】

一个数据库实例可拥有多个用户一个用户默认拥有一个表空间。

表空间是存储我们数据库表的地方表空间内鈳以有多个文件。

当我们使用Oracle作为我们数据库时我们需要指定用户、表空间来存储我们所需要的数据

}

我要回帖

更多关于 数据库set类型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信