物理外键

简介: 物理外键

物理外键 foreign key

以下外键都是物理外键(数据库级别的外键),我们不建议使用(避免数据库过多造成困扰)

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 想使用多张表的数据时,想使用外键(程序去实现)

概念

  • 公共关键字:一个表(从表)中的主关键字在另外一个表(主表)中作为外键
  • 用于约束,使两个表之间形成关联

创建

方式一

-- 年级表 (从表)

createtable`grade`(

    `gradeid`int(10)notnullauto_incrementcomment`年纪ID`,

   `gradename`varchar(50)notnull commnet `年级名称`,

   primarykey(`gradeid`)

)ENGINE=INNODBdefaultcharset= utf8

 

-- 学生信息表 (学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号)

createtable`student`(

    `studentno`int(4)notnullcomment'学号',

   `studentname`varchar(20)notnulldefault'匿名'comment'姓名',

   `sex`tinyint(1)default'1' commnet '性别',

   `gradeid`int(10)defaultnullcomment'年级',

   `phoneNum`varchar(50)notnullcomment'手机',

   `address`varchar(255)defaultnullcomment'地址',

   `borndate`datetimedefaultnullcomment'生日'

   `email`varchar(50)defaultnullcomment'邮箱',

   `idCard`varchar(18)defaultnullcomment'身份证号',

   primarykey(`studentno`),

   

   key`FK_gradeid`(`gradeid`),  

   -- 定义外键key(可省略)

   

   constraint`FK_gradeid`foreignkey(`gradeid`)references`grade`(`gradeid`)

   -- 给外键Key增加约束

)ENGINE=innodbdefaultcharset=utf8

 

方式二

altertable`student`

addconstraint`FK_gradeid`foreignkey(`gradeid`)references`grade`(`gradeid`);


相关文章
|
4月前
|
搜索推荐
舒尔特表练习记
舒尔特表练习记 1 练习的开始
54 0
|
安全 数据库
通过E-R理解 主键和外键的关系
实例 现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。
4508 1
通过E-R理解 主键和外键的关系
|
12月前
|
SQL 数据库 Python
根据外键倒查关联表
根据外键倒查关联表
|
存储 关系型数据库 MySQL
MySQL数据库约束与表的设计
本文主要介绍MySQL数据库中一些常用的约束,以及表的设计方法。
127 0
MySQL数据库约束与表的设计
|
数据库 索引
数据库中的主键、外键、索引的区别
数据库中的主键、外键、索引的区别
536 1
|
Java 数据库
不设外键:用程序来实现表之间的关联
Association 相信有很多同学都有使用过Hibernate框架的开发经验,尽管现在开发人员对Hibernate的褒贬不一,我们暂且不谈这个话题。
1745 1
|
存储 C#
C# 如何物理删除有主外键约束的记录?存储过程实现
十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE Dept--系/学院表 ( DeptId int identity(1,1) primary k...
1130 0
|
存储 关系型数据库 MySQL
设计表的时候,对于自增列做物理主键使用的一点思考
原文:设计表的时候,对于自增列做物理主键使用的一点思考   本文出处:http://www.cnblogs.com/wy123/p/7581380.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)     关于自增列 自增列作为数据库的一个特性之一,在MSSQL和MySQL以及Oracle中都被支持。
2035 0