数据库三大范式

同时不满足一、二、三范式的数据库表:销售记录表

|销售ID   | 客户信息             | 产品信息                |销售日期   |
|--------|---------------------|------------------------|---------|
|1       |[Tom, New York]      |[Phone, 500, Apple]     | 2022-01 |
|2       |[Jane, Los Angeles]  |[Laptop, 1000, Dell]    | 2022-01 |
修改为满足一范式(1NF)

客户信息和产品信息字段都不是原子性存在(不满足1NF)。

将非原子性的字段拆分开,使其每个字段都是不可分割的。

| 销售ID  | 客户姓名 | 客户地址     | 产品名称 | 产品价格 | 产品品牌 | 销售日期 |
|--------|---------|-------------|---------|--------|--------|---------|
| 1      | Tom     | New York    | Phone   | 500    | Apple  | 2022-01 |
| 2      | Jane    | Los Angeles | Laptop  | 1000   | Dell   | 2022-01 |
修改为满足二范式(2NF)

产品信息里的品牌和价格 部分依赖 于销售ID(不满足2NF)。

将表拆分为两个,一个是销售表,一个是产品表。使每个字段都完全依赖于整个主键。

销售记录表:

| 销售ID  | 客户姓名 | 客户地址     | 产品ID | 销售日期 |
|--------|---------|-------------|-------|---------|
| 1      | Tom     | New York    | 001   | 2022-01 |
| 2      | Jane    | Los Angeles | 002   | 2022-01 |

产品表:

| 产品ID | 产品名称 | 产品价格 | 产品品牌 |
|-------|---------|---------|---------|
| 001   | Phone   | 500     | Apple   |
| 002   | Laptop  | 1000    | Dell    |
修改为满足三范式(3NF)

客户姓名、客户地址又 传递依赖 销售ID(不满足3NF)。

将销售记录表再次拆分为两个表,一个是销售表,一个是客户表。消除所有的传递依赖,满足了三范式。

销售记录表:

| 销售ID  | 客户ID |产品ID| 销售日期 |
|--------|-------|------|---------|
| 1      | 001   | 001  | 2022-01 |
| 2      | 002   | 002  | 2022-01 |

客户表:

| 客户ID | 客户姓名| 客户地址    |
|-------|--------|------------|
| 001   | Tom    | New York   |
| 002   | Jane   | Los Angeles|

产品表:

| 产品ID | 产品名称| 产品价格| 产品品牌 |
|-------|--------|--------|--------|
| 001   | Phone  | 500    | Apple  |
| 002   | Laptop | 1000   | Dell   |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值