面试疑难点解析——Java数据库开发(三)

简介: 本文从两个面试真题着手分析,为大家解答数据库设计的相关问题。

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!14位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!点击下图或链接马上投递简历
图片无法显
点击图片或戳我查看详情和投简历


1.一张基础表dept,100张单据表用到了dept中的deptno,对于100张单据表都去设置外键参照dept表,对于中小型系统来讲,在数据库中表结构设置这种关联关系,对开发有益;

如果数据量不大,所有正确的设计思路都是可以正常发挥的。所有可以使用的查询,所有可以不进行费劲的操作(操作想怎么简化就怎么简化)。例如:最坑的设计:“编程语言+存储过程”。

2.对大型系统ERP系统(比如用友、金蝶),每张表引入这种关联关系,实在是太恐怖了,如果在更新的时候,在前台和业务层校验它deptno代号的合法性之后,存入表中,这样是不是会更好?

image.png
(1)系统1示例图

image.png
(2)系统2示例图

如上图所示,这两种方法在数据量小的情况下都是可以解决问题的。可能有人会问,这两种方法的区别是什么?

最大的区别在于系统的可控性上。
假如以一个商城为例:

初期发现,每天只有三个订单量,这个时候的数据吞吐量不大,怎么设计都可以(使用以上两种方法都可以,此时没有区别);

后来随着推广力度加强,突然有一天订单量爆满,假设有1000W单,此时如果使用“系统2”过程操作实现,那么系统一定会蹦,整个设计无法继续进行下去。

也就是说单数据库的开发只能够提供一种基础的锻炼,相当于开发经历的第一层。随后需要考虑到数据表的性能,以及系统的拆分问题。

如果要进行数据表的拆分,那么这些关联关系无效,事务处理也将面临很大挑战,而这种拆库拆表的操作就称为库表分离。

库表分离有两种拆分模式:水平拆分、垂直拆分(垂直水平拆分)。

水平拆分示例:假如订单表的数据量很大,将这些订单表拆分为十个数据库的表,每个数据库的表只保存10%的数据;

垂直拆分示例:将数据表由一张表拆分为多张表,比如说商品表,有商品名称、单价等基础信息和其他相关属性信息,这些可以放在两个数据库里,用户从A数据库读基础信息,从B数据库读完整属性;

垂直水平拆分示例:用商城系统来说,将其拆分成“用户数据库”、“订单数据库”和“库存数据库”,从“订单数据库”里又水平拆分10个数据库。

这个时候看起来这些问题都可以得到解决,但同时也需要知道另外一个问题:如果将系统分库(将系统拆分为若干个子系统的过程),那么拆分后的子系统之间的沟通以及控制问题也就出现了。

有人会问,拆分到很多数据库,查找的时候不方便怎么办呢?其实可以再引入一个给数据查的数据库,如果做到这里就表明要接触到一些系统架构问题了,这些过程一定是干了几年之后才能得到的结论。

如何做一个厉害的架构?拿下月薪两三万的职位需要哪些技术水平?
更多分享,请大家继续关注后续的面试疑难点解析~

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
11月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
2208 0
|
11月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
640 100
|
10月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
10月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
11月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
11月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
11月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
1591 1
|
10月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
11月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
398 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
943 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

推荐镜像

更多
  • DNS