数据库表关系(一堆垛,多对多)

1.记住,永远记住:表与表之间关联的唯一手段就是外键

表与表之间相关联只能通过外键。

2.所以数据库表与表之间的,一对多,多对多关系。说白了就是怎样建立外键的关系,在哪个表建立外键。

通过外键维持各种表之间的关系。

3.

6 表与表之间的关系

l 一对一:例如t_person表和t_card表,即人和身份证。这种情况需要找出主从关系,即谁是主表,谁是从表。人可以没有身份证,但身份证必须要有人才行,所以人是主表,而身份证是从表。设计从表可以有两种方案:

  • 在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束;
  • 给t_card表的主键添加外键约束(相对t_user表),即t_card表的主键也是外键。

l 一对多(多对一):最为常见的就是一对多!一对多和多对一,这是从哪个角度去看得出来的。t_user和t_section的关系,从t_user来看就是一对多,而从t_section的角度来看就是多对一!这种情况都是在多方创建外键!

l 多对多:例如t_stu和t_teacher表,即一个学生可以有多个老师,而一个老师也可以有多个学生。这种情况通常需要创建中间表来处理多对多关系。例如再创建一张表t_stu_tea表,给出两个外键,一个相对t_stu表的外键,另一个相对t_teacher表的外键。

7.编码

服务器发送给客户端的数据编码为character_set_result,它如果是UTF8,那么控制台使用GBK解码也一定会出现乱码。因为无法修改控制台编码,所以只能把character_set_result修改为GBK。

l 修改character_set_client变量:set character_set_client=gbk;

l 修改character_set_results变量:set character_set_results=gbk;

设置编码只对当前连接有效,这说明每次登录MySQL提示符后都要去修改这两个编码,但可以通过修改配置文件来处理这一问题:配置文件路径:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini

3 MySQL工具

使用MySQL工具是不会出现乱码的,因为它们会每次连接时都修改character_set_client、character_set_results、character_set_connection的编码。这样对my.ini上的配置覆盖了,也就不会出现乱码了。

MySQL数据库备份与还原

备份和恢复数据

1 生成SQL脚本

在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。


  mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径

现在可以在C盘下找到mydb1.sql文件了!

注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!

2 执行SQL脚本

执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!

执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!


SOURCE C:\mydb1.sql

  注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

还可以通过下面的方式来执行脚本文件:

mysql -uroot -p123 mydb1<c:\mydb1.sql


mysql –u用户名 –p密码 数据库<要执行脚本文件路径

这种方式无需登录mysql!

时间: 2024-08-25 06:40:58

数据库表关系(一堆垛,多对多)的相关文章

数据库表关系:多对多的三中方式

1.第一种django orm在创建表的时候自动帮我们创建表关系 from django.db import models # Create your models here. #创建book表 class Book(models.Model): name=models.CharField(max_length=32) # 第一种方式,系统帮我们自动创建了表book与表author关系 authors=models.ManyToManyField(to='Author') #创建作者表 clas

数据库表关系及配置

1.数据库表中的关系 一对一 一对多(多对一) 多对多 2.如何确立和实现数据库中的表关系 一对多的表关系实现: 使用外键约束 我们习惯把一的方称为主表,把多的方称为从表 外键:从表中有一列,除了null之外,只能来源于主表的主键 默认情况下,外键的字段是可以重复的 多对多的表关系在数据库中实现: 使用中间表 中间表有两个外键,引用两个多对多表的主键 不能有其它字段信息,至于中间表的主键,应该采用联合主键 任何一个多方表和中间表去比较都是一对多的关系 一对一的表关系再数据库中实现: 有两种: 1

数据库 表关系设计参考

表关系设计 出版社表关系 # 出版社表 class Publisher(models.Model): name = models.CharField(max_length=32) addr = models.CharField(max_length=128) phone = models.IntegerField() def __str__(self): return self.name # 作者表 class Author(models.Model): name = models.CharFi

5.6 数据库表关系

多对一或者一对多 格式: constraint 起个名字 foreign key(关联字段) references 被关联表(被关联字段) on delete cascade # 是否联动删除 on update cascade # 是否联动更新 示例: 一个出版社可以出多本书    一对多 一本书可以被多个出版社出版 一对多 代码: 被关联表 create table press( id int primary key auto_increment, name char(20) ); 关联表

Sonar 数据库表关系整理一(续)

简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习和理解. 如题,目前网络上搜不到相关内容,只能自己慢慢整理,作为资料,以备查询. ========================================================================================= 查询某个月被扫描到的最多的规则: SELECT i.rule_id,r.name AS rulename,COUNT(*)

数据库表中多对多关系怎么设计?

(多对多关系)(视频下载) (全部书籍) 马克-to-win:Teacher表:两列id,name.Studnet表: 三列:id,name,ageTeacherStudent表(关系表):三列:id,tid,sid create table TeacherStudent(id int not null,tid int not null,sid int not null); 2) teacher and student:(一个老师可能有多个学生,一个学生可能有多个老师) qixy有两个学生:li

Hibernate多表关系配置——多对多对关系映射

多对多关系:第一个表中的一个行可以与第二个表中的一个或多个行相关.第二个表中的一个行也可以与第一个表中的一个或多个行相关. 一般的设计中,多对多关联映射,需要一个中间表 Hibernate使用many-to-many标签来表示多对多 多对多的关联映射,在实体类中,跟一对多一样,也是用集合来表示的 1.实体 1.1 课程实体 package demo.entity; import java.util.HashSet; import java.util.Set; /** * 课程实体 * @auth

Hibernate多表关系配置——多对一关系映射

班级和学生两个实体类,关系如下: 多对一(many-to-one):多个学生属于一个班级 一对多(one-to-many):一个班级有多个学生 1.班级实体 package demo.entity; import java.util.HashSet; import java.util.Set; /** * 班级 * @author Don * @date:日期:2017年4月10日 时间:下午4:51:56* * @version 1.0 */ public class Cla { privat

数据库表设计(一对多,多对多)

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表.然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路:     数据库实体间有三种对应关系:一对一,一对多,多对多. 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号. 一对多关系示例: 一个学生只属于一个班,但是一个班级有多名学生. 多对多关系示例: 一个学生可以选择多门课,一门课也有多名学生. 1.一对多关系处理:        通过学生和班级问题了解