数据库字段,枚举

数据库字段,枚举,第1张

这个要放点代码。但是这种方式没有必要,其次就放50分,实在少点,回头你看我的回复

是否值50分?

----------------------

第一:如果代码类似如下

columns[int(TC_User.id)]

columns[int(TC_User.Name)]

columns[int(TC_User.Sex)]

columns[int(TC_User.Address)]

如果从持久实体直接获取,虽然有点效率,但是你可以试验一下如下查询:

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='T_CRD'

以上T_CRD 是表名,你看到有一列是ORDINAL_POSITION:

这个是按照数据库设计表的自然序排列,之后你就看到,只要在设计视图中换换位置就改变了这个值。

本身在DBA优化里有一项就是数据类型同项归类提速,结果代码过于拘泥,让DBA根本不能实施这项工作。这是一方面:

--------------------------------------------------

第二:其次就是使用反射来获悉枚举列名。你可以自己试验一下:还不如最原始的if else快,性能差个几百倍。

--------------------------------------------------

第三:即使元数据析构table,也是类似如下方式,如下是linq上下文生成列的方式,使用的是特性描述,别看原始,这确是大智慧。

[Column(Storage="_RpNo", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]

public string RpNo

{

get

{

return this._RpNo

}

set

{

if ((this._RpNo != value))

{

this.OnRpNoChanging(value)

this.SendPropertyChanging()

this._RpNo = value

this.SendPropertyChanged("RpNo")

this.OnRpNoChanged()

}

}

}

---------------------

第四:如果你们领导都同意用枚举来映射表,你也没必要修改,顺水推舟吧!

出错你在摆平,也让你出名一把!你自己先提前想好方案!

1、这个类型可以多种:int, char(n) -- 只要约定好就行,存贮枚举值的代码

2、枚举类型的允许值,可以由DB保证(比如在tradeInfo.tradeType上加约束);也可以只是由程序来控制 -- DB中加上约束会强壮一些,但会牺牲性能;

3、为了软件界面的易读性,通常需要让枚举值可读。每个枚举值对应的文本最好存贮在DB中。这个称为MasterData。可以建一张表存贮

4、如果有对应的主数据表,前面2中的约束,就可以改为Foreign Key

至于JAVA编程,枚举类型的处理,可以使用常量,也可以更优雅地定义一个类。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6423599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存