mysql:数据库设计

文章介绍了软件开发的流程,重点讨论了数据库设计的概念和步骤,包括需求分析、逻辑分析和物理设计。通过E-R图示例和不同类型的表关系(一对一、一对多、多对多)来阐述设计过程。此外,还提到了内连接与外连接的区别,并给出具体的数据库设计案例。
摘要由CSDN通过智能技术生成

目录

1.软件的研发步骤

2.数据库设计概念

3.数据库设计的步骤

4.E-R图例子:

5.表关系:

1.一对一

2.一对多(多对一)

3.多对多

4.内连接与外连接的区别

6.数据库设计案例


1.软件的研发步骤

需求分析-设计-编码-测试-安装部署

2.数据库设计概念

        1).数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。

        2).建立数据库中的表结构以及表与表之间的关联关系的过程。

        3).有哪些表?表里有哪些字段?表和表之间有什么关系?

3.数据库设计的步骤

        1).需求分析(数据是什么?数据具有哪些属性?数据与属性的特点是什么)

        2).逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)

        3).物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)

        4).维护设计(1.对新的需求进行建表;2表优化)

4.E-R图例子:

5.表关系:

1.一对一

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

        实现方式:在任意一方加入外键,关联另一方主键,并设置外键为唯一unique

-- 用户详情表
create table tb_user_desc(
    id int PRIMARY KEY auto_increment,
    city varchar(5),
    edu varchar(3),
    income int,
    status varchar(5),
    department varchar(10) -- 部门名
);
-- 用户表
create table tb_user(
    id int PRIMARY KEY auto_increment,
    photo blob,
    nickname varchar(10),
    age int,
    gender varchar(5),
    desc_id int,
        constraint fk_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id)
);
insert into tb_user_desc(id,city,edu,income,status,department) values
(1,'广州','硕士',3000,'单身','前端'),
(2,'湖北','本科',30000,'离异','后端'),
(3,'河南','本科',40000,'单身','大数据');
​
insert into tb_user(id,photo,nickname,age,gender,desc_id)  values
(1,'a.jpg','一场梦',23,'女',1),
(2,'b.jpg','风清扬',35,'男',2),
(3,'c.jpg','赵云',41,'男',3);

 

2.一对多(多对一)

在多的一方建立外键关联一的一方

3.多对多

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

-- 订单表
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);

4.内连接与外连接的区别

6.数据库设计案例

drop table music_user;
drop table music;
drop table song;
drop table user;
drop table review;
-- 专辑
create table music(
    title varchar(32),-- 专辑名
    alias varchar(32),-- 专辑别名
    image varchar(64),-- 封面图片
    style varchar(8),-- 流派(如经典、流行、民谣、电子)
    type varchar(4),-- 类型(专辑、单曲)
    medium varchar(4),-- 介质(CD、黑胶、数字)
    publish_time date,-- 发行时间
    publisher varchar(16),-- 出版者
    number tinyint,-- 唱片数
    barcode bigint,-- 条形码
    summary varchar(1024),-- 简介 
    artist varchar(16),-- 艺术家
    id int PRIMARY KEY,-- 编号(唯一)
    song_id int
);
-- 曲目
create table song(
    name varchar(32),-- 歌曲名
    serial_number tinyint,-- 歌曲序号
    id int PRIMARY KEY-- 编号(唯一)
);
-- 短评
create table review(
    content varchar(256),-- 评论内容
    rating tinyint, -- 评分(1-5)
    review_time datetime, -- 评论时间
    music_id int,
    user_id int
);
-- 用户
create table user(
    username varchar(16), -- 用户名(唯一)
    image varchar(64), -- 用户头像图片地址
    signature varchar(64),-- 个性签名
    nickname varchar(16),-- 用户昵称
    id int PRIMARY KEY-- 用户编号(主键)
);
-- 专辑,曲目  多对一
alter table music add constraint fk_music_song FOREIGN KEY(song_id) REFERENCES song(id);
-- 专辑,用户  多对多
create table music_user(
    music_id int,
    user_id int 
);
alter table music_user add constraint fk_music_id FOREIGN KEY(music_id) REFERENCES music(id);
alter table music_user add constraint fk_user_id FOREIGN KEY(user_id) 
REFERENCES user(id);
-- 专辑,短评  一对多
alter table review add constraint fk_review_music FOREIGN KEY(music_id)
REFERENCES music(id);
-- 用户,短评  一对多
alter table review add constraint fk_review_user FOREIGN KEY(user_id)
REFERENCES user(id);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自律的光电人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值