数据库设计

简介: 数据库设计

前言

数据库设计就是建立数据库中的表结构以及表与表之间的关联关系的过程。

简而言之,就是有哪些表、表里有哪些字段以及表和表之间有什么关系。其中,表关系有:一对一、一对多和多对多。


1.一对一

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

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

示例:

create table user_desc (
id int primary key auto_increment,
city varchar(20),
edu varchar(10),
income int,
status char(2),
des varchar(100)
);
create table 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 user_desc(id)
);


2.一对多

一对多 如:部门 和 员工

一个部门对应多个员工,一个员工对应一个部门。

实现方式:在多的一方建立外键,指向一的一方的主键

示例:

-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
-- 部门表
CREATE TABLE dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE 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 dept(id)
);


3.多对多

多对多 如:商品 和 订单

一个商品对应多个订单,一个订单包含多个商品

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

示例:

-- 删除表
DROP TABLE IF EXISTS order_goods;
DROP TABLE IF EXISTS order;
DROP TABLE IF EXISTS goods;
-- 订单表
CREATE TABLE order(
id int primary key auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE goods(
id int primary key auto_increment,
title varchar(100),
price double(10,2)
);
-- 订单商品中间表
CREATE TABLE order_goods(
id int primary key auto_increment,
order_id int,
goods_id int,
count int
);
-- 建完表后,添加外键
alter table order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES
order(id);
alter table order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES
goods(id);


相关文章
|
1月前
|
存储 人机交互 数据库
如何数据库设计?
本文介绍了数据库设计的四种方法和基本步骤。直观设计法依赖设计者经验,规范设计法(如新奥尔良法)遵循软件工程原理,分为需求分析、概念设计、逻辑设计和物理设计四个阶段。计算机辅助设计法借助软件工具,自动化设计法则通过人机会话自动生成数据库。设计步骤包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护。需求分析是关键,概念结构设计是基础,逻辑和物理设计涉及数据模型转换和存储优化,而运行维护是持续改进的过程。
30 0
如何数据库设计?
|
1月前
|
存储 数据处理 数据库
为什么要进行数据库设计?
本文探讨了数据库设计的核心概念,包括满足用户的信息和处理需求,以及所需的知识背景,如计算机科学、数据库原理、软件工程和应用领域知识。设计内容分为结构设计(概念、逻辑和物理设计)和行为设计(应用程序设计)。强调了结构设计与行为设计的紧密关联,并指出数据库设计是跨学科的综合性技术,重视管理和基础数据的重要性。
26 0
为什么要进行数据库设计?
|
2月前
|
关系型数据库 MySQL 数据库
数据库设计
数据库设计
33 1
|
2月前
|
存储 缓存 关系型数据库
数据库设计优化
数据库设计优化
57 3
|
9月前
|
存储 数据库
数据库设计三大范式
数据库设计三大范式
|
12月前
|
存储 关系型数据库 数据库
数据库设计之三大范式
数据库设计之三大范式
|
存储 SQL 数据采集
一文带你了解数据库设计基础
什么是数据库设计? 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
2232 0
一文带你了解数据库设计基础
|
关系型数据库 数据库
浅谈数据库设计之三大范式
范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。
133 0
|
存储 Java 数据库
数据库设计 | 学习笔记
快速学习数据库设计
113 0
数据库设计 | 学习笔记
|
存储 关系型数据库 数据库
7_数据库设计
7_数据库设计
159 0
7_数据库设计