JavaWeb:数据库设计、案例

    • 数据库设计简介

1.1软件的研发步骤

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

1.2数据库设计概念

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

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

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

1.3数据库设计的步骤

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

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

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

维护设计(1.对新的需求进行建表;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);
    • 表关系之一对一

如: 用户 和 用户详情

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

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

    • 数据库设计案例

分析

音乐专辑表名: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           | 编号(唯一)                       |

曲目表名: Song

| 字段名        | 数据类型    | 说明                |
| ------------- | ----------- | ------------------|
| name          | varchar(32) | 歌曲名            |
| serial_number | tinyint     | 歌曲序号           |
| id            | int         | 编号(唯一)       |



评论表名:Review

| 字段名      | 数据类型     | 说明                 |
| ----------- | ------------ | ------------------- |
| content     | varchar(256) | 评论内容             |
| rating      | tinyint      | 评分(1~5)          |
| review_time | datetime     | 评论时间             |

用户表名:User

| 字段名    | 数据类型    | 说明                                    |
| --------- | ----------- | --------------------------------------- |
| username  | varchar(16) | 用户名(唯一)                          |
| image     | varchar(64) | 用户头像图片地址                        |
| signature | varchar(64) | 个人签名,例如(万般各所是 一切皆圆满) |
| nickname  | varchar(16) | 用户昵称                                |
| id        | int         | 用户编号(主键)                           |
-- 删除表
DROP TABLE IF EXISTS Music;
DROP TABLE IF EXISTS Song;
DROP TABLE IF EXISTS Review;
DROP TABLE IF EXISTS User;
DROP TABLE IF EXISTS tb_music_user;

-- 音乐专辑表
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),-- 艺术家 
    music_id int UNIQUE primary key auto_increment-- 编号(唯一) 
);

-- 曲目表
CREATE TABLE Song(
    name varchar(32),-- 歌曲名  
    serial_number tinyint ,-- 歌曲序号
    song_id int UNIQUE primary key auto_increment,-- 编号(唯一)

    -- 添加外键 song_id,关联 Music 表的music_id主键
    CONSTRAINT fk_song_music FOREIGN KEY(song_id) REFERENCES Music(music_id)
);

-- 评论表
CREATE TABLE Review(
    content varchar(256),-- 评论内容 
    rating   tinyint ,-- 评分(1~5)
    review_time datetime,-- 评论时间 
    review_id int UNIQUE primary key auto_increment,-- 编号(唯一)

    -- 添加外键 review_id,关联 Music 表的music_id主键
    CONSTRAINT fk_review_music FOREIGN KEY(review_id) REFERENCES Music(music_id),

    -- 添加外键 review_id,关联 User 表的user_id主键
    CONSTRAINT fk_review_user FOREIGN KEY(review_id) REFERENCES User(user_id)
);

-- 用户表
CREATE TABLE User(
    username varchar(16) UNIQUE,-- 用户名(唯一) 
    image varchar(64) ,-- 用户头像图片地址  
    signature  varchar(64),-- 个人签名,例如(万般各所是 一切皆圆满)
    nickname varchar(16),-- 用户昵称 
    user_id int primary key auto_increment-- 用户编号(主键) 
);

-- 专辑用户中间表
CREATE TABLE tb_music_user(
    id int primary key auto_increment,
    tb_music_id int,
    tb_user_id int
);

-- 建完表后,添加外键
alter table tb_music_user add CONSTRAINT fk_music_id FOREIGN key(tb_music_id) REFERENCES Music(music_id);
alter table tb_music_user add CONSTRAINT fk_user_id FOREIGN key(tb_user_id) REFERENCES User(user_id);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程实习参考,java开发,单机应用(web版可以搜基于javaweb的房源管理系统-中国地质大学),附完备文档,文档写得很认真,好好看看你应该可以迅速理解我的实现过程,祝好运! 四、课程设计题目及要求 设计与实现类似“贝壳”、“链家”等房源管理系统。管理武汉市的房源信息并提供多样化的查询服务。 背景介绍: 武汉市包含江岸区、江汉区、硚口区、汉阳区、武昌区、青山区、洪山区、蔡甸区、江夏区、黄陂区、新洲区、东西湖区、汉南区13个行政区。每个行政区包含诸多小区(基本信息:经度、纬度、区、名称、销售状态、小区类型、价格、容积率、绿化率);小区内通常有多个楼栋(基本信息:楼层、层高、……);每个楼栋有多个房源(基本信息:户型、面积、……)。社区周边有:消防站点、医院点、公安局、公园、学校、道路等。 功能描述: 1、对用户信息维护管理。区分管理员、游客的权限。游客只有查询权限。 2、房源基本信息的维护管理: a)增删改小区信息 b)增删改楼栋信息 c)增删改房源信息 3、房源的评论管理 用户可以对房源进行评论。 4、房源查询 a)单条件查询:按行政区、小区、售价、房型、面积等的房源查询 b)组合条件查询:按行政区、小区、售价、房型、面积等的组合 c)聚合查询:按行政区查询平均价格、房源套数 d)提供排序 e)空间条件查询:按学校查询房源:例如:光谷一小对口的房源。按道路查询房源:例如:关山大道附近的房源。 5、房源周边配套查询 按小区查询周边的医院、公园、学校、公交站、商场等配套设施。 6、数据入库 a)房源信息的批量入库 b)医院、公园、学校、公交站、商场、道路等的批量入库 c)行政区数据入库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值