MySql 多表设计

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为:一对多,多对多,一对一。

一对多

CREATE TABLE tb_dept (

	id int UNSIGNED primary key auto_increment COMMENT 'id',
	name VARCHAR(10) not null UNIQUE comment '部门名称',
	create_time datetime not null COMMENT '创建时间',
	update_time datetime not null COMMENT '修改时间'
	) COMMENT '部门表';
	
CREATE TABLE `tb_emp` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `username` varchar(20) NOT NULL COMMENT '用户名',
  `password` varchar(23) DEFAULT NULL COMMENT '密码',
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `gender` tinyint DEFAULT NULL COMMENT '性别:1男,2女',
  `image` varchar(300) DEFAULT NULL COMMENT '图像url',
  `job` tinyint DEFAULT NULL COMMENT '职位:1班主任,2讲师,3学工主管,4教研主管',
  `entrydate` datetime DEFAULT NULL COMMENT '入职日期',
	`dept_id` int COMMENT '归属部门id',
  `creat_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) COMMENT='员工表' ;

多表问题:上述两张表在数据库层面并未建立关联,所以是无法保证数据的一致性和完整性的。

外键约束

-- 创建表时指定
create table 表名 (
	字段名 数据类型,
    ...
    [constraint] [外键名称] foreign key (外键字段名) references 主表(字段名)
);

-- 建完表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(字段名);

使用foreign key定义外键关联另外一张表的缺点有:

  • 影响增删改查的效率(需要检查外键关系)。
  • 仅用于单节点数据库,不适用于分布式、集群场景。
  • 容易引发数据库的死锁问题,消耗性能。

逻辑外键:在业务层逻辑中,解决外键关联。通过逻辑外键,可以很方便的解决上述问题。

一对一

一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中以提高效率。典型案例:用户与身份证信息的关系。

多对多

一个学生可以选修多门课程,一个课程也可以供多个学校选择。

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

MySQL库表设计工具是一种可视化工具,用于辅助数据库开发人员在MySQL数据库设计库和表的结构。它提供了一个直观的界面和功能,使得开发人员可以更加快速和高效地创建和管理数据库对象。 MySQL库表设计工具通常具有以下主要功能: 1. 创建数据库对象:开发人员可以使用工具来创建数据库、库和表。工具会提供一个可视化界面,使得用户可以轻松地输入表名、列名和数据类型等信息,并自动生成SQL语句来创建相应的对象。 2. 管理表结构:工具提供了一个直观的界面,使得开发人员可以方便地查看和编辑表结构。用户可以添加、删除和修改表的列,设置列的数据类型、长度和约束等。 3. 同步数据库对象:如果多个开发人员同时工作在同一个项目中,工具可以帮助他们进行数据库对象的同步。一旦一个开发人员修改了表结构,其他开发人员可以使用工具自动同步这些修改。 4. 数据库对象复制和导入:工具能够将已存在的数据库对象复制到其他数据库中,也可以导入其他数据库中的对象。这对于在不同的环境中测试和部署数据库非常有用。 5. 查询和分析工具:除了库表设计MySQL库表设计工具还提供了查询和分析功能,使得开发人员可以执行SQL查询和分析数据库性能。 总之,MySQL库表设计工具可以帮助开发人员更加方便和高效地创建和管理MySQL数据库的库和表。它简化了数据库设计和开发的过程,提高了工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

golemon.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值