Java学习----数据库8

今日学习内容总结如下:

表和表之间的关系

数据库设计方法:试凑法、规范化法和 CAD
数据库设计工具: powerdesigner
在实际开发中,一个项目经常会涉及很多方面的数据。例如产品和类目
商品编号
商品名称
价格
类别名称
等级
1
哇哈哈
2.5
饮料
3
1
茅台
3000
饮料
3
1
Java 从入门到放弃
50.5
书籍
2

数据冗余和外键

数据冗余:类别信息重复
数据冗余导致的问题:空间浪费、增加异常、删除异常和修改异常
解决方案:引入外键约束
产品表
商品编号
商品名称
商品价格
所属类别编号
1 哇哈哈 2.5 1
2 茅台 3000 1
3 Java从入门到放弃 50.5 2
类目表
类别编号
类别名称
等级
1
饮料
3
2
书籍
2
通过引入新的表,同时使用外键约束保证取值的合理性,从而减少数据冗余
create table tb_catalog(
id bigint primary key auto_increment , -- 实体完整性
title varchar ( 32 ) not null
) comment ' 类别表 ' ;
create table tb_product(
id bigint primary key auto_increment comment ' 商品标号 ' ,
name varchar ( 32 ) not null ,
price numeric ( 8 , 2 ) default 0 ,
-- 引入额外的列用于表示商品所属于的类别
catalog_id bigint , -- 外键列,允许为 null
-- 外键表示该列的允许取的值必须在 tb_catalog id 列中出现
foreign key (catalog_id) references tb_catalog(id)
) comment ' 商品表 ' ;

 

  • 类目表中的id为主键,产品表中的列参照于类目表中的主键,所以一般类目表会被称为主表,产品表称为从表,产品表中的catalog_id称为外键
  • 通过主表的主键和从表中的外键来描述的主外键关系,呈现的是一种一对多的关系
    • 一个类目有多个商品
    • 一个商品只能属于一个类目
  • MySQLinnodb支持外键和事务,MyISAM不支持外键和事务
  • 在具体开发中,为了提高性能,会故意删除外键约束,通过代码来控制数据的合理性

外键的特点

  • 从表中的外键的值是对应主表中主键值的引用
  • 从表中的外键数据类型必须和主表中的主键数据类型一致

基础语法

引入外键的目的在于保证数据的参照完整性
创建外键语法 1
create table tb_product(
id bigint primary key auto_increment comment ' 商品标号 ' ,
-- 引入额外的列用于表示商品所属于的类别
catalog_id bigint , -- 外键列,允许为 null
-- 外键表示该列的允许取的值必须在 tb_catalog id 列中出现
foreign key (catalog_id) references tb_catalog(id)
) comment ' 商品表 ' ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值