关系型数据库和主键外键
文章目录
- SQL server的基础学习3
- 一、什么是关系
- 一对一
- 一对多
- 多对多
- 二、主键和外键
- 主键
- 外键
SQL server的基础学习3
一、什么是关系
定义:表与表之间的联系
实现方法:通过设置不同形式的外键来体现表和表的不同关系
一对一
既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键(一个人只有一把钥匙,一把钥匙只给一个人)
一对多
一对多:把表A的主键充当表B的外键(一个部门有多个员工,一个员工只能在一个部门)
在多的一方添加外键(在员工表中添加外键即:员工表为外键表,部门表是主键表)
多对多
多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级和老师的关系一张表
二、主键和外键
主键
定义:能够唯一标示一个事物的一个字段或者多个字段的组合
附注:
1、含有主键的叫做主键表,主键通常都是整数,不建议用字符串当主键(如果主键是用于集群式服务,才可以考虑用字符串当主键)
2、主键的值通常都不允许修改,除非本记录被删除
3、主键不要定义成id,而要定义成表面_id
4、要用代理主键,不要用业务主键(任何一张表都不建议使用有业务含义的字段充当主键,我们通常都是在表中单独添加一个整型的编号充当主键字段)
外键
定义:如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,则这若干个字段就是外键
附注:
1、外键通常都是来自另外表的主键而不是唯一键,因为唯一键可能为null
2、外键不一定是来自另外的表,也可能来自表的主键(员工表中上层管理人员也是员工中的数据)
3、含有外键的表叫外键表,外键字段来自的呢一张表叫做主键表
问题:先删除主键表还是外键表?
答:先删除外键表
如果先删除主键表会报错,因为这会导致外键表中的数据引用失败
关系型数据库和主键外键相关推荐
- 为什么数据库不应该使用外键
为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...
- 为什么数据库不应该使用外键?
当我们想要持久化地存储数据时,使用关系型数据库往往都是最稳妥的选择,这不仅因为今天的关系型数据库种类非常丰富并且稳定,还因为不同社区对关系型数据库的支持都非常完备. 我们在前面的文章中曾经分析过 为什 ...
- [数据库03]-约束(唯一性-主键-外键/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式
[数据库03]-约束(唯一性-主键-外键)/存储引擎/事务/索引/视图/DBA命令/数据库设计三范式 一.约束 1.1 唯一性约束(unique) 1.2 主键约束 1.3 外键约束 二.存储引擎 2 ...
- 数据库 主键 外键 唯一键区别
下面我通过一个小栗子来说明我们应该如何选择主键,外键和唯一键. 现在我们想建立学生表,用来存储,一个系统的登陆信息.建表如下: create table student4 ( stu_id in ...
- MySql数据库主键外键与数据库设计
MySql数据库主键外键与数据库设计 首先要指出的: 列.字段.属性是一个概念 行.记录.元组是一个概念 MySQL数据库CONSTRAINT约束:非空约束,唯一约束,主键约束,外键约束 show c ...
- 约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏
文章目录 1. 约束(constraint)概述 2. 非空约束 3. 唯一性约束 4. PRIMARY KEY 约束 5. 自增列:AUTO_INCREMENT 6. FOREIGN KEY 约束 ...
- 数据库表设计索引外键设计_关于索引的设计决策 数据库管理系统
数据库表设计索引外键设计 Introduction: 介绍: The attributes whose values are required inequality or range conditio ...
- mysql 主键外键sql_SQL外键VS主键说明了MySQL语法示例
mysql 主键外键sql A Foreign Key is a key used to link two tables. The table with the Foreign Key Constra ...
- 实际开发中,是否会在数据库表中设置外键?
本科学习数据库的时候,书上明确的写了对于多对多关系必须要创建外键,可是最近在跟师兄做一个B/S架构的项目,发现所设计的数据库表虽然是多对多关系但并没有要求外键,查了一下之后才发现目前的大型系统中(尤其 ...
- 主键主键外键和索引_主键和外键的目的/用途是什么?
主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure d ...
最新文章
- python测试代码_python入门-测试代码
- Python编程基础:第六节 math包的基础使用Math Functions
- android四大组件 简书,android四大组件
- netstat [选项]
- Spring Cloud Netflix尤里卡
- springboot整合netty
- VC6在64位Windows7(家庭版或其他版本)下调试的时候,再结束调试,程序无法退出
- 阿姆达尔定律(Amdahl's law)
- 济南python工资一般多少-2020年济南学python好点的学校
- springboot整合postgresql_SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子-阿里云开发者社区...
- Java开发笔记(一百三十二)Swing的表格
- 我们的眼睛用得太狠了
- 实现拖拉机发牌程序——控制台版python
- 注塑工艺工程师视频教程 注塑机调机成型参数教程
- AOJ-AHU-OJ-401 Fibonacci GCD
- IIS服务器搭建与WWW资源加载
- rust闪退修复工具_Rust的错误处理
- 解决酷比魔方iwork手写板系列TF卡以及USB3.0不识别的问题
- 富有哲理的12条大数据金句
- useImperativeHandle
热门文章
- 社交网络分析-中心性指标
- 基于三菱FX系列与扫码枪232的通讯
- matlab美国标准大气,国际标准大气(ISA)
- cad剖切线的快捷键_CAD中剖面线如何画
- oracle 删除索引报错ORA-01418:sepecified index does not exist
- 三代测序组装工具Canu学习笔记
- php字符串去掉指定字符串,php怎么去除指定字符串
- 电路中的电阻_电感_电容的特性
- 基于RFID定位技术的智能仓储管理系统--RFID智能仓储--新导智能
- 商品进销存系统c语言课设报告,商品进销存管理系统_C语言-课程设计(附报告论文).doc...