JavaWeb开发之——数据库设计(20)
admin
2024-02-11 05:46:55
0

一 概述

  • 数据库设计-简介
  • 数据库设计-多表关系实现
  • 数据库设计-案例

二 数据库设计-简介

2.1 软件的研发步骤

2.2 数据库设计概念

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

2.3 数据库设计的步骤

  • 需求分析(数据是什么? 数据具有哪些属性? 数据与属性的特点是什么)
  • 逻辑分析(通过ER(Entity/Relation)图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
  • 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
  • 维护设计(1.对新的需求进行建表;2.表优化)

2.4 表关系

一对一

  • 如:用户 和 用户详情
  • 一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升 查询性能

一对多

  • 如:部门 和 员工
  • 一个部门对应多个员工,一个员工对应一个部门。

多对多

  • 如:商品 和 订单
  • 一个商品对应多个订单,一个订单包含多个商品

三 数据库设计-多表关系实现

3.1 一对多表关系

实现方式

在多的一方建立外键,指向一的一方的主键

案例分析

员工表部门表举例

经过分析发现,员工表属于多的一方,而部门表属于少的一方,此时我们会在员工表中添加一列(dep_id),指向于部门表的主键(id)

建表语句

-- 删除表
DROP TABLE IF EXISTS tb_emp;
DROP TABLE IF EXISTS tb_dept;
-- 部门表
CREATE TABLE tb_dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE tb_emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
-- 添加外键 dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES tb_dept(id)
);

查看表结构模型图

3.2 多对多表关系

实现方式

建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

案例分析

订单表商品表 举例

经过分析发现,订单表和商品表都属于多的一方,此时需要创建一个中间表,在中间表中添加订单表的外键和商品表的 外键指向两张表的主键:

建表语句

-- 删除表
DROP TABLE IF EXISTS tb_order_goods;
DROP TABLE IF EXISTS tb_order;
DROP TABLE IF EXISTS tb_goods;
-- 订单表
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
);
-- 建完表后,添加外键
alter table tb_order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES
tb_order(id);
alter table tb_order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES
tb_goods(id);

查看表结构模型图:

3.3 1对1表关系

实现方式

在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)

案例分析

用户表 举例

而在真正使用过程中发现 id、photo、nickname、age、gender 字段比较常用,此时就可以将这张表查分成两张表。

建表语句

create table tb_user_desc (
id int primary key auto_increment,
city varchar(20),
edu varchar(10),
income int,
status char(2),
des varchar(100)
);
create table tb_user (
id int primary key auto_increment,
photo varchar(100),
nickname varchar(50),
age int,
gender char(1),
desc_id int unique,
-- 添加外键
CONSTRAINT fk_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id)
);

四 数据库设计-案例

4.1 描述对象

4.2 案例分析


经过分析,我们分为 专辑表 曲目表 短评表 用户表 4张表

  • 一个专辑可以有多个曲目,一个曲目只能属于某一张专辑,所以专辑表和曲目表的关系是一对多
  • 一个专辑可以被多个用户进行评论,一个用户可以对多个专辑进行评论,所以专辑表和用户表的关系是 多对多
  • 一个用户可以发多个短评,一个短评只能是某一个人发的,所以用户表和短评表的关系是 一对多

相关内容

热门资讯

安卓系统垃圾手动清理,手动优化... 手机里的安卓系统是不是越来越慢了?是不是觉得垃圾文件越来越多,清理起来麻烦又费时?别急,今天就来给你...
安卓怎么转成苹果系统,跨平台迁... 你是不是也和我一样,手里拿着一台安卓手机,突然之间对苹果的生态系统产生了浓厚的兴趣?想要体验一下那个...
安卓手机升级系统蓝屏,安卓手机... 你有没有遇到过这种情况?手机升级系统后,屏幕突然变成了蓝屏,心里那个慌啊!别急,今天就来和你聊聊安卓...
安卓系统变ios系统教程视频,... 你是不是也和我一样,对手机系统转换充满了好奇?想要从安卓系统切换到iOS系统,但又觉得操作复杂,不知...
哪种汽车是安卓系统,探索安卓系... 你有没有想过,在我们这个智能化的时代,汽车竟然也能装上安卓系统呢?没错,你没听错,就是那个我们日常使...
完美返利系统下载安卓,轻松赚取... 你有没有听说过那个超级给力的“完美返利系统”呀?最近在朋友圈里可是火得一塌糊涂呢!今天,我就要来给你...
安卓系统传文件app,轻松实现... 你是不是也和我一样,手机里存了超多好用的安卓系统传文件app?今天就来聊聊这些小宝贝,看看它们是如何...
车载导航安卓系统大全,全面解析... 你有没有想过,开车出门的时候,如果没有了导航,那可真是寸步难行啊!现在,车载导航安卓系统可是越来越流...
部落冲突关联安卓系统,安卓系统... 亲爱的玩家们,你是否曾在《部落冲突》的世界里,挥舞着你的战旗,与成千上万的玩家并肩作战?今天,就让我...
安卓手机系统好评推荐,这些热门... 你有没有发现,现在手机市场上安卓手机真的是越来越受欢迎了呢?这不,最近我可是深入研究了各种安卓手机系...
诺基亚925刷安卓系统,深度解... 你手中的诺基亚925是不是已经有点儿老气横秋了?别急,今天就来给你来点新鲜的!咱们聊聊如何给这款经典...
安卓系统应用这么关闭,安卓应用... 手机里的安卓系统应用这么多,有时候用完一个就想赶紧关闭,免得占用太多内存。但是,你知道怎么高效地关闭...
手机wp系统怎么刷安卓系统,轻... 你有没有想过,你的手机WP系统突然变得有点儿老气横秋,想要给它来个焕然一新的变身呢?没错,就是刷上安...
安卓原生系统进程锁,守护系统稳... 你知道吗?在安卓手机的世界里,有一个神秘的守护者,它就是安卓原生系统进程锁。今天,就让我带你一探究竟...
删除安卓系统的缓存,释放手机空... 手机用久了是不是感觉越来越卡?别急,今天就来教你怎么给安卓手机来个大扫除,把那些该死的缓存通通清理掉...
安卓系统的所有游戏,尽享千款精... 你有没有发现,手机里的游戏越来越丰富了呢?尤其是安卓系统,简直就是游戏爱好者的天堂!今天,就让我带你...
安卓系统流畅度测评,深度解析各... 你有没有发现,手机用久了,有时候就像老牛拉车一样,慢吞吞的,让人心里直发慌?这不,最近我闲来无事,就...
安卓4.4系统升6.0,系统变... 你有没有发现,你的安卓手机最近有点儿“老态龙钟”了呢?别急,别急,让我来给你支个招儿,让你的安卓4....
安卓点餐系统文档,功能解析与操... 你有没有想过,点餐这件小事,竟然也能变得如此高大上?没错,就是那个我们每天都要打交道,却又常常忽略的...
途昂装安卓系统,智能驾驶体验再... 哇,你有没有想过,你的途昂汽车也能装上安卓系统?是的,你没听错,就是那个我们日常使用的安卓系统!想象...