如何存储数据

CZ

匠友们,请教一个细节问题:

在一张表里,有一个字段"图件类型",包括 "平面图,柱状图,统计图",我现在是将该字段设计为 varchar 类型,直接存放类型名称。

现在有同事建议,应该设计为interger类型,然后定义一个枚举变量,

enum MapType
{
AllMapType=0,
Plane=1,
Histogram,
Cartogram
};

理由是,

1)这样查询的效率高。

2)避免使用字符串比较(其实没有避免)。

我觉得他说得有些道理,

但是,这样编码时就多了一层无谓的转换:因为界面上显示是类型名称,每次写入时需要将类型名称转换为代码(即对应的枚举变量),读出来时要将代码转换为类型名称。

第一次做数据库的东西,不知道大家在实际中遇到这类问题时是怎么处理的?

STST

不要从"如何存"开始考虑,要从"如何用"开始考虑

先把高层的概念,类型整理好,最后考虑怎么把这些概念存到数据库

这是面向对象的设计方法

如果用面向过程的设计,当然可以先考虑如何存

"如何存"只是一个最具体的细节罢了

在往数据库里存之前,最好用平面文件先实现一边

CZ

STST

这样可以确保你的概念分层很清晰

确保从平面文件转到数据库的过程很平滑,那么你的整个设计就是比较好的了

CZ


好像之前听过这样的说法

但是一般不都是先把数据库设计好然后就直接写代码吗?

STST

恩,当然是书上的,我只能说书上的,我只是一个读者,复读机罢了

CZ

@怀化-英界尔-C 读了后能理解,就已经很牛了。很多书我通常是读不下去。以前也很少接触数据库。

STST

从OOD的视角来看,UI和Data都不是面向对象的,为了不让这两层污染我们的OOD设计,就出现了两个专门的隔离层,一个就是ORM,一个就是MVC,这样我们在这两个隔离层之间可以自由使用OOD的各种设计方式

原文地址:https://www.cnblogs.com/stst/p/4908843.html