当前位置: 首页 > news >正文

做生存曲线网站清远市建设工程交易中心网站

做生存曲线网站,清远市建设工程交易中心网站,四川网站建设,301重定向到新网站文章目录 数据的完整性实体的完整性主键 域完整性参照完整性外键 多表设计/多表理论一对一和一对多多对多 数据库的设计范式第一范式:原子性第二范式:唯一性第三范式:不冗余性 数据的完整性 实体的完整性 加主键,保证一个表中每一…

文章目录

  • 数据的完整性
    • 实体的完整性
      • 主键
    • 域完整性
    • 参照完整性
      • 外键
  • 多表设计/多表理论
    • 一对一和一对多
    • 多对多
  • 数据库的设计范式
    • 第一范式:原子性
    • 第二范式:唯一性
    • 第三范式:不冗余性

数据的完整性

实体的完整性

加主键,保证一个表中每一条数据 和其他条目不同。

主键

实体完整性确保表中的每一行都是唯一的,并且具有唯一的标识符(通常是一个主键)。这意味着在表中不能有重复的行,并且主键字段不能包含NULL值。

主键

在SQL中,主键(Primary Key)是一个或多个字段的组合,用于唯一标识数据库表中的每一行记录。其具备以下特点:

  1. 唯一: 主键的值必须是唯一的,不允许有重复的值。
  2. 非空:主键字段不能包含NULL
  3. 主键可以加快查询速度:主键在创建时会自动建立索引,这有助于提高查询速度。

在一个标准,存储数据的时候,逻辑上我们认为一行数据是一个不可拆分的整体,要求(不是语法要求,是约定俗成的数据库使用规范)每一行数据和另一行不要重复,所以我们在上面的创建表的时候,就给了一个id,准备用它来充当“唯一标识”、

主键的定义:SQL语法 primary key

我们可以给表中的某一列设置为主键,

成为主键之后有两个特点:(1)不允许为null,(2)不允许在表中重复

CREATE TABLE `test`(`id` int  primary key,`name` varchar(255),`gender` char(1)
);-- 或者CREATE TABLE `test`(`id` int,`name` varchar(255),`gender` char(1)primary key(id)
);-- 如果一个表表在创建的时候没有主键,增加主键的sql  -- 使用上:没有任何意义,
-- alter table 表名 add primary key(主键列);
alter table user add primary key (id);-- 联合主键:复合主键(不建议)。这意味着id和name的组合在table_primary3表中表示主键。
CREATE TABLE table_primary3(id INT(11),name VERCHAR(25),job VERCHAR(25),salary FLOAT,PRIMARY KEY(id, name)
);
insert into test values(1, 'zl', '男');	-- 如果有id 1,就会插入报错。

如果要解决正确的步骤就是先查表,看哪个id没有使用,然后插入的时候再插入

-- 使用sql语句解决-- 在创建表时
CREATE TABLE `test`(`id` int  primary key AUTO_INCREMENT,`name` varchar(255),`gender` char(1)
);-- 插入
-- 服务器接收sql语句,插入NULL对应id,发现id为主键,然后看是否自增,如果不是自增就会报错,有自增会选取一个自增值
insert into test values(null, 'zl', '男');

域完整性

设计某些列,类型要合适,范围要合适

储存数据的时候,存储的内容要符合列的类型的设置

参照完整性

在关系型数据库中,一个表的数据可能依赖于另一个表的数据而存在,或者说两个表的数据存在关联,所以我们希望这种关联/参照,具有一致性(要修改的是同步进行变化)。

外键只是保证参照完整性的一种方式

外键

强制绑定两个具有参照的表的字段。

也就是将一个表的外键绑定为另一个表的主键

在对一个表中的键进行修改时,可能会另一个关联表中进行全局扫描,因为要查看在另一个表中是否在使用。并且主键的扫描次数会少,性能高一点,但是外键的查找性能会低很多。

(修改主键值时,数据库需要检查所有关联的外键约束。如果外键列没有索引,会导致全表扫描,性能较差;而主键由于自带唯一索引,查找效率较高。因此,在设计数据库时,应避免频繁修改主键,并为外键创建索引以提高查询性能)

外键是 MySQL 中用于建立和加强两个表数据之间链接的一种约束。下面我来介绍它的使用方法:

创建外键

在创建表时,可以通过以下方式定义外键:

CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,...[CONSTRAINT 外键约束名] FOREIGN KEY (外键字段名) REFERENCES 主表名(主键字段名)
);

举个例子:

CREATE TABLE department (id INT PRIMARY KEY,name VARCHAR(50)
);CREATE TABLE employee (id INT PRIMARY KEY,name VARCHAR(50),department_id INT,FOREIGN KEY (department_id) REFERENCES department(id)
);

删除外键

可以使用 ALTER TABLE 语句来删除外键约束:

ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;

要留意的是,外键约束名可以通过查看表结构获取,也能在创建外键时自行定义。

外键约束选项

在外键定义中,还能够添加 ON UPDATE 和 ON DELETE 子句,以此来定义当主表中的记录被更新或者删除时,从表应该执行的操作。常见的选项如下:

  • ON DELETE CASCADE:主表记录删除时,从表相关记录自动删除。
  • ON UPDATE CASCADE:主表记录更新时,从表相关记录自动更新。
  • ON DELETE SET NULL:主表记录删除时,从表相关字段设为 NULL(要求该字段允许 NULL 值)。
  • ON UPDATE SET NULL:主表记录更新时,从表相关字段设为 NULL。

示例如下:

CREATE TABLE employee (id INT PRIMARY KEY,name VARCHAR(50),department_id INT,FOREIGN KEY (department_id) REFERENCES department(id)ON DELETE CASCADEON UPDATE CASCADE
);

使用外键的注意事项

  1. 主表和从表的字段数据类型要保持一致。
  2. 主表的字段必须是主键或者具有唯一约束。
  3. InnoDB 存储引擎才支持外键,MyISAM 不支持。
  4. 外键会对数据的插入、更新和删除操作产生影响,可能会导致性能下降。
  5. 要避免出现循环外键约束,不然会造成死锁的情况。

多表设计/多表理论

一对一和一对多

一对一的表很少见,因为在理论上可以合并为一张表。

多对多

多对多的两张表一般需要一个中间对照表来连接两个表之间的关系。

依靠中间表,来将多对多的两张表,进行连接,对应下面就是:学生信息与对照表是一对多的关系,剧本表与对照表是一对多的关系,学生信息表与剧本表是多对多的关系。

数据库的设计范式

第一范式:原子性

第二范式:唯一性

不存在部分依赖(不能是组合唯一,就是使用联合主键)必须为某一列作为主键设置唯一。

第三范式:不冗余性

http://www.dtcms.com/a/574527.html

相关文章:

  • 解决Linux串口登录界面重复输入密码
  • 【iso8601库】ISO 8601 低层解析器详解(parsers.rs)
  • 有什么网站可以接手工加工做在线免费看电视剧的网站
  • 类似享设计的网站做贸易选哪家网站
  • 算法笔记 10
  • 锛网站开封seo公司
  • Linux 进程资源占用分析指南
  • 电子商务网站建设评估的指标wordpress程序图片打开慢
  • 网站开发时如何设计英文版本山东手机网站建设
  • 算法题种类与解题思路全面指南:基于LeetCode Hot 100与牛客Top 101
  • Web开发身份认证技术解析
  • 做汽车网站怎么挣钱吗深圳网站建设公司好
  • 网站建设素材网页apache 创建网站
  • 虚函数指针与虚函数表:C++多态的实现奥秘
  • 小说类网站怎么做建设推广营销型网站应该注意什么
  • ubuntu 安装 SRS (Simple RTMP Server) 是一个开源的流媒体服务器
  • 怎么自己设计网站外贸公司 网站
  • 【仓颉纪元】仓颉鸿蒙应用深度开发:待办事项 App 全流程实战
  • 领英被封?账号受限该怎么处理?
  • 信誉好的镇江网站建设网站备案名称中国开头
  • 【C语言】localtime和localtime_r;strftime和strftime_l
  • 扁平化设计网站代码打开网站后直接做跳转
  • Go 语言依赖注入实战指南:从基础到高级实践
  • 全场景自动化 Replay 技术:金仓 KReplay 如何攻克数据库迁移 “难验证“ 难题
  • 阳新县建设局网站win2008系统asp网站建设
  • 网站域名分几种新东方雅思培训机构官网
  • 网站怎么样做不违规学科基地网站建设
  • MySQL-4-视图和索引
  • 电脑被捆绑软件缠上?3 步根治卡顿弹窗~
  • Linux时间处理与系统时间管理详解