通用基础表逻辑设计(一)——配置、枚举和类别
一、配置表
一个系统中往往有很多需要可自定义的参数,比如网站名称、联系地址等基础参数以及各种系统运行参数等等,这个时候就需要单独一个参数配置表来保存这些参数。可能最先想到的就是一个参数加一个字段,但参数的个数不一定是固定的,如此设计需要修改数据库、修改程序,可扩展性不够。所以可以把这种列设计转换为行设计,参数增减通过数据行的增减来实现。
字段名称 | 数据类型 | 属性 | 允许空 | 默认值 | 备注 |
cfg_id | int (4) | PK AI | 配置编号 | ||
cfg_guid | char (36) | (newid()) | 配置GUID | ||
cfg_parent_guid | varchar (36) | ('') | 上级配置GUID,可以通过该字段实现配置分组且不限层级 | ||
cfg_code | nvarchar (100) | ('') | 配置编码 | ||
cfg_name | nvarchar (100) | ('') | 配置名称 | ||
cfg_desc | nvarchar (200) | ('') | 配置描述 | ||
cfg_value_type | varchar (50) | ('') | 配置值类型,比如integer(整数)、html(HTML)等bool(是否),不同的值类型可以通过不同的表单来显示和编辑 | ||
cfg_value | nvarchar (1000) | ('') | 配置值 | ||
cfg_state | int (4) | (1) | 配置状态(-1:已删除;0:禁用;1:启用) |
表1:base_config(配置表)
二、枚举表
很多时候,系统中都需要编码-名称对应的字典枚举表以记录各种编码代表什么含义,比如订单状态的编码和意义、商家和商品类型的编码和意义等等,此时我们就需要一个专门的字典枚举表来保存这些信息。也可以这些信息读入缓存直接获取对应字段编码的含义,从而减少表间连接。
字段名称 | 数据类型 | 属性 | 允许空 | 默认值 | 备注 |
enum_id | int (4) | PK AI | 枚举编号 | ||
enum_guid | char (36) | (newid()) | 枚举GUID | ||
enum_parent_guid | varchar (36) | ('') | 上级枚举编号GUID,可以通过该字段实现枚举分组且不限层级 | ||
enum_code | varchar (50) | ('') | 枚举编码 | ||
enum_value | int (4) | (0) | 枚举值 | ||
enum_name | nvarchar (100) | ('') | 枚举名称 | ||
enum_desc | nvarchar (100) | ('') | 枚举描述 | ||
enum_state | int (4) | (1) | 枚举状态(-1:已删除;0:禁用;1:启用) |
表2:base_enum(枚举表)
三、类别表
另外,商家有类别(比如餐饮、娱乐等)、商品有类别(抢购、精选等),这些类别信息同样可以抽象整合到类别表。
字段名称 | 数据类型 | 属性 | 允许空 | 默认值 | 备注 |
cat_id | bigint (8) | PK AI | 类别编号 | ||
cat_guid | char (36) | (newid()) | 类别GUID | ||
cat_parent_guid | varchar (36) | ('') | 上级类别GUID,可以通过该字段实现类别分组且不限层级 | ||
cat_name | nvarchar (100) | ('') | 类别名称 | ||
cat_key | nvarchar (100) | ('') | 类别关键字 | ||
cat_desc | nvarchar (200) | ('') | 类别描述 | ||
cat_state | int (4) | (1) | 类别状态(-1:已删除;0:禁用;1:启用) | ||
cat_order | int (4) | (0) | 类别序号 | ||
cat_detail | nvarchar (-1) | ('') | 类别简介 |
表3:base_category(类别表)
四、总结
现实中有各种不同的数据,把这些数据信息化后,在信息系统中可以抽象整合成各种类型的业务模型,最后具体化到数据库的设计,由数据表等对象来体现。分析问题解决问题的能力,就包括数据的收集、归纳、分析和综合,在形成具体数据表的设计时,应考虑到当下既定的事实和未来可能的变化,通过可扩展、可定制的设计来应对变化频繁的现实需求。