枚举,一种数据类型(相对于C#语言而言,当然,Java,PHP也有)、项目中使用枚举有以下一些优点。

第一:定义直观,使用方便、

第二:便于维护与扩展(实际上还是直观)

对于枚举类型的数据的显示,一般都是在程序里面定义这样一个枚举,然后通过程序获取枚举对应的

键名称,或者 DescriptionAttribute 标记,或者自定义 Attribute,在数据绑定的时候进行处理并

显示对应枚举值的描述信息或者键名称、(这会增加程序的运行成本与计算开销,个人拙见!!)

来看问题:

有一张订单表,单条数据表示一个订单基础信息,对订单的操作,需要对订单状态进行限制。

比如订单状态如下:

1:待处理,这个情况下允许仓库人员制单,生存包裹,做打包操作、

2:待配货,这个情况下允许仓库人员打印配货单,做捡货操作、

3:配货中,这个情况下允许仓库人员分拣订单物品、

4:待打包,这个情况允许仓库人员把分拣好的物品打包成一个包裹。

5:待称重,打包完成,允许仓库人员对包裹做发货前的包裹称重操作。

6:待发货,已经打包,并且称重完成,等待发货给客户、

7:已发货,已经发货了,监控包裹的物流信息

8:已签收,用户已经签收包裹(订单最后一步操作,标识订单完成。)

我现在要通过查询语句,直接显示,不调用任何的方法就显示对应枚举的键或者说明。

我是像以下这样子做的!

USE tempdb
GO-- 创建订单表
CREATE TABLE Sys_Order(ID BIGINT IDENTITY(10000,1) PRIMARY KEY,[Status] INT NOT NULL,CreateDate Datetime NOT NULL DEFAULT(GETDATE())
)
GO-- 创建枚举类型的
CREATE TABLE Basic_Enum_Type(ID INT IDENTITY(1,1) PRIMARY KEY,Name NVARCHAR(20) NOT NULL,[LangID] INT NOT NULL,    -- 语言ID[Desc] NCHAR(150) NULL
)
GO-- 枚举的字典表
CREATE TABLE Basic_Enum_Dict(ID INT IDENTITY(1,1) PRIMARY KEY,[Key] BIGINT NOT NULL,TypeId INT NOT NULL,        -- 枚举类型,引用Basic_Enum_Type表的ID字段Name NVARCHAR(20) NOT NULL,[Desc] NCHAR(150) NULL
)
GO
ALTER TABLE Basic_Enum_Dict ADD CONSTRAINT C_Unique_Key UNIQUE([Key])
GO-- 初始化数据。
INSERT INTO  Basic_Enum_Type(Name,[LangID],[Desc]) VALUES('订单状态枚举',1,'')INSERT INTO Basic_Enum_Dict([Key],TypeId,Name,[Desc])
SELECT 1,1,'待处理','这个情况下允许仓库人员制单,生存包裹,做打包操作、' UNION ALL
SELECT 2,1,'待配货','这个情况下允许仓库人员打印配货单,做捡货操作、' UNION ALL
SELECT 3,1,'配货中','这个情况下允许仓库人员分拣订单物品、' UNION ALL
SELECT 4,1,'待打包','这个情况下允许仓库人员制单,生存包裹,做打包操作、' UNION ALL
SELECT 5,1,'待称重','允许仓库人员对包裹做发货前的包裹称重操作、' UNION ALL
SELECT 6,1,'待发货','已经打包,并且称重完成,等待发货给客户、、' UNION ALL
SELECT 7,1,'已发货','已经发货了,监控包裹的物流信息、' UNION ALL
SELECT 8,1,'已签收','用户已经签收包裹(订单最后一步操作,标识订单完成。)、' INSERT INTO Sys_Order([Status],CreateDate)
SELECT 1,GETDATE() UNION ALL
SELECT 1,GETDATE() UNION ALL
SELECT 1,GETDATE() UNION ALL
SELECT 1,GETDATE() UNION ALL
SELECT 1,GETDATE() UNION ALL
SELECT 1,GETDATE() GO-- 现在订单的查询,包括状态的查询。可以这样做了、写成如下SQL语句。SELECT_so.ID AS OrderID,ISNULL(_bed.Name,'未知') AS StatusTextFROM Sys_Order _so WITH(NOLOCK) LEFT JOIN Basic_Enum_Dict _bed ON _bed.TypeID=1 AND _so.Status=_bed.[Key]

这样子做我个人感觉会有几个好处。

第一,枚举更直观,方便维护、

第二,查询显示,对于链表的查询。对于要程序计算显示,开销是会更小的。尤其是CPU。

脚本文件已经上传,有兴趣的朋友可以下载并查看附件。

个人的拙见,欢迎各位朋友,大师批评指出不足之处!!

转载于:https://blog.51cto.com/oceanho/1640321

数据库设计:关于枚举类型的表结构设计法,个人拙见相关推荐

  1. mysql数据库:最全MySQL数据库设计建库、建表规范及经验(踩过坑才能积累经验!)

    废话 这两天还是在做刚接手的小项目,也是第一次一个人负责整个项目的所有流程,最后交给客户. 当自己去接触项目时,真的会踩很多很多坑,当然解决了就是很大的进步与成长.昨晚我就意识到自己给自己留了一个大坑 ...

  2. 进销存设计之——单据的数据表结构设计

    单据的数据表设计 在表设计中,我尝试过两种方法: 把销售单.采购单等等单据用同一个实体表示,然后通过单据类型的字段来标识,因为单据设计到商品的出入,所以单据类型必须有出入状态标志.这样做的理由是: 1 ...

  3. 数据库设计中的英文术语表

    Access method(访问方法):此步骤包括从文件中存储和检索记录. Alias(别名):某属性的另一个名字.在SQL中,可以用别名替换表名. Alternate keys(备用键,ER/关系模 ...

  4. 数据库设计之字段类型

    1.一般的一个数据库中字段的类型有text,int,tinyint,datetime,vachar,char这几个 2.它们的长度一般设置为: 类型       长度     小数点 text--&g ...

  5. (数据库系统概论|王珊)第七章数据库设计-第四节:逻辑结构设计

    文章目录 一:E-R图向关系模式的转换 (1)转换原则 (2)具体转换 A:同一实体间 ①:同一实体间1:m 联系 ②:同一实体间m:n 联系 B:两实体间 ①:两实体间1:1联系 ②:两实体间1:m ...

  6. MySQL数据库基本语法,数据库设计,事务,多表查询及练习题

    Mysql Mysql注释 数据库类型 四大类 1.DDL(Data Definition Language)数据定义语言 2.DML(Data Manipulation Language)数据操作语 ...

  7. 数据库设计中String类型的数据库类型选择

    在java中,对于String 类型的字段,我们在设计数据库的时候,会有两个选择,一个char,一个varchar,那我们应该怎么选择呢? 我们先来看一下char和varchar的区别: char是定 ...

  8. 根据系统的业务需求,数据库设计可以设置三张表,分别为客户信息表、账号表、交易日志记录表,其表的具体设置如下:

  9. ezdml 支付mysql 吗_EZDML数据库表结构设计器_设计sql、oracle、mysql数据库表结构 V2.39 免费版...

    很多程序员或者网站站长在设计网站数据库的时候都要进行表结构设计,如果您不想操作原始的数据库工具之想简单设计一下数据库表结构,那么你不妨试试这款EZDML数据库表结构设计器,可以快速设计sql.orac ...

最新文章

  1. wpf- DataGrid 常用属性和事件
  2. 火爆 GitHub 的《机器学习 100 天》,有人把它翻译成了中文版!
  3. FGPA异步信号问题
  4. threejs向量夹角和夹角方向
  5. 前端html预览,HTML5 上传前预览
  6. 秒懂了微服务架构,看这本书就够了!
  7. 悟透JavaScript引子
  8. 校招生大规模涨薪、再扩招10000人?大厂抢人有多野?
  9. python类方法和实例方法syntax errors_《Fluent Python》CH.11_面向对象_接口:从协议到抽象基类...
  10. 梦想,没想到这么快就实现了!
  11. SAP 图标查找及方法
  12. java网页木马代码_能够解网页木马代码的高人来看以下。谢谢!```
  13. JIRA Service Desk获得 ITIL 认证
  14. ssm 微信扫码支付
  15. 一款强大易用的Vue-markdown文本编辑器插件
  16. 秃头大牛一文竟然就把SpringCloudStream(SCS)给讲明白了?
  17. 北航网络安全期末考点参考
  18. End-to-end people detection in crowded scenes
  19. WPF程序开发之 布局
  20. PE文件格式粗浅认识

热门文章

  1. Windows phone 7更新已经支持复制/粘贴[有图有真相]
  2. 查看SqlServer的内存使用情况
  3. unity meta文件
  4. 阿里云推荐码:8N6TBT
  5. XMPP文件传输协议笔记
  6. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)
  7. 玩转车联网1---初识OBD和行车助手
  8. 〖Linux〗Bash快捷键使用
  9. 三、6Gbps SAS冲锋队——Cheetah 15K.7、NS.2
  10. C#与Excel互操作