【JavaWeb入门】:数据库设计

简介: 数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系?

数据库设计简介

软件的常见研发步骤

产品经理      架构师    开发工程师  测试工程师   运维工程师
   ^           ^           ^         ^           ^ 
   |           |           |         |           |
需求分析 ----> 设计 ----> 编码 ----> 测试 ----> 安装部署

可以注意到,在设计模块中包括:

  • 软件结构设计
  • 数据库设计
  • 接口设计
  • 过程设计

数据库设计概念

  • 数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储。
  • 建立数据库中的表结构以及表与表之间的关联关系的过程。
  • 有哪些表?表里有哪些字段?表和表之间有什么关系?

数据库设计的步骤

一、需求分析

  • 数据是什么?
  • 数据具有哪些属性?
  • 数据与属性的特点是什么?

二、逻辑分析

  • 通过 ER 图对数据库进行逻辑建模
  • 不需要考虑我们所选用的数据库管理系统

三、物理设计

  • 根据数据库自身的特点,把逻辑设计转换为物理设计

四、维护设计

  • 对新的需求进行建表;
  • 表优化

表关系

一对多(多对一)

  • 比如 部门表 和 员工表
  • 一个部门对应多个员工,多个员工同属于一个部门
  • 一对多的关系(或者多对一)在实际应用中也很常见。
  • 实现方式:在多的一方(从表)建立外键,指向一的一方(主表)的主键

多对多

  • 比如:商品表 和 订单表
  • 一个商品对应多个订单,一个订单包含多个商品
  • 实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。

image-20230120115937357.png

下面是代码展示:

-- 订单表
CREATE TABLE tb_order(
    id int primary key auto_increment,
    payment double(10, 2),
    payment_type TINYINT,
    status TINYINT
);


-- 商品表
CREATE TABLE tb_goods(
    id int primary key auto_increment,
    title varchar(100),
    price double(10, 2)
);


-- 订单商品中间表
CREATE TABLE tb_order_goods(
    id int primary key auto_increment,
    order_id int,
    goods_id int,
    count int
);


-- 添加外键:为 订单表 和 商品表 添加 多对多 的关系,演示如下:
-- 1. 为订单商品中间表添加外键 order_id
--    此时外键 order_id 可指向订单表(tb_order)中的 id

ALTER TABLE
    tb_order_goods
ADD CONSTRAINT
    fk_order_id
FOREIGN KEY(order_id)
REFERENCES
    tb_order(id);
    
    
-- 2. 为订单商品中间表添加外键 goods_id
--    此时外键 goods_id 可指向商品表(tb_goods)中的 id

ALTER TABLE
    tb_order_goods
ADD CONSTRAINT
    fk_goods_id
FOREIGN KEY(goods_id)
REFERENCES
    tb_goods(id);

一对一

  • 一对一关系 多用于表拆分
  • 将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能。
  • 比如:用户表 和 用户详情表
  • 实现方式:为任意一方添加外键,关联另一方主键,并且设置外键为唯一(UNIQUE
目录
相关文章
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
47 4
SpringBoot入门(4) - 添加内存数据库H2
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
358 0
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
34 2
SpringBoot入门(4) - 添加内存数据库H2
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
66 13
|
29天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
42 4
|
2月前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
139 6
|
5月前
|
SQL NoSQL Oracle
IT入门知识第四部分《数据库》(4/10)(二)
IT入门知识第四部分《数据库》(4/10)(二)
42 0
|
5月前
|
存储 SQL 关系型数据库
IT入门知识第四部分《数据库》(4/10)(一)
IT入门知识第四部分《数据库》(4/10)(一)
51 0
|
2月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
129 2
|
2月前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)