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

【DB笔试面试417】设计题:根据所构建的E-R图,设计满足3NF的关系模式,并标出每个关系模式的主码和外码。

,一门课程可被多名学生选修; Ⅴ、学生选修完课程后,可获得相应课程的成绩。...针对以上描述,完成下列设计内容: ① 构建选修课系统的E-R图。 ② 根据所构建的E-R图,设计满足3NF的关系模式,并标出每个关系模式的主码和外码。 A 答案 答案:① E-R图如下所示: ?...② 关系模式如下所示: DEPT(DEPTNO,DEPTNAME) 主码:DEPTNO,无外码 TEACHER(TNO,TNAME,DEPTNO) 主码:TNO,外码:DEPTNO STUDENT(SNO...,SNAME,SEX,DEPTNO) 主码:SNO,外码:DEPTNO COURSE(CNO,CNAME,CREDIT,TNO) 主码:CNO,外码:TNO S_C(SNO,CNO,成绩) 主码:(SNO...,CNO),外码:(SNO,CNO) About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用 ● 作者博客地址:http://blog.itpub.net/26736162

1.5K10

Laravel Eloquent 模型关联关系(下)

关联查询 关于关联查询,我们在前面介绍关联关系定义的时候已经穿插着介绍过,这里简单回顾下。...另外,如果访问的是模型实例上的 author() 方法时,返回的不是用户实例了,而是一个关联关系实例,该实例注入了查询构建器,所以你可以在其基础上通过方法链的方式构建查询构建器进行更加复杂的查询,我们以一个一对多的查询为例...基于关联查询过滤模型实例 有结果过滤 有的时候,可能需要根据关联查询的结果来过滤查询结果,比如我们想要获取所有发布过文章的用户,可以这么做: $users = User::has('posts')->get...whereHas/orWhereHas 方法基于闭包函数定义查询条件,比如我们想要过滤发布文章标题中包含「Laravel学院」的所有用户: $users = User::whereHas('posts...、一对多的多态关联、多对多的多态关联; 以上关联关系的查询,主要包含两种方式:懒惰式加载和渴求式加载; 基于关联查询构架复杂查询对查询结果进行过滤; 关联模型的更新、插入和删除操作。

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

    跟我一起学Laravel-EloquentORM进阶部分

    对多对多关系来说,引入了一个中间表,因此需要有方法能够查询到中间表的列值,比如关系确立的时间等,使用pivot属性查询中间表 $user = App\User::find(1); foreach (...关联关系查询 在Eloquent中,所有的关系都是使用函数定义的,可以在不执行关联查询的情况下获取关联的实例。...查询关系存在性 使用has方法可以基于关系的存在性返回结果 // 检索至少有一个评论的所有帖子......,然后在遍历的时候再执行N个查询查询出作者信息,显然这样做是非常低效的,幸好我们还有预加载功能,可以将这N+1个查询减少到2个查询,在查询的时候,可以使用with方法指定哪个关系需要预加载。...更新父模型的时间戳 假设场景如下,我们为一个帖子增加了一个新的评论,我们希望这个时候帖子的更新时间会相应的改变,这种行为在Eloquent中是非常容易实现的。

    4K50

    通过Eloquent实现Repository模式

    可以去之前的文章查看:orm 系列 之 常用设计模式 我们可以看到Model中混合了各种模式,这就要求使用者在使用的时候清楚的知道怎么使用,这里的清楚知道怎么用是指根据SOILD原则,优雅的使用Model...return $this->posts() ->newQuery() ->whereHas('favorites', function...,限制使用范围),但是这样子会导致想whereHas这种方法执行不成功。...,Eloquent的ActiveRecord模式可以让我们非常容易的实现DataMapper,根据Clean architecture的定义,我们将domain services分为了Repositories...但是到目前,还有一个问题没有解决,那就是通过Repository,我们很难实先Eloquent/Builder那样丰富的查询功能,我们不得不每次新增一个查询条件,就去新增接口或者参数,不慎其烦,就像之前的

    68930

    『数据库』数据库的查询可不是只知道Select就可以的--关系数据库系统的查询处理

    语法分析:进行语法检查 2)查询检查 查询检查的任务 合法权检查 视图转换 安全性检查 完整性初步检查 根据数据字典中有关的模式定义检查语句中的数据库对象,如关系名、属性名是否存在和有效 如果是对视图的操作...,则要用视图消解方法把对视图的操作转换成对基本表的操作 根据数据字典中的用户权限和完整性约束定义对 用户的存取权限进行检查 检查通过后把SQL查询语句转换成内部表示,即等价的关系代数表达式。...(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。...对于小关系,使用全表顺序扫描,即使选择列上有索引 对于大关系,启发式规则有: (1)对于选择条件是“主码=值”的查询 查询结果最多是一个元组,可以选择主码索引 一般的关系数据库管理系统会自动建立主码索引...(2)对于选择条件是“非主属性=值”的查询,并且选择列上有索引 要估算查询结果的元组数目 如果比例较小(<10%)可以使用索引扫描方法 否则还是使用全表顺序扫描 (3)对于选择条件是属性上的非等值查询或者范围查询

    1.3K20

    Elasticsearch学习笔记

    是任意字符串,默认是_id 主分片的数量不可改变,否则之前的路由失效,文档就找不到了 自定义路由可以保证有关联性的文档被保存在同一个分片 2....标准切分,去掉大部分符号,最后转为小写 空格分析器:按空格切分,不转换为小写 语言分析器:根据特定语言的特性做分析 查询方式 字段查询:精确匹配,查询前不会将被查询的字符串分析 全文查询:查询前会先用分析器分析要查询的字符串...分布式搜索的执行方式 概述 搜索包括查询多个分片,并将多个分片元信息合并,然后再根据元数据获取真正数据两个步骤。 查询多个索引和查询一个索引完全一致,无非是多查了几个分片。...,前者会被缓存,且顺序不要改变 五....地理形状(geo_shape) 地理形状是通过一个个geohash单元画出来的 八. 数据建模 1. 关联关系 关联关系的处理,使用扁平化的存储,将数据冗余到同一个索引,提高查询效率 2.

    1.9K52

    【ES三周年】+es快速入门&基础概念讲解

    基础知识基本认知索引(index):类似于传统关系数据库中的一个数据库; 复数词为 indices 或 indexes类型(type):类似于传统关系数据库中的一个表文档(docuemnt):类似于传统关系数据库中的表中的一行数据倒排索引...:关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。...一个没有倒排索引的属性是不能被搜索到的Elasticsearch 开放的restful api接口通信,所以理论任何语言都可以接入分析和过滤器认知字符过滤器首先,字符串按顺序通过每个 字符过滤器 。...一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条。Token 过滤器最后,词条按顺序通过每个 token 过滤器 。...megacorp索引,分配3封主分配,每个主分片分配1个副本,这里总的是6个分片(3主3副), 后面章节我们会简单介绍es集群知识PUT /megacorp{ "settings" : {

    31330

    常见数据库简答题_数据库基础知识试题

    (期末2) 外模式/模式映像、模式/内模式映像 外模式/模式映像:当模式改变的时候,数据库管理员修改有关的外模式/模式映像,使得可以使外模式保持不变,应用程序是根据外模式编写的,从而应用程序不必修改,...当模式改变时,数据库管理员修改外模式/模式映像,可以使外模式保持不变,应用程序是根据外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。...查询表:查询结果对应的表 视图表:由基本表或者其他视图导出的表,是虚表,不对应实际存储的数据 6.基本关系的六种性质(关系的特性) (1)列是同质的 (2)不同的列可来自同一个域 (3)列的顺序无所谓...作用:是为了加快查询速度,减慢更新速度。类型包括了聚簇索引、唯一索引、非唯一索引 改变表中的数据,索引将自动更新。...最经常查询的表上建立聚簇索引来提高查询效率,一个基本表上最多建立一个聚簇索引,经常更新的表上,不宜建立聚簇索引 聚簇索引:索引项的顺序与表中记录的物理顺序一致的索引组织 索引的作用: (1)可以在一个基本表上创建多个索引

    2.4K10

    大厂都在用的MySQL主从复制、读写分离及高可用方案

    1 单机 =》集群 根据云厂商Benchmark结果,4核8G机器运行 MySQL 5.7 时,可支撑TPS 500,QPS 10000。...如果他们收到了,那么相对于之前发送的其他事务,他们都将以相同的顺序收到它。因此,所有服务器都以相同的顺序接收相同的交易集,并且为交易建立了全局总订单。...当证明过程确定交易之间没有冲突时,这是允许的。在单主模式下,在主服务器上,并发,无冲突的本地事务以与组复制所同意的全局顺序不同的顺序进行提交和外部化的可能性很小。...特点: 自动发现MySQL的复 制拓扑,并且在web.上展示; 重构复制关系, 可以在web进行拖图来进行复制关系变更; 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本; 支持命令行和web...UI 界面 拖拽改变主从关系 参考 https://dev.mysql.com/doc/refman/5.7/en/group-replication-primary-secondary-replication.html

    1.3K30

    考研-数据库_数据库系统考研看什么书

    文章目录 前言 一、数据库的概念 二、关系数据库 三、SQL语言 四、数据库安全性 五、数据库完整性 六、关系数据理论 七、数据库设计 八、数据库编程 九、查询处理和查询优化 十、数据库恢复技术 十一、.../模式映像:逻辑独立性(模式改变,映像做相应的改变,使得外模式不变,从而应用程序不必修改) 模式/内模式映像:物理独立性(内模式改变,映像做相应的改变,使得模式不变,从而应用程序不必改变) 数据库管理员的职责...候选码:某一属性组的值能唯一确定一个元组 主属性:候选码的诸属性 范式: 关系必须要满足一定的规范条件 基本关系操作 并 差 积 投影:列 选择:行 SQL 是结构化查询语言...,非过程化的语言 关系的完整性 实体完整性: 主码唯一且非空 参照完整性: 一个关系中的外码,对应着另一个关系的主码 用户定义的完整性: 就是针对某一具体关系数据库的约束条件 三、SQL语言...(效率低,不可行) 一次封锁法:一次将所有要使用的数据全部加锁 顺序封锁法:预先对数据对象规定封锁顺序,所有事物按照顺序进行封锁 死锁的诊断 超时法:事务的等待时间超过了规定的时间,就认为发生死锁

    57740

    小议MySQL主从复制、读写分离及高可用方案

    当流量在流动时,可以按略有不同的顺序对事务进行外部化,或者对某些成员先进行外部化。 例如:在多主要模式下,尽管尚未应用全局顺序中较早的远程事务,但是本地事务可能会在认证后立即被外部化。...当证明过程确定交易之间没有冲突时,这是允许的。在单主模式下,在主服务器上,并发,无冲突的本地事务以与组复制所同意的全局顺序不同的顺序进行提交和外部化的可能性很小。...最简单的就是配置多个数据源,实现读写分离 动态切换数据源 基于 Spring/Spring Boot,配置多个数据源(例如2个,master 和 slave) 根据具体的 Service 方法是否会操作数据...特点: 自动发现MySQL的复 制拓扑,并且在web.上展示; 重构复制关系, 可以在web进行拖图来进行复制关系变更; 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本; 支持命令行和web...界面 拖拽改变主从关系

    2K20

    数据库复习资料整理

    ; 列的顺序无关性,即交换任意两列的次序,得到的还是同一个关系; 行的顺序无关性,即交换任意两行的次序,得到的还是同一个关系; 分量的原子性,即每个分量都是不可分的数据项。...一个关系可能有多个候选码 主码(Primary Key):又称为主键,在候选码中选出一个即可作为主码在一个关系中,主码只能有一个 全码(ALL- Key):关系中所有属性的组合才是该关系的码,一个关系最多只有一个全码...实体完整性(Entity Integrity):1.若属性A是基本关系R的主属性,则属性A不能取空值;2.关系的所有的主属性都不能取空值,而不仅是主码整体不能取空值 参照完整性若属性(或属性组)F是基本关系...当模式被改变时,数据库管理员对各个外模式/模式映射做相应的改变,可以使外模式保持不变,保证了数据与程序的逻辑独立性。...码的唯一性,任意两个元组的码不能相同,从而任意两个码不能相同。 列的顺序无关性,即交换任意两列的次序,得到的还是同一个关系。 行的顺序无关性,即交换任意两行的次序,得到的还是同一个关系。

    27410

    数据库原理

    关系模型是我们现在用得最多的数据模型。 优点: 数据结构简单、清晰。无论实体还是实体集,都用相对应的二维表来表示! 有严格的数学理论根据。...候选码和主码: 候选码:如果一组属性集能唯一地标识一个关系中的元组而又不含有多余的属性,则称该属性集为该关系的候选码 。...,街道名}作为唯一标识实体的属性,那么{城市名,街道名} 就是主码 ---- 关系模式 关系名和其属性集合的组合称之为关系模式。...也就说:在改变内部结构的时候,只要不会触及外部的数据时,外部的数据并不需要做改变。两级映像概念的提出也就是程序中耦合的问题! ---- 为什么我们要学习数据库关系运算?...k 列,然后除去结果中的重复元组,构成一个以Aj1,Aj2,…,Ajk为属性顺序的k 目关系。

    90870

    数据库原理复习笔记(实用)

    当模式改变时,由数据库管理员对映像做相应改变,可使外模式保持不变,而应用程序是根据外模式编写的,所以也不用改,从而保证了数据和程序的逻辑独立性。 2....2.3 关系的完整性 2.3.1 实体的完整性 主码不能为空,若主码有多个,则都不能空 2.3.2 参照完整性 外码 参照关系 被参照关系 参照和被参照关系可以是同一个 外码不一定要与相应的主码同名...选择表中的若干列 1. 查询指定列 select 属性列,属性列,··· from 表名;//各列的顺序可以和原表不一样 2. 查询所有列 select * from 表名; 3....如果没有指明任何属性列, 则新插入的必须在每个属性列上都有值(如果为null要显式给出),且顺序要和表的属性列顺序一样 3.值如果为字符串常数,要用单引号括起来,数字不用 4....用 sQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: 定义每个模式的主码; 定义参照完整性; 定义职工年龄不得超过 60岁。

    1.2K20

    Java并发:volatile关键字详解

    不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程、主内存、工作内存三者的交互关系如图所示。 ?...上图的3种情况,在单线程下,只要重排序了两个操作的执行顺序就会改变执行结果,因此这3种情况的代码是不会被重排序的。...例子2: int a = 1; int b = 2; 上面这段代码的两个操作并没有数据依赖性,改变两个操作的执行顺序也不会改变执行结果,因此有可能被重排序。 5.怎么禁止重排序?...,变量j的值一定等于1,得出这个结论的依据有两个:一是根据先行发生原则,“k=1”的结果可以被观察到;二是线程C还没“登场”,线程A操作结束之后没有其他线程会修改变量k的值。...上面两个例子综合起来证明了一个结论:时间先后顺序与先行发生原则之间基本没有太大的关系,所以我们衡量并发安全问题的时候不要受到时间顺序的干扰,一切必须以先行发生原则为准。

    60630

    Laravel学习记录--Model

    嵌套的渴求式加载 渴求式加载指定字段 带条件约束渴求式加载 懒惰式渴求式加载 当以属性方式访问Eloquent关联关系的时候,关联关系数据是[懒惰式加载]因为都是用到的时候才执行查询,这就意味着要多次对数据库进行查询才能返回需要的结果...,如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章的作者通过动态属性获取都有一次查询,所以对N条记录来说,需要N+1次查询才能返回需要的结果...(articles),用户与文章是一对多的关系,国家与用户也是一对多的关系,那么怎么实现根据不同的国家显示对应的文章?...name:关联关系的名称 $type:根据关联名称拼接存放关联类的字段,也可自定义 $id:根据关联名称拼接存放关联类的id .也可自定义 $localKey:当前模型的主键id public function...,通过whereHas和orwhereHas,在has查询里设置[where]条件 如查询用户至少有一个号码,并且号码包含7这个数字 public function show(){ $

    13.6K20

    一文搞懂MySQL主从复制方案、读写分离及高可用

    如果他们收到了,那么相对于之前发送的其他事务,他们都将以相同的顺序收到它。因此,所有服务器都以相同的顺序接收相同的交易集,并且为交易建立了全局总订单。...当证明过程确定交易之间没有冲突时,这是允许的。在单主模式下,在主服务器上,并发,无冲突的本地事务以与组复制所同意的全局顺序不同的顺序进行提交和外部化的可能性很小。...最简单的就是配置多个数据源,实现读写分离 动态切换数据源 基于 Spring/Spring Boot,配置多个数据源(例如2个,master 和 slave) 根据具体的 Service 方法是否会操作数据...特点: 自动发现MySQL的复 制拓扑,并且在web.上展示; 重构复制关系, 可以在web进行拖图来进行复制关系变更; 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本; 支持命令行和web...界面 拖拽改变主从关系 [1eho91nq16.png] 参考 https://dev.mysql.com/doc/refman/5.7/en/group-replication-primary-secondary-replication.html

    1.3K50

    从MongoDB迁移到ES后,我们减少了80%的服务器

    现状背景 MongoDB本身定位与关系型数据库竞争,但工作中几乎没有见到哪个项目会将核心业务系统的数据放在上面,依然选择传统的关系型数据库。...,且必须保证查询顺序与索引字段的顺序一致才有效,这个即是优点,但在现在复杂业务场景也是致命的; 业务系统查询操作日志记录会有很多过滤条件,且查询条件是任意组合的,现有MongoDB是不支持的,或者说所有关系型数据库都不支持...操作日志记录查询主要是当月的居多,后续的历史性数据查询频率很低,根据评估,核心数据索引按月创建生成, 业务查询时候必须带上操作时间范围,后端根据时间反推需要查询哪些索引,Elastic-Api支持多索引匹配查询...操作日志系统的数据来源都是Kafka,消费数据是有顺序机制的,有2种场景特别注意,如下: 主数据先到操作日志系统,从数据后到,从数据写的时候先拼凑主数据记录和Binlog字段数据; 从数据先到操作日志系统...如果主数据与从数据在同时达到操作日志系统,基于update_by_query 命令肯定失效不 准确, 主从数据也可能是多对多的关联关系,dataId 和traceId不能唯一决定一条记录。

    1.1K30

    一个简单的人物刻画公式和有效的 AI 提示语

    从人物本身出发 比如一个女主,希望她是很勇敢很独立的女性。 人物关键词:勇敢、独立 比如一个男主,希望他是一个律师,很有魅力的男人。 人物关键词:律师、魅力 设定人物后需要想一想,自己能否驾驭?...配角的作用是:根据故事发展、情节的需求被动做事。 主角是人推着故事走,配角是故事推着人走,两个要区分开。 我们会根据主角的需要调整情节设计,但很少会根据配角的设定修改情节设计。...这些都是性格变化,在变化时,要特别注意性格转变的逻辑,要给人物一个充分的变化理由。 性格转变往往是矛盾的,是附有争议的。 性格的改变就是设定与印象的改变。对于可能导致人设大变的剧情,要谨慎设定。...让人印象深刻的人物都是有争议的,请给 X 设计一个情节,在该情节中 X 的设定发生改变甚至反转,注意变化逻辑要合理。 第五步,起名字。请根据 X 的设定和印象,给 X 起 3 个中文名字。...标志性的语言习惯:口头禅 X 经常在讲话时使用口头禅,比如在说完一句重要观点后会习惯性地说一句:“事实胜于雄辩”。

    39110
    领券