数据库设计中常见表结构分析

本文探讨了数据库设计中树型关系数据表的处理方式,通过实例介绍了商品信息表的可扩展设计,多用户权限管理的架构,批量m:n关系的设计策略,以及冗余数据的合理取舍原则,提供了实用的数据库设计方案。
摘要由CSDN通过智能技术生成

一、树型关系的数据表

不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此时我们就会考虑用一个数据表来保存这些数据。

设计结构:

名称 类型 约束条件 说明
type_id int 无重复 类别标识,主键
type_name char(50) 不允许为空 类型名称,不允许重复
type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值
type_layer char(6) 限定3层,初始值为000000 类别的先序遍历,主要为减少检索数据库的次数

这样设计的好处就是遍历方便,只需要一个检索即可,通过设置type_layer即可设定遍历顺序,000000为3层,若要求多则可增加,每一层允许最多99个子类。010101表示为第三层。

检索过程:SELECT * FROM Type_table_2 ORDER BY type_layer

列出记录集如下:

type_id   type_name   type_father   type_layer
1       总类别        0    000000
2       类别1       1    010000
3       类别1.1       2      010100
4       类别1.2       2      010200
5       类别2       1    020000
6       类别2.1       5      020100
7       类别3       1    030000
8       类别3.1       7      030100
9       类别3.2       7      030200
10       类别1.1.1       3   010101
……    

二、商品信息表的设计(如何使数据表的属性可扩展)

假设你是一家百货公司电脑部的开发人员,某天老板要求你为公司开发一套网上电子商务平台,该百货公司有数千种商品出售,不过目前仅打算先在网上销售数十种方便运输的商品,当然,以后可能会陆续在该电子商务平台上增加新的商品出售。现在开始进行该平台数据库的商品信息表的设计。每种出售的商品都会有相同的属性,如商品编号,商品名称,商品所属类别,相关信息,供货厂商,内含件数,库存,进货价,销售价,优惠价。

商品类型表(Wares_type)

名称 类型 约束条件 说明
type_id int 无重复 类别标识,主键
type_name char(50) 不允许为空 类型名称,不允许重复
type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值
type_layer char(6) 限定3层,初始值为000000 类别的先序遍历,主要为减少检索数据库的次数

供货厂商表(Wares_provider)

名称 类型 约束条件 说明
provider_id int 无重复 供货商标识,主键
provider_name char(100) 不允许为空 供货商名称

商品信息表(Wares_info)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值