数据库设计规范之第一范式(1nf)-ag捕鱼王app官网

数据库设计规范之第一范式(1nf)

作者:迹忆客 最近更新:2022/12/26 浏览次数:

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前 关系数据库有六种范式:第一范式(1nf)、第二范式(2nf)第三范式(3nf)、巴斯-科德范式(bcnf)、 第四范式(4nf)和 第五范式(5nf,又称完美范式)。但总的来说,满足第一、二、三范式的数据库设计就已经很完美了。

所以,在这里我们主要介绍第一、二和三范式。本篇主要介绍 第一范式——1nf。关于第二范式和第三范式可以查看 数据库设计规范之第二范式 和 数据库设计规范之第三范式 这两篇文章


第一范式是数据库设计的最基本的规则,要满足以下几条规则

  • 定义所需的数据项,因为它们会成为表中的列。
  • 将相关数据项存入表格中。
  • 确保没有重复的数据组。
  • 确保有主键。

1nf 的第一条规则

在设计表时,必须定义数据项。我们要将数据组织成列,定义每列的数据类型,然后最后将相关列插入到定义的表中。

例如,将所有与地点相关的列放在 location 表中,将那些与会员相关的列放在 memberdetails 表中等等。

1nf 的第二条规则

要确保没有重复的数据组,现在我们来考虑这样的一张表

create table members(
   id   int              not null,
   name varchar (20)     not null,
   age  int              not null,
   address  char (25),
   orders   varchar(155)
);

现在我们假设一个客户有多个订单,则表中的数据如下所示

id name age address orders
63 迹忆 30 北京 cannon xl-200
63 迹忆 30 北京 battery xl-200
63 迹忆 30 北京 tripod large

我们看到,很明显这不符合第一范式,我们要确保没有重复的数据组。因此我们需要将上面的表进行拆分,将其分成两个表,然后使用外键将两个表对应起来。

members 表

create table members(
   id   int              not null,
   name varchar (20)     not null,
   age  int              not null,
   address  char (25),
   primary key (id)
);

这个表有一条记录

id name age address
63 迹忆 30 北京

orders 表

create table orders(
   id   int              not null,
   member_id int       not null,
   orders   varchar(155),
   primary key (id)
);

此表中将有以下几条记录

id member_id orders
1 63 cannon xl-200
2 63 battery xl-200
3 63 tripod large

经过上面的拆分,我们就能确保表中没有重复的记录了。

1nf 的第三条规则

第一范式的最后规则,为我们已经创建的每个表创建一个主键。这个我们在上面创建表的时候已经为每张表创建了主键id。

我们在设计表的时候遵循上面的这三条规则,就满足了第一范式。这也是设计表的最基本的规范。

在接下来的 第二范式第三范式 的介绍中我们会看到满足它们的前提是都必须满足第一范式。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 mysqldump 导出 mysql 数据库

发布时间:2024/03/26 浏览次数:109 分类:mysql

我们将学习如何使用 mysqldump 命令行实用程序导出 mysql 数据库。我们还将学习如何从特定数据库中导出表。

如何将 csv 文件导入 mysql 数据库中的表中

发布时间:2024/03/26 浏览次数:166 分类:mysql

有两种方法可以将逗号分隔值文件中的数据导入 mysql 数据库。第一种方法是用 sql 命令进行编程,另一种是使用交互式 mysql 客户端,如 heidisql。

发布时间:2024/03/25 浏览次数:70 分类:mysql

在本指南中,我们将了解使用 phpmyadmin 从 mysql 数据库中删除所有行的最佳方法。

在 mysql 数据库中复制行

发布时间:2024/03/25 浏览次数:299 分类:mysql

本教程演示如何复制 mysql 数据库中的行。它通过复制同一个表中的行以及从一个表到另一个表来解释。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图