精华内容
下载资源
问答
  • 主键:在关系中能够唯一标识表中的不同行的属性或属性组合,并且这些属性值不包括空值和重复值,用Primary Key表示。 外键:某个表的主键常被引用为另一个表的外键。eg:学号是学生信息表的主键,而不是学生成绩表的...

    关系数据库


    关系模型


    关系:NULL
    表结构:NULL
    属性:NULL
    关系模式:NULL
    属性值:NULL
    空值:NULL
    域:NULL
    主键:在关系中能够唯一标识表中的不同行的属性或属性组合,并且这些属性值不包括空值和重复值,用Primary Key表示。
    外键:某个表的主键常被引用为另一个表的外键。eg:学号是学生信息表的主键,而不是学生成绩表的主键,学号称为学生成绩表的外键。
    主表和从表:NULL
    关系数据库:是指一些相关的表和其他数据库对象的集合。数据库不仅包含表,而且包含了其他数据库对象,如视图,存储过程,索引。


    E-R模型到关系模型


    实体:方框  属性:椭圆
    将实体与属性转化为关系模型,作为连接实际对象与数据库的桥梁。

     1. E-R模型到关系模型的转化
     2. 一对多到关系模型的转化
     3. 多对多到关系模型的转化
    以两个实体的主键作为他的外键。

     4. 一对一到关系模型的转化


    设计范式之数据库三大范式


    第一范式


    要求数据库表中的字段都是单一属性且字段值不可再分解。以保证每一列的原子性。


    第二范式


    要求一张表只包含一个实体信息,并且每行记录由主键唯一标识这一行。由于一张表中同时表述两件事,不满足第二范式。eg:学生课程表和课程信息表混杂在一个表中


    第三范式


    冗余字段。从表中只需引用主表的主键字段即能满足第三范式。适当引入关系表,可将建立多个表间的关系。
    另还有第四、五、BC范式。

    展开全文
  • 在现在的关系型数据库...超键可能包含用于唯一标识记录所不必要的额外的列,我们通常只对仅包含能够唯一标识记录的最小数量的列感兴趣。 其实乍一看很难懂,其实是说法不太容易懂 我们来弄一张表来说明一下 stu...

    在现在的关系型数据库中,存在着常用的几种键,举一个最常见的键: 主键,大家肯定都知道主键吧,

    现在我们要介绍关系型数据库中的4中键:超键、候选键、主键、外键

    1)超键:

    一个列或者列集,唯一标识表中的一条记录。超键可能包含用于唯一标识记录所不必要的额外的列,我们通常只对仅包含能够唯一标识记录的最小数量的列感兴趣。

    其实乍一看很难懂,其实是说法不太容易懂

    我们来弄一张表来说明一下

    student_id name grade class age
    00001 A 1 2 18
    00002 C 1 1 17
    00003 F 1 3 16
    00004 G 1 4 18
    00005 H 2 2 16
    00006 Q 2 1 17
    00007 S 2 2 16
    00008 Z 2 2 19

    一张student表 假设姓名没有重复的  学号(student_id) ,姓名都可以确定唯一一条记录,

    学号+姓名的组合也可以确定一条记录,这三种都叫超键

    2)候选键

    仅包含唯一标识记录所必需的最小数量列的超键。表的候选键有三个属性:
    唯一性:在每条记录中,候选键的值唯一标识该记录。
    最小性:具有唯一性属性的超键的最小子集。
    非空性:候选键的值不允许为空。


    在我们的例子中,分公司编号是候选键,如果每个分公司的邮编都不同,那么邮编也可以作为分公司表的候选键。一个表中允许有多个候选键。

    上面的超键中有3个,有2个值包含一个字段,有一个含有2个字段,超键中最少的组合(至少为1,且去掉任何一个字段都不再是超键)为候选键,上图的例子中2个只含一个字段的超键为候选键,那个带2个字段的超键由于去掉其中一字段依然是超键,所以其不是候选键。

     

    3)主键和外键

    主键和外键就不过多介绍了,直接放定义

    主键:


    主键的选择在关系数据模型中非常重要,很多性能问题都是由于主键选择不当引起的。在选择主键时,我们可以参考以下原则:
    1.主键要尽可能地小。
    2.主键值不应该被改变。主键会被其他表所引用。如果改变了主键的值,所有引用该主键的值都需要修改,否则引用就是无效的。
    3.主键通常使用数字类型。数字类型的主键要比其他数据类型效率更高。
    4.主键应该是没有业务含义的,它不应包含实际的业务信息。无意义的数字列不需要修改,因此是主键的理想选择。大部分关系型数据库支持的自增属性或序列对象
    更适合当作主键。
    虽然主键允许由多列组成,但应该使用尽可能少的列,最好是单列。

    外键:

    一个表中的一个列或多个列的集合,这些列匹配某些其他(也可以是同一个)表中的候选键。注意外键所引用的不一定是主键,但一定是候选键。当一列出现在两张
    表中的时候,它通常代表两张表记录之间的关系。

    展开全文
  • JAVA备忘录(四):线程池面试题

    千次阅读 2020-01-20 17:52:12
    超键:在关系中能够唯一标识一个元组的属性集称为超键。超键可以是一个属性,也可以是多个属性的组合。 候选键:不含多余元素的超键。也就是说,只要删除候选键中的任意一行属性,它就不再能唯一标识一个元组了。 ...

    一.什么是线程池?

    首先说一下它的定义,线程池是一种多线程处理形式,当有任务提交到线程池时,可以直接使用线程池内的线程来执行任务。而如果不使用线程池的话,每次任务的执行都需要进行一次线程的创建于下销毁,这个过程的开销是比较大的,甚至超过了业务本身的执行开销。使用线程池就可以对这个问题进行优化。
    JUC下的Executors类提供了Executor接口的实现方式用来创建线程池。
    而线程池对象实际上是ThreadPoolExecutor对象;java本身也给我们封装好了几种常用的线程池。

    二.说说几种常见的线程池及其使用场景

    • 1.newFixedThreadPool:这是一个固定长度大小的线程池;当有新的任务提交且线程池中线程数还没达到最大值时,会不断创建新的线程到线程池中,直到达到最大值;超出的线程就会到任务阻塞队列中进行等待。用的是LinkedBlockingQueue这个任务阻塞队列。
      适用于并发数量比较稳定的场景。
    • 2 newCachedThreadPool:这是一个可缓存的线程池。容量有上限,可以在调用静态工厂方法时显式传入,而如果不传入参数的话,默认最大容量为Integer.MAX_VALUE。当任务所需线程数小于corePoolSize(核心线程数)时,直接在线程池创建新的线程;当所需线程大于corePoolSize时,当前任务就会进入任务拥塞队列之中;而所需线程数大于线程池最大容量且队列已满的时候,就会执行拒绝策略来处理。该线程池所使用的队列是SynchronizedQueue。并且启用TimeOut机制:当线程池中的非核心线程闲置超过60s时,该线程就会被销毁。
      适用于线程数量多且执行时间短的场景。
    • 3 newSingleThreadExecutor:单线程化的线程池,只有唯一的一个工作线程来执行任务,保证所有任务都能按照指定顺序(先来先服务,最高优先级等)来运行
    • 4 newScheduledThreadPool:相比之下功能更强大,支持定时以及周期性任务的执行。
      适用于需要进行定时或周期性任务的场景。

    三.线程池的几个重要参数?

    线程池的参数其实就是ThreadPoolExecutor类的参数。
    1.corePoolSize就是线程池中的核心线程数量,这几个核心线程在闲置了特定的时间之后也不会被回收(当然也可以设定为会被回收)
    2.maximumPoolSize:线程池中可以容纳的最大线程的数量。
    3.keepAliveTime:非核心线程的最大空闲时间,空闲超过了这个时间的非核心线程会被自动回收
    4.util:计算keepAliveTime的时间单位,如秒,毫秒。
    5.workQueue:任务拥塞队列。当任务所需线程超过了线程池核心线程数时,任务就要进入队列中进行等待,一般是按照先来先服务的调度策略。
    6.threadFactory:就是创建线程的线程工厂。
    7.handler:拒绝策略。当线程池达到最大容量且队列满了之后,对于超额的任务的处理方法。

    四.说说线程池的拒绝策略吧?

    当任务提交到线程池,而线程池已经达到最大容量,且队列已满,此时就会对提交的任务拒绝服务,就是拒绝策略。RejectedExecutionHandler接口提供途径去自定义方法去实现拒绝策略。而在ThreadPoolExecutor中已经有四种拒绝策略了。

    • AbortPolicy:拒绝服务时直接抛出异常,阻止线程池的正常工作。
    • CallerRunPolicy:直接在调用者线程中运行当前的任务。
    • DiscardPolicy:直接将该方法丢弃,不进行处理。
    • DiscardOrdestPolicy:丢弃队列中最老的一个任务,并重新提交当前任务。
      除此之外还可以根据实际需要自定义拒绝策略,只要实现RejectedExecutionHandler接口就可以了。

    五.execute和submit的区别。

    execute方法是线程池中最原生的方法,也是Executor接口中唯一一个方法,它可以接受Callable对象或者Runnable对象。而submit方法其实就是调用了execute方法,只能接受Callable对象。
    最主要的区别在于execute方法执行线程没有返回值,而submit方法执行会返回一个Future类对象,通过该对象的get方法可以获取线程执行的返回值。另外Future类的get方法是阻塞操作,当submit多个Callable时,只有所有任务都执行完成了,才能使用get按照任务提交顺序依此获得返回值。

    六.线程池有哪几种工作队列?

    • 1.ArrayBlockingQueue:基于数组实现的有界阻塞队列,采取先进先出原则对元素进行排序。
    • 2.LinkedBlockingQueue:基于链表实现的阻塞队列,也采用先进先出来排序元素,静态工厂方法创建的newFixedThreadPool()线程池就使用了这种队列。
    • 3.SynchronousQueue:一个不储存元素的阻塞队列。特点为在当前任务进行插入同时,上一个进入队列的任务必须被移除,反之亦然;如果不满足这个条件,操作就会一直处于阻塞状态。静态工厂方法创建的newCachedThreadPool就用这种队列。
    • 4.DelayedWorkQueue:类似于LinkedBlockingQueue,也是基于链表实现。但是元素排序方式是按照最高优先级来进行。

    七.说一下Future类的get()方法?

    当Callble对象作为参数被传入线程池的submit()方法进行执行时,方法会返回一个Future类对象,而Future对象的get方法可以获取到对应线程执行的返回值(也就是Callable对象call方法的返回值)。
    需要提到的是,Future类的get方法是一个阻塞操作,也就是说只有当线程执行完毕并返回值之后,get方法才能获取到返回值,否则将一直阻塞直至线程执行完毕返回值。这样的话就会有资源浪费的情况发生,比如submit提交了一系列任务之后返回一系列Future对象,对Future对象逐个调用get方法可能会发生阻塞,所以可能造成一种情况比如后面的线程早已经执行完毕了,但此时还需要等待前面的线程执行完,才能获得到返回值。
    解决方法主要有两个:

    • Future类中还有一个get的重载方法,该方法传入一个时间大小参数和一个时间单位参数,规定get方法最多只能阻塞有限的时间,超过有限时间将放弃接受返回值,退出阻塞。但这个方法有点治标不治本,因为本质上它还是要阻塞一段时间。
    • 可以使用CompletionService类,该类的构造需要传入一个线程池对象作为参数。使用方法和线程池相同,也拥有submit()方法。和Future类不一样的是,CompletionService对象获取线程执行返回值的操作是不阻塞操作,也就是说它不关心get方法调用顺序,而是只要有线程执行完毕并且返回值,就可以直接获取到。
    展开全文
  • 超键:在关系中能够唯一标识一个元组的属性集称为超键。超键可以是一个属性,也可以是多个属性的组合。 候选键:不含多余元素的超键。也就是说,只要删除候选键中的任意一行属性,它就不再能唯一标识一个元组了。 ...

    1.java中有几种类型的流?

    A:一般来说有两种区分法

    • 按字节流和字符流分成两种:字节流是基于二进制数据操作的,都继承于InputStream或者OutputStream这两个抽象类。而字符流是基于字符操作的,一般用来解决非英文数据的乱码问题,字符流类都继承于Reader和Reader这两个类。
    • 按照输入输出流也可分成两种:输入流是指从内存或者数据通道上读取数据,比如说FileInputStream和FileReader;而输出流是指向内存或者数据通道中写入数据,比如说FileOutputStream和FileWriter。

    2.字节流和字符流的区别

    A:字节流是最基本的,计算机的所有数据都采用二进制数据的方法进行传输,而字节流进行操作的最基本单位就是单个字节,所以字节流通常被用来处理对二进制数据。Java中最基本的两个字节流类就是InputStream和OutputStream,所以继承它们的子类都是基于字节流操作的。
    而字符流进行操作的最基本单位是Unicode码元(大小为两个字节),字符流经常被用来处理文本数据。Java中最基本的两个字符流父类就是Reader和Writer。所有继承它们两个的子类都是基于字符流操作的。

    3.缓冲流与非缓冲流的区别。

    A:缓冲流的底层实现了一个缓冲区,其实就是一个长度为8192的byte类型数组,这样可以解决非缓冲流一次只能读取一个字符或者字节导致的低效率问题。另外使用缓冲流还需要注意的是,缓冲区中的数据不会像非缓冲流一样被自动提交,只有当流资源被close(),或者显式地调用flush(),缓冲区中的数据才会被写到目标资源中。
    另外如果读写数据非常大的话,也应该使用缓冲流提高效率,还可以降低对硬盘的损伤。

    4.什么叫对象序列化,什么叫反序列化,如何实现?

    A:序列化就是将对象以二级制数据的形式保存在硬盘中。反序列化就是将二进制文件读取之后转化为对象。
    实现方法是让需要进行序列化的类实现Serializable接口,如果不希望类中的某个属性参与序列化,就用transient关键字来修饰该属性。

    5.在实现序列化接口的时候一定要生成一个serialVersionUID字段吗?有什么用?

    A:不一定。
    serialVersionUID是版本号,为了保持版本号的一致来进行序列化。如果没有显式声明该字段的话,JVM会给该类分配一个默认的版本号,每次类中的属性被修改的时候,该版本号都会被修改。而将二进制数据文件进行反序列化并用该类对象去进行接收的时候,如果双方版本号不一致,那么就会报错。而我们显式地声明版本号,就不会出现这个问题。
    再配合使用ObjectInputStream和ObjectOutputStream对对象进行转化后的读写就可以完成序列化与反序列化

    6.BufferedReader是属于哪种流,有啥用?里面有啥经典的方法?

    A:BufferedReader被缓冲流修饰的字符输入流。
    首先它是一个输入流,所以能把数据从内存或者数据通道中读取出来;然后它是一个字符流,它的最小处理单位是一个unicode单元,所以经常被用在处理文本数据的场景下;最后它是一个缓冲流,底层实现了缓冲区,把数据写在缓冲区,可以减少客户端和内存的交互次数,提高性能。另外还需要提的是需要手动调用其flush()方法才可以将缓冲区中的数据输出。
    经典方法就是readLine()方法,一次可以读取文件中的一行数据,返回一个String类型的对象。

    展开全文
  • (2)若关系中的某一属性组的值能够唯一标识一个元组,则称该属性组为候选码,从候选码中选定的一个码为主码;如果一个属性在表(关系)中既不是主码也不是候选码,但是他是另一个关系的主码那它就是外码。 (3)...
  • 由一个或多个属性组成,其值能够唯一标识关系中一个元组 至多由一个属性组成 [参考答案] 由一个或多个属性组成,其值能够唯一标识关系中一个元组 试题2 有两个关系A(S,SN,D)和B(D,CN,NM),S是A的主码,...
  • 1.关系型数据库的术语  记录类型 关系模型 基本表  文件 关系、实例 基本表 ... ·候选键(unique):能够唯一标识元组,且不包含多余属性的属性值。  ·主键(Primary key):正在使...
  • 所谓码就是能唯一标识实体的属性,是整个实体集的性质,而不是单个实体的性质。它包括超码,候选吗,主码。 候选码: (又称候选码,候选关键字,码 ,candidate key): 设K是一个R(U)的属性或属性集合(注意可以...
  • 关系型数据库

    2017-05-13 15:45:00
    关系中的某一个属性和属性组值能够唯一能够唯一标识一个元组,则称该属性或者属性组为候选码 主码(primary key) 若一个关系有多个候选码,则挑选其中一个作为主码 主属性(key attribute) 包含在任何候选码...
  • 1.码=能够唯一标识一组元组的属性集 2.主键:能够唯一标识一组元组的属性集 主键是从候选键选择一个作为主键。 3.候选码,能够唯一标识一组元组的属性集 候选码的任一真子集都不能唯一标识一组元组。 主属性:候选...
  • 码:指能够唯一标识一个元组的属性组(是属性组,包含多个一个或多个属性),但是不是一个最小码组合的情况,也就是其子集还能够唯一标识一个记录 候选码:指能够唯一标识一个元组的属性组(是属性组,包含多个一个...
  • 关系

    千次阅读 2013-03-05 09:58:30
    超键(英语:superkey),有的文献称“超码”,是在数据库关系模式设计中能够唯一标示多元組的属性集。 包含所有屬性的集叫做明顯超鍵。 候选键或候选码(英语:candidate key)是某个关系变量的一组...
  • 1.2关系数据库

    2016-12-10 09:36:16
    主关键字:能够唯一标识表中记录的字段(不重复的)二.关系的运算:选择:从关系中选择符合条件的元组——选择行投影:从关系中选择符合条件的属性和值——选择列联接:去掉重复属性的等值联接 转载于:...
  • 候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如: 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名)都是候选码 候选码需要满足: 唯一性:...
  • 该文章仅仅是课堂笔记,方便自己查看的。因为是学生,对知识点的理解可能多有不足,请多多包涵。...候选键:如果一个属性集能够唯一标识元组(即已经满足超键的定义),且又不含有多余的属性,那么称...
  • 标识域 Identify Field

    2014-01-16 11:28:00
    在对象保存DB的ID字段,以维持内存对象和DB数据Row之间的identify. 关系DB使用key来区分数据行. 而内存对象不需要这样的键.因为对象系统能够保证身份确认. 读取时没有问题,但是为了正确地写回DB.需要联系两者....
  • 2,如果一个关系中的某个属性或属性集能够唯一的确定一个元组,则称该属性(集)是这个关系上的超键(Super key,SK);如果将超键中的任一属性去掉后剩余的属性集不能唯一标识一个元组,则称该属性集是关系上的候选...
  • 在基于关系型数据库设计时候,通常要为每张表指定一个主键,所谓主键就是能够唯一标识某一行记录的属性或属性组,一个表只能有一个主键,但可以 有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保...
  • 超键:凡是能够唯一标识一个元组的属性或属性组,均称为超键 候选键:候选键是最小的超键,它的任意真子集都不能成为超键 主键:在一个关系中可能存在多个候选主键,选取其中一个候选键作为主键 外...
  • 第二章 关系数据库

    2019-03-30 17:26:50
    候选码:关系中某一属性组的值能够唯一标识一个元组,而其子集不能,则称该属性组为候选码 候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性 主码:若一个关系有多个候选码,则选定...
  • [{from: yourIDInNeo4j, to: [yourIDInNeo4j-1,yourIDInNeo4j-2], properties: {key:vaule}, type: relName}]from和to的值是你在Neo4j能够唯一标识该节点的属性值,properties以json格式存放想要增添到关系relName...
  • 1、候选码:能够唯一标识一条记录的最小属性集。若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。 2、主码:主码指主关键字。主关键字...
  • 候选码:关系中的一个属性或者属性组,能够唯一标识一个元组,且它的真子集不能唯一标识元组。 主码:从所有候选码中选择一个,作为主码。例如:学生关系(学号,身份证号,姓名,院系,专业,性别 ,生日),有两个...
  • 候选码:某一属性组的值能够唯一标识一个元组,而器子集不能,则成该属性组为候选码 主码:候选码的一个 主属性:候选码的属性 非码属性:非候选码的属性 全码:所有属性都是这个关系模式的候选码 ...
  • 关系模型中一个码是 由一个或多个属性组成,其值能够唯一标识关系中一个元组。 域是一组相同值的数据集合 同一个关系模型的任何两个元组值可全同 错。 在关系代数的专门关系运算中,从表中选出满足某种条件的...
  • 主键与索引,主键与外键的关系

    千次阅读 2013-01-03 17:54:35
     所谓主键就是能够唯一标识某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述...
  • 数据库的函数依赖、键和范式

    千次阅读 2018-05-27 21:07:35
    超键:是指能够唯一标识一个元组的属性集;候选键:能够唯一标识一个元组,且不含多属性;主键:用户选作元组标识的候选键;外键:本联系中不作为主键,单在其他关系中作为主键的属性或属性组。3.图解法求候选键步骤...
  • 为什么这么设计(Why’s THE Design)是一系列关于计算机...当我们在使用关系型数据库时,主键(Primary Key)是无法避开的概念,主键的作用就是充当记录的标识符,我们能够通过标识符在一张表定位到唯一的记录,...
  • 范式种类 ...1、超键:一组能够唯一标识元组的属性集。 2、候选键:如果超键不包括多余的属性,也能唯一标识元组,那这个超键就是候选键。 3、主键:用户可以选择候选键集合的一个候选键,作为主
  • 我们为什么要使用数据库: 降低储存数据的冗余度;更高的数据一致性;储存的数据可以共享;可以建立数据库所遵循的标准;...主键:在关系型数据库的表,用一个唯一的标识符来标识每一行,这个标

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 216
精华内容 86
关键字:

关系中能够唯一标识