精华内容
下载资源
问答
  • ALTER TABLE d_company_bank ADD b_enable NUMBER(1) DEFAULT1; ALTER TABLE 【tableName】ADD 【fieldName】[Type] DEFAULT [default]

    ALTER TABLE d_company_bank ADD b_enable NUMBER(1) DEFAULT1;

    ALTER TABLE 【tableName】ADD 【fieldName】[Type] DEFAULT [default] 


    展开全文
  • 项目设计数据库表时是否需要在表中加备用预留字段? 背景:以前做项目,有用过SSH框架,或者SSM框架,数据库有Oracle,DB2。在开发过程中,有时因数据库设计者未考虑周到,业务实体有一个属性没有对应的字段,因此...

    需求背景

    项目设计数据库表时是否需要在表中加备用预留字段?

    背景:以前做项目,有用过SSH框架,或者SSM框架,数据库有Oracle,DB2。在开发过程中,有时因数据库设计者未考虑周到,业务实体有一个属性没有对应的字段,因此需要在数据库表加一个字段,又由于此字段要求不可为空,并且在开发阶段,测试数据不多,有时是drop掉了原来的表,增加了一个字段再重新建了一张表。有时一些表,设计表时会在后面加几个类型为varchar的预留字段

    最近和朋友聊到这个问题,就是:为什么要这么做,好处是什么,怎么权衡这个问题

    在遇到这个问题之后引起我思考预留字段这个通用的做法是否能减少开发阶段由于考虑不周到,或后续维护阶段因为需求变更或者扩展改造而需要增加字段而造成的麻烦?

    就此与一些朋友进行了讨论,根据以往的项目经验和设计原则给出了一些解答,以及怎样的设计能确保数据库健壮,可扩展。大家意见不一,以下是正反方的一些意见和看法。

    解决方案

    ———————————————

    正反观点:需要
    原因:
    1. 持久层的设计,数据库表结构不应轻易变更。因此应设置备用字段。启用备用字段后,只修改代码,在代码中增加注释和并文档说明即可,不需要改动数据库结构,更方便
    2. 如果没有备用字段,如果后期要加字段的话,用add column的方法会改变原先的数据库存储结构,造成数据移动,移动需要时间,而且会移动到其他数据块,add column会影响数据库性能

    3. 对于反方提到的规范问题,只要代码和文档规范是可以避免这样的问题的,即使遇到这样的问题,也比修改表名带来的危险要小,除了要修改代码、存储过程、配置文件中的表名,还要考虑数据的迁移等问题,如此多的改动难免会出现这样那样的问题,因此保证系统的稳定性来看,携带几个扩展字段为了后续使用也无妨。

     

    ———————————————

    反方观点:不需要

    1. 如果要预留字段的话,第一个需要全面考虑的问题,如何评估:
        a. 预留多少个字段;
        b. 预留什么类型的;
        c. 预留的字段不适用怎么办——比如长度/精度不够;
        d. 预留的字段允许不允许空值呢;
    2. 数据库设置备用字段无法在字段名上体现其意义,不规范,后期维护麻烦。在需要增加字段的时候如果直接add column,也不会有太大工作,但能保证数据库字段的规范。虽然在启用备用字段的时候可以文档说明,但在POJO上对应其属性为attribute1,attribute2等,代码的可读性不强。而且,预留字段全部统一为varchar,也不太合适。

    3. 预留字段毕竟是数据库表字段,会占用数据库存储空间

    4. 添加字段出现的性能问题,我之前的项目中一般都是定期对数据库进行数据整理、重组操作

     

    各方案都有不同的侧重点,最终的你会选择选择哪种方案呢?

     

    ——————————————————————————————

    CSDN有另一篇博文,地址是:http://blog.csdn.net/iw1210/article/details/44752771

    分析也很不错,给出了相应的解决方案,详细内容如下:

     

    数据库设计误区:备用字段 / 保留字段 / 预留字段

    【现象描述】
    在数据表中,不仅设计了当前所需要的字段,而且还在其中留出几个字段作为备用。
    比方说,我设计了一个人员表(Person),其中已经添加了各种必要的字段,包括姓名(Name)、性别(Sex)、出生年月日(birthday)等等。大功告成之后,我忽然想到,将来系统中应该还会有很多其它与人相关的内容吧,比方说毕业院校,比方说工作单位等等,尽管现在根本不需要填写,以后可能还是会用到的吧。拍脑袋一项,那就加入5个varchar2型的字段,分别叫做Text1、Text2……Text5,然后又想,应该还有一些日期型的字段需要备用,就又建立了三个date型的字段,分别起名叫做date1、date2、date3,……


    【原因分析】
    大家应该已经看出问题了,在这个数据表中存在大量暂时无用的字段,我们可以称之为备用字段,它们的作用是什么呢?就是以防万一,防备可能的情况。
    这似乎可以叫做防患于未然,等到需要的时候,就不需在表中增加新的字段了,而且这样做的话,一个表的数据应该会被存储在相邻的物理空间中,这对于性能也是有好处的。
    另外的原因就是,在古老的数据库中,如果改变数据库的定义(包括增加字段、改变字段的类型、删除字段等等),那么其中所有的数据就会丢失,所以这项工作非常麻烦,我们需要先建立临时表,将数据备份出来,然后创建新表,将数据导入其中,最后再删除原来的表。


    【问题所在】
    这样的做法对于项目会导致很多问题,而且原先想要解决的问题并不一定能够解决,不信的话,请往下看。
    问题一:增加大量备用字段,必定会浪费很多空间,尽管其中可能都没有具体的数据,但是仅仅是空字段也会占据一定的空间的。
    问题二:由于命名的特点,如果没有完善的文档管理流程,用不了多久(可能也就是两三年),就没有人能够说清楚到底哪个字段代表的是什么意义了。就算有文档管理,这些管理工作也会比较麻烦,而且在每次使用的时候都需要申请,还有可能会出现冲突的情况。
    问题三:增加了这些备用字段就真的会够用吗?不一定,因为我们只是每个类型的字段留出几个备用,如果数量超过,或者要使用特殊的、不常用的类型的时候,还是需要增加新的字段。比方说在上述的Person表中,我们要存储照片,那么可能就要增加一个blob类型的photo字段,这在初期设计的时候可不一定会留出这样的备用字段。而且如果没有完善的管理,谁又能说清楚倒底哪个字段已经被使用,哪个字段还可以使用呢?到时候还不是要增加新的字段。


    【解决方案】
    其实上面的这种设计方式就是一种“过度设计”,我们应该做的就是“按需设计”,在经过详细有效的分析之后,在数据表中只放置必要的字段,而不要留出大量的备用字段。
    当需要增加相关的信息的时候,就要具体情况具体分析:
    1. 如果数量很少,而且信息的性质与原表密切相关,那么就可以直接在原表上增加字段,并将相关的数据更新进去;
    2. 如果数量较大,或者并非是原表对象至关重要的属性,那么就可以新增一个表,然后通过键值连接起来;
    3. 对于表的数据的存储位置所导致的性能问题,我们可以通过在特定时间对数据库的数据进行重组来解决,而这项工作对于长期运行的数据库来说,也是需要定期进行的。

     

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

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

     

    关于我(个人域名)

    我的开源项目集Github

     

    期望和大家 一起学习,一起进步,共勉,O(∩_∩)O谢谢

    如果你有任何建议,或想学习的知识,可与我一起讨论交流

    欢迎交流问题,可加个人QQ 469580884,

    或者,加我的群号 751925591,一起探讨交流问题

    不讲虚的,只做实干家

    Talk is cheap,show me the code

     

    展开全文
  • MySql中增加一列 如果想在一个已经建好的表中添加一列,...这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用: alter table TABLE_NAME add column NEW_COL...

    MySql中增加一列
    如果想在一个已经建好的表中添加一列,可以用诸如:

    alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;

    这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:

    alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null after COLUMN_NAME;

    注意,上面这个命令的意思是说添加新列到某一列后面。如果想添加到第一列的话,可以用:

    alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null first;

    展开全文
  • 表中加字段加不上去

    2012-04-16 16:01:41
    为什么一个有100来万条数据的表中加一个新字段老是加不上去。
  • 项目设计数据库表是否需要在表中加备用字段? 相信大多数朋友都面临过这样的困惑(高手勿喷)。以前做项目,有用过ssh、ssm框架,数据库有MySQL、Oracle。有时候因为数据库设计者为考虑周到,在实际业务开发过程中...

    项目设计数据库表是否需要在表中加备用字段?

            相信大多数朋友都面临过这样的困惑(高手勿喷)。以前做项目,有用过ssh、ssm框架,数据库有MySQL、Oracle。有时候因为数据库设计者为考虑周到,在实际业务开发过程中或者后期业务需求发生变动、进行项目维护时,导致业务实体有些属性没有对应的字段,因此需要在数据库表加一个字段或几个字段,对相应的字段又有某些要求,面临如此境界时,相信大多数程序员会心态崩溃几秒吧!那关于数据库建表时我们需要预留字段来解决此问题吗?

            关于这个问题菜鸟的我困惑了很久,项目需求分析,概要设计,数据库设计,这些都是至关重要的,设计合理完善会让后续的工作如鱼得水,数据库的设计,我们要考虑范式、冗余、效率等问题。往往都是结合项目具体场景具体分析。这句话很虚但也是一句大实话。只有结合场景需求才能折中选取更优的方案,比如用空间换取时间等等。

          在解决问题时,考虑:为什么这么做?有何利弊?怎么权衡这个问题?  

          预留字段这个通用的做法是否能减少开发阶段由于考虑不周到,或后继维护阶段因为需求变更或者扩展改造而需要增加字段而造成的麻烦?针对这个问题,不同的人有不同的见解。

         个人认为:在进行数据库的设计时,要求设计者有统筹全局的眼界,从字段的建立到选型等,尽量的把问题考虑周到,虽然建立预留字段会影响数据库结构、性能。但预留字段是一些可能会扩展的功能用到的,大部分的预留字段是经过分析或者是依据经验才会预留的。如果你觉得有必要,那么可以预留一些,不然还是什么时候用到什么时候在加。

       没有最好只有更好,以上纯属个人的观点。高手勿喷,也欢迎各位留言提出你们的宝贵建解。不胜感激。。。

      另外推荐一篇关于这个问题的见解博客:https://blog.csdn.net/iw1210/article/details/44752771

      欢迎各位指正,您的意见将促进菜鸟的不断进步。望不吝赐教!!!

     

    展开全文
  • 加备用字段:如果缺少字段,备用字段启用,写好备注信息,不用更改太多?
  • Entity中加一个私有变量,注释部分写明字段名称,属性等信息 进入php app/console 运行命令 运行php app/console doctrine:schema:update --dump-sql 来查看有数据库中有哪些片段要变更 如果第3步骤运行没有...
  • 开发过程中,因数据库设计者未考虑周到,业务实体有一个属性没有对应的字段,因此需要数据库加一个字段。又由于此字段要求不可为空,并且开发阶段,测试数据不多。于是我drop掉了原来的,增加了一个字段...
  • MySQL中加字段设置默认值的问题

    千次阅读 2019-04-12 18:19:22
    MySQL中加字段设置默认值的问题背景Repeat & Fix环境:情况一:情况二:情况二(补充)附: 背景 一个MySQL数据库多活的场景里,执行DDL新增字段需要进行更加准确的控制: alter语句中,不能指定默认值...
  • 想请教mvc3的问题,控制器中加字段 如果说有一个变量控制器的各个方法中都有用到,那么是否可以将它定义成控制器的字段。 以前使用asp.net时,有听说最好不要aspx的后台代码类文件中直接定义字段,...
  • 数据库中加一个字段,见给数据库加字段部分的介绍 ALL的TWIG中理性按键的类型,来增加排序功能如下: <th>状态<br/><a class="asc" data-id="status=asc">正序</a> | <a class=...
  • oracle在表中增加字段

    千次阅读 2018-11-29 15:19:48
    alter table 表名 add (字段字段类型(字段长度),字段字段类型(字段长度)); 例如:alter table students add ... (学生students中增加开始时间和结束时间字段,类型均为varchar2,最大长度为8) ...
  • SQL—在表中加自增长的ID列,步长为1 法1: 写SQL语句 alter table 表名 add 字段名 int identity(1,1) eg: alter table Table_3 add ID int identity(1,1) 法2: 第一步:建表时,写“ID”列名名称,数据类型 ...
  • 现实中各种情况会出现需要表中加字段或者索引。现象很慢,跑不动。 二、不停机解决方案 以下方案是带有自增id且不会修改数据的方案 1、建立临时 CREATE TABLE t_table_bak LIKE t_table; 2、查询最大id...
  • SQL往表里添加字段

    2021-01-11 10:29:22
    ALTER TABLE 表名 ADD (字段 字段类型) [DEFAULT '输入默认值'][null/not null] ; 举例: 1、往WAREHOUSE_OTHER_INOUT_ORDER表里增加ErpPOrderNo字段,默认值为空,字符长度为100 ALTER TABLE WAREHOUSE_OTHER_IN...
  • 最近遇到的一个问题,需要一张1800万数据量的中添加加一个字段并添加索引,但是直接添加会导致mysql崩溃或者锁时间太长影响用户操作,所以需要利用其他的方法进行添加,这篇文章主要给大家介绍了MySQL中大数据...
  • 构造函数中加字段Rating 然后功能代码填上了相应的代码,数据库中也追加了这个字段,但是就是运行打不开,这是为什么啊??
  • 一、对象完成后的类型展示 parmes = { detailDatas:[ { name: '456', gender: 1, idnum: '110101199003078670', address: '山东省xx市', cgoods_ids: 'dee4aa0a0d71467cb082cbca', ... valid_...
  • 2. 增加字段的情况下, 如果可以通过增加一个新的来增加这个字段, 那么就增加一个新的, 通过cache 或 程序来实现join 的效果 3. 如果能停机, 并且停机的时间你容忍范围之内, 数据备份之后停机来做。 如果...
  • ...Android的Settings的数据库中加入自己的变量的...make update-api(要. compile_pxa920H.sh命令之后执行此命令,执行之后会自动更新current.xml文件) 到此便可以程序中使用这个变量并进行数据保存
  • 增加字段相信大家应该都不陌生,随手就可以写出来,给 MySQL 一张字段执行如下 sql 就可以了: 1 ALTER TABLE tbl_tpl ADD title(255) DEFAULT '' COMMENT '标题' AFTER id; 但是线上的...
  • 中加入新的字段之后有四个页面share这个主,前两个页面都显示正常,但是第三个页面显示页面的框架,但是其中的数据是空白的,连下拉菜单中的选项也都不显示,第四个页面直接一片空白,求高手解惑!
  • 1、加字段: alter table 表名 ADD 字段名 类型; eg: alter table sys_cwzd ADD SCCLLJ VARCHAR2(50);   2、加备注: comment on column 表名.字段名 is '备注名'; eg: comment on column sys_cwzd.SCCLLJ is ...
  • 字段列表为: a varchar2(5) b char2(10) c number(2) 如果你想把变成 a varchar2(5) new_d varchar2(100) b char2(10) c number(2) 那么你需要: 1、这样创建一个: createtabletable2 ...
  • 用户提出要ME2N/ME2M/ME2W/ME3M里加EKKO/EKPO中没显示的字段: 1、现是结构MEREP_OUTTAB_PURCHDOC里APPEND字段就可以了。 SE11中显示结构:MEREP_OUTTAB_PURCHDOC,然后APPEND所需要的字段即可; 例如:我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,372
精华内容 6,548
关键字:

在表中加字段