精华内容
下载资源
问答
  • 本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。 适宜读者人群 MongoDB开发者 基础需求 产品: “我们要为现有的表单增加一个伟大的功能, ...
  • Mysql字段设计

    2014-03-07 15:41:25
    Mysql字段设计
  • 关于图书馆的底层数据框架,包含了用户,图书,功能,等一系列表格
  • 数据库字段设计

    千次阅读 2020-09-30 16:46:28
    不同的关系型数据库在字段类型的具体化上差异较多,这里无法一一详述,但具体化的字段类型再多,无外乎几种:字符、数字、日期、二进制。 B.不为空设默认值 表中应该尽可能避免可为NULL的列,且尽可能显示设置...

    A.字段类型介绍

    不同的关系型数据库在字段类型的具体化上差异较多,这里无法一一详述,但具体化的字段类型再多,无外乎几种:字符、数字、日期、二进制。

    在这里插入图片描述

    B.不为空设默认值

    表中应该尽可能避免可为NULL的列,且尽可能显示设置默认值,尤其是被索引的列。

    为什么?

    在MySQL数据库中,空值是不占用空间的,而NULL其实是占用空间的。再者,MySQL表的列中包含NULL的话,该列就不会包含在索引中,也就是说使用索引是无效的,现在不确定其它数据库是否也是如此。所以考虑今后可能会使用索引的字段,就要设置字段属性是NOT NULL。比如,如果某个字段后面可能会作为查询关键字使用LIKE的形式进行搜索,就要将该字段定义成索引以提高查询速度,那这个字段属性就是NOT NULL的。

    除以下数据类型的字段外:timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary,表字段应尽可能显示设置默认值。建议数值型的默认值为数值0,布尔型的默认值为数值1(通常情况下,系统中所有逻辑型中数值0表示为“真”、“正常的”;数值1表示为“假”、“异常的”,这种编码后面还会有介绍),datetime、smalldatetime类型的字段没有默认值,必须为NULL。

    如果数据库中某个字段有默认值,那么觉得在程序开发过程中,对应实体类的属性应该设置同样的初始化值才合理,记得动软代码生成工具中的框架就是这样设置。之前自己的程序设计中没有注意到这点,自动生成的所有实体类的属性都没有默认值。

    注意区分NULL和空字符串是不同的,数值型字段中NULL和0更是两码事。如果在数据库设计过程中不允许出现NULL字段还好,但如果有允许NULL而没有设置默认值的字符型字段,程序对记录执行了写空字符串动作和压根未执行写动作是两码事;如果有允许NULL且设置默认值为空字符串的字段,则无法做这种区分。当然,通常情况下,我们认为文本框中空字符串的提交动作等同于未执行写入。有些类似的情况是,在程序开发中,一个空的List对象,或者一个new出来的空对象,和NULL也是不同的,要注意。

    像订单(会诊单)这种表,取消、退回、安排这些字段的信息都不是必须有的,可以分流到子表中存储,放在一张表中会导致出现很多可为NULL或空值的列。之前并不赞成这种过分分流的方法,因为这会另信息的维护变得麻烦,如再有类似情况,应该根据实际综合判断取舍。也要在设计时尽可能遵守第二、三范式,非主属性完全依赖于码(主键)、消除传递依赖,不要让某张表过分臃肿。

    C.类型长度设置

    当字段定义为字符串类型时建议使用varchar而不用nvarchar以节省空间,通常情况下,都要用尽量少的存储空间来存储一个字段的数据,能用int类型的就不用char类型,能用char类型就不用varchar类型,能用varchar(20)的就不用varchar(25)。char和varchar长度设计需要根据业务实际需要进行长度控制,禁止预留过长空间。比如主键要求用UUID,那就统一为char(32),可以固定的部分就都固定下来。varchar类型虽然根据实际长度进行存储,但内存分配则是根据指定长度,不合理的长度设计会导致内存的不合理占用。

    varchar是变长存储,字段长度是数据库一种约束,定义合理的长度也可以让人容易理解字段的用途。MySQL中定义的长度如果小于255,字段长度用1个字节表示,如果超过255,字段的长度将固定用2个字节表示。Oracle没有这样的问题。字段定义的长度对索引也有较大影响,MySQL数据库索引存储的长度都是定义的长度,不是实际字符的长度,这是一个非常大的问题,估计主要原因是为了实现简单,所以MySQL在索引上会浪费大量的空间保存字符串。

    前台、程序以及数据库各部分之间对字段大小的限制务必处理恰当,为了节省存储空间,选取的数据库字段容量在一定范围内应该尽可能小,而为了对程序提供更好的扩展支持,又应该尽可能的设置大些,具体字段类型、字段长度如何设置,根据实际情况取得均衡。而后台程序部分,对数值大小长度应该做好校验处理,确保插入数据库的值大小长度不要超过限制。同时前端也应该给出明确的校验提醒,让用户按提示输入,决不允许不提醒用户而擅自把数据处理后插入数据库中(这种错误真有人犯过)。这样,前端、程序、数据库全方位校验处理,自然可以保证数值的准备性、存取的合理性。

    除非要保存文章内容,text字段尽量少用,如果要用能拆到冗余表中最好。禁止使用blob类型保存大文本、附件、图片等,对于图片、文档等附件数据库中只保留原始文件名和存储路径。网上也有建议使用其他存储方式的,比如TFS、SFS等,可以参考。

    禁止使用float、double类型,建议使用decimal替代。decimal(a,b),a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从0到a之间的值。默认小数位数是0。比如decimal(5,2)规定了存储的值将不会超过5位数字,并且小数点后面有2位数字。

    D.Oracle的CLOB

    在Oracle中,CHAR为定长字符串,最长2000字节。VARCHAR2为变长字符串,最长4000字节。NCHAR和NVARCHAR2分别与CHAR和VARCHAR2相对应,但存储的数据为NLS字符。

    目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是Oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将数据库中VARCHAR类型的列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

    在Oracle中没有TEXT类型,但有用于大文本存储的CLOB类型。Clob是指大字符对象,也就是英文Character Large Object的缩写;Blob是指二进制大对象,也就是英文Binary Large Object的缩写;由此可见这两个类型都是用来存储大量数据而设计的。

    LONG最大存储2G字符数据,但现在已不推荐使用(改用CLOB);CLOB在Oracle 9i及以前,最大可存储4G字符数据,在Oracle10g及以后,最大可存储4G*数据库块大小的字符数据;NCLOB基本同CLOB,就是存储的数据为NLS。

    在Oracle数据库表中使用CLOB类型字段,最大的问题是备份数据时不好处理。在有些情况下,给政府、企业做项目,只给你Oracle的访问权限,而不给你Oracle所在服务器的操作权限,也就是说自己无法操作Oracle服务端工具。但Oracle的客户端中又没有exp、expdp命令,这样备份导出数据库就不好弄了(此处不提沟通协调甲方处理)。SQL Developer是Oracle的官方工具,用其导出数据库,如果导出的是SQL格式,那CLOB类型字段的数据将直接被忽略——这绝对是无法接受的。官网上有文章说可以将数据库导出为loader或pdf格式,自己尝试导出这两种格式,发现不能导出成单个文件,会导出很多的文件。而且导入时也需要用到额外的工具——Oracle服务端的sqlldr.exe,这样只借助客户端也是不行的。

    在SQL Developer“工具”菜单下,还有两个选项:“数据库Diff”及“数据库复制”,如果所处网络可同时访问源数据库和目标数据库,可用这种方法互相拷贝数据,但是同样的问题,这种数据库复制方法,仍然是不能处理COLB、BLOB的字段。而且我发现,凡是带有这两种字段的表,在复制时都没有数据,不是相应字段没有数据、是整个表的数据都没有复制,其它没有BLOB、CLOB字段的表,数据拷贝都正常。

    也曾想使用的PL/SQL Developer工具进行备份,导出了PL/SQL Developer自己的格式(pde)。可是却提示stream read error,到网上一查,原来PL/SQL Developer自己的格式也是不支持COLB、BLOB类型字段的导出的。

    之前同事介绍过Navicat for Oralce工具,但其在导出CLOB、BLOB类型的字段时,如果字段中的数据过长,也是无法再正常导入的。这个小工具看似简单轻巧,在执行一些操作时问题却很多,不宜作为一款常用的Oracle管理工具。

    这样看来,只有expdp命令才能有效导出clob、blob格式的字段了。

    不过,如果你虽然没有源数据库服务端的访问权限,却有目标数据库服务端的访问权限,且两个库可在一个网络中访问,也是有办法用EXP命令备份源数据库的。就是让目标数据库服务端的TNS监听源数据库的实例,再利用目标数据库Oracle服务端的exp.exe工具远程导出源数据库,导出导入命令和上面类似:

    此外,用PL/SQL Developer工具备份数据时,Export User Objects菜单命令导出的是SQL文件,在这里你可以将建表、序列、触发器、存储过程等的SQL语句全部导出成一个文件,但是这里面并不包括数据。要想导出数据,必须用Export Tables……菜单命令,导出DMP文件。当然也可以导出其它格式的文件(SQL、PDE),但建议用DMP格式,因为前面已经说过,如果表中有CLOB类型字段的话,用其它格式的导出方式恐怕有问题。

    如果一个表不存在,而这个表中没有CLOB、BLOB这种特殊数据类型的字段,用DMP导入数据时PL/SQL会自动建立这个表。但如果一个表不存在,而这个表中又有CLOB、BLOB这种特殊字段,直接导入DMP格式的文件会报错IMP-00003:遇到ORACLE错误959。所以在Oracle中导入数据库时应该先执行用Export User Objects导出的SQL文件,这样相关的序列、触发器、表结构都已经建好了,再导入用Export Tables……导出的DMP文件,也就是导入其中的数据,就万全了。

    E.数值类型选择

    float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)

    double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)

    decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

    float和double的相乘操作,数字溢出不会报错,会有精度的损失。当对decimal类型进行操作时,数值会因溢出而且报错。

    Oracle中的数值类型,Oracle只是在语法上支持decimal类型,但是在底层实际上它就是NUMBER类型,支持decimal类型是为了能把数据从Oracle数据库移到其他数据库中(如MySQL、DB2等)。Oracle的NUMBER数据类型的精度:NUMBER(P,S),P:1—38,S:-84—127。S代表的是小数位数,P代表的是总位数(整数位数和小数位数)。所以,平时如果在Oracle中用自增主键,长度设为NUMBER(10)的话,相当于NUMBER(10,0),表示最高可记录到十亿级的数据量。

    下图是MySQL中的整数型数值类型详述:

    F.通用字段处理

    日期时间类型字段,网上有建议,采用int来记录unix_timestamp,自己还是习惯用datetime。不过设计原则是粒度越小越好,所以这里要求日期时间类型的字段,尽可能精确到时分秒,用datetime类型。即便是像生日(birth_date)这种字段,一般只存储到年月日,但在选择字段类型时建议还是用datetime而非date,以防万一。如有部分时间字段着实无须记录到时分秒,则用date类型。严禁使用varchar等字符串类型记录日期时间,更不要把时间猜分,年在单独的字段、月在单独的字段、日又是单独字段,老实讲TM想不明白这种人的设计思路是什么样的。

    网络IP字段,网上有建议,除特殊情况一律用bigint来记录inet_aton值,但这种存储方式貌似只在MySQL中适用,这里要求还是用varchar存储。关于inet_aton想了解的话可以看下参考文献中的“MySQL的IP处理函数inet_aton()和inet_ntoa()”。

    字典编码字段,之前在SQLServer中设计数据库时统一使用char(2)类型,Oracle数据库中统一使用number(2),在MySQL中统一使用tinyint(2)。现在想来最合理的还是设置为tinyint(2),以后数据库字典编码字段统一按此设置。就是Oracle中没有tinyint类型,不知道如果在PD中设置此种类型,导入到Oracle时会自动转换处理还是直接报错。

    备注字段,尽可能在所有表中都保留这个字段,也是给前端信息录入预留一个可扩展部分。统一命名为remark,字段类型为varchar(200),最多100个中文字符。再多的话说明有额外信息,就不适合放在备注字段中了,要再加新字段存储。

    排序字段,不是每个表中都需要额外的排序字段,但有些表这必须有,比如记录菜单信息的表、门户网站中存放文章内容的表等。这里推荐统一使用int(10)做为所有表中的排序字段类型。

    字段设置部分撰述内容较多,相对详细,这是比较重要的一部分。以后的数据库设计,字段类型选择、字段长度设置部分都要以此为依据。

    展开全文
  • 数据库设计——多选状态字段设计

    千次阅读 2018-09-04 00:39:00
    在做公司的算法分析相关项目时,遇到分析状态这个字段存在多种分析算法对应的状态,并且是多选的。这样讲起来有点抽象,由于项目保密问题,也不能细讲。换个通俗的例子来说明这个问题。 例如:某个商家支持多种会员...

    没人对你说「不」的时候 你是长不大的。——《战争与和平》

    1、引言

    在做公司的算法分析相关项目时,遇到分析状态这个字段存在多种分析算法对应的状态,并且是多选的。这样讲起来有点抽象,由于项目保密问题,也不能细讲。换个通俗的例子来说明这个问题。

    例如:某个商家支持多种会员卡打折,如金卡、银卡、其他卡,多选状态。通常的做法是在商家表中建立三个字段,

    gold_card(tinyint类型,0,支持;1,不支持)silver_card(tinyint类型,0,支持;1,不支持)other_card(tinyint类型,0,支持;1,不支持)

    这种用多个字段满足多种状态方案的确满足了项目需求,但是存在两个缺点,
    (1)增加了数据字段冗余和增加存储空间;
    (2)可拓展性差,比如增加一种钻石卡,只能在数据库中,增加一个字段,这样多项目改动是较大的。

    基于此问题,本文探索多选字段的设计。

    2、多选字段设计解决方案

    2.1 字符串表达

    这是我最开始的想法,这种方法就是将多个状态标识字段通过字符串拼接表示成一个字段。如:

    card_status(varchar,1表示金卡;2表示银卡;3表示其他卡;)
    // 字符串拼接表示多选,如1,2表示支持金卡,银卡;1,2,3表示都支持。。。

    这种方法的好处是
    (1)消除冗余状态字段;
    (2)增加可拓展性,增加新的会员卡类别时,不需增加新的字段,增加一种新字符就行。

    但是在开发时,发现查询的时候就特别麻烦,比如:我想查询支持银卡的商家,首先我们遍历整个数据库,然后对状态字符串进行分隔。最后才能查询。

    同时字符串类型的字段在查询效率和存储空间上不如整型字段。

    这种方法解决了设计的字段冗余和可拓展性问题,但是在查询上效率较低。

    在这里,有其他更好的解决方案吗?有,二进制位来表示。

    2.2 “位”表示

    二进制的“位”本来就有表示状态的作用。在这里,采用不同的位表示卡支持状态,例如:

    card_status(int)
    1(0001):表示支持金卡;
    2(0010):表示支持银卡;
    4(0100):表示支持其他卡;
    3(0001+0010=0011):表示支持金卡、银卡;
    5(0001+0100=0101):表示支持金卡、其他卡;
    7(0001+0010+0100=0111):表示支持所有卡;

    如果想拓展增加一种卡,则用8(1000)表示,再增加一种则用16(10000)表示。

    当想查询时,通过位的与运算即可以查询出想要的数据:

    // 查询支持银卡打折的商家信息:  
    select * from seller where card_status & b'0010'  
    或者:  
    Select * from seller where card_status & 2  

    这种方式解决了前面的三个问题:
    (1)无字段冗余,节省存储空间;
    (2)可拓展性强;
    (3)查询效率高。

    展开全文
  • 自定义字段设计思路

    千次阅读 2020-12-27 20:45:24
    起因 目前在做一个校园ERP项目,模块中基本都涵盖列表、详情、编辑页面,为了减少前端团队的重复开发任务与重复代码,提出了通过系统配置每一种单据的字段,还能满足用户定制化。 设计思路 ...

    起因

    目前在做一个校园ERP项目,使用React技术栈。每个模块基本都涵盖列表、详情、编辑页面, 虽然已经封装好组件,可快速搭建页面,但每个组件还是需要硬编码配置,以实现业务逻辑。
    为了减少前端团队的繁琐写配置任务,想设计出通过管理员自行配置每一种单据的字段,还能满足用户定制化需求。

    设计思路

    因为已经封装好组件,每个组件传递特定的参数即可自动渲染,所以基本思路就是

    系统字段 + 自定义字段 => 处理程序 => 生成配置 => 塞给组件渲染
    

    定义字段

    整个单据需要用到的字段分为系统字段自定义字段,系统字段是根据表结构定义的,自定义字段则是用户可以随意新增。
    首先需要拿到数据字典,毕竟要偷懒到底,硬编码是不可能硬编码的,项目中使用的GraphQL,可以很方便取到所有数据字典(没有的话想办法让后端提供😄)。
    自定义字段定义的格式最好与系统字段保持一致,这样前端也就不用关心是什么字段,统一处理,更加方便。
    在这里插入图片描述

    设计自定义表

    思维导图,仅供参考
    在这里插入图片描述

    字段类型

    字段类型基本有这么几种:

    • 文本需要考虑长度问题
    • 数值需要考虑整数、小数精度,最小最大值
    • 日期考虑日期或日期范围,是否有不可选择的日期
    • 布尔值
    • 引用引用其他表的数据时,需要考虑数据权限,数据是否停用等规则

    规则

    定义字段的规则,如

    • 是否必填
    • 是否有默认值
    • 是否禁用
    • 是否显示
    • 计算结果
    • UI,如宽度

    字段间的关联规则,可以通过事件与值来匹配,这些规则只能保存为json,需要前端自己考虑好结构。
    部分字段还有特殊的规则,不能通过配置项来控制,那么还需要能通过前端代码来最终控制。

    模板定义

    我们有了数据字典后,最终这一单据使用哪些字段,字段显示顺序、样式等,均是用户自行决定了。
    在这里插入图片描述

    hook实现

    因为使用的React,所以自然使用了自定义hook,直接定义一个函数也可以。
    首先显示哪些字段,一定是根据模板定义,其次为了保证兼容性,硬编码的配置信息应该覆盖自定义配置,最终得到的配置数据,还可由前端代码最终控制,以处理特殊逻辑。

    fields = pipe(
    		  模板定义决定显示,
    		  根据字段定义规则,硬编码规则优先,
    		  特殊规则处理,
    		)(数据字典)
    

    引用类型字段因为要引用其他表的数据,肯定需要发送请求,这时候我们可以根据定义好的数据字典,根据引用的表、字段名、过滤条件,自动生成查询的graphql,发送请求。

    在这里插入图片描述
    至此,基本的实现思路就得手了。

    其他问题

    • 引用类型因为需要发送请求,一旦字段多,返回的数据量多,必定会比较慢,影响用户体验,需要对数据做缓存处理。
    • 定义字段规则时,需要小心死循环的逻辑,比如字段A发生改变时修改字段B,字段B发生改变时修改字段A。

    关于缓存的问题,之后再新写一篇博客详细说明吧。

    结尾

    目前实现这套系统后,已经完全解放前端定义模块单据的工作任务,直接由后端或用户定义;也满足了用户未来自定义字段的需求。这篇博文并没有特别详细描述整个实现步骤,如有问题,欢迎留言讨论,共同学习进步。

    展开全文
  • 数据库表扩展字段设计

    千次阅读 2020-08-18 18:28:55
    该扩展字段表的思想就是将列设计转化为行设计字段的增加表现为记录的增加。当然这种方式也不是万能的,对于需要排序、查询和索引的字段最好还是通过添加表字段的方式增加。 字段名称 数据类型 属性 允许...

    一、扩展字段表

            一个表的字段可能并非一成不变,系统的运行、需求的变化等客观条件可能会需要增加其他字段,如何在不直接修改表设计的前提下满足需求呢?该扩展字段表的思想就是将列设计转化为行设计,字段的增加表现为记录的增加。当然这种方式也不是万能的,对于需要排序、查询和索引的字段最好还是通过添加表字段的方式增加。

    字段名称数据类型属性允许空默认值备注
    ext_idint (4)PK    AI  扩展字段编号
    ext_guidchar (36)  newid()扩展字段GUID
    ext_tablevarchar (50)  ''扩展字段关联表名
    ext_codevarchar (50)  ''扩展字段编码
    ext_namenvarchar (100)  ''扩展字段名称
    ext_descnvarchar (200)  ''扩展字段描述
    ext_orderint (4)  0扩展字段序号
    ext_necessaryint (4)  0扩展字段是否必需
    ext_data_lenint (4)  0扩展字段数据长度
    ext_data_typevarchar (50)  ''扩展字段数据类型
    ext_form_typevarchar (50)  ''扩展字段表单类型
    ext_form_urlvarchar (300)  ''扩展字段数据来源URL
    ext_data_regexvarchar (100)  ''扩展字段正则表达式
    ext_data_tipvarchar (100)  ''扩展字段提示
    ext_stateint (4)  1扩展字段状态

    表1:base_extension(扩展字段表)

    二、扩展字段值表

            上述方式实现的字段的动态增加,那字段的值该如何保存呢?当然通过另一个新表来存储。

    字段名称数据类型属性允许空默认值备注
    prop_idint (4)PK    AI  属性编号
    ext_codevarchar (36)  ''扩展字段编码
    ext_guidvarchar (36)  ''扩展字段GUID(冗余)
    ext_tablevarchar (50)  ''扩展字段表名(冗余)
    object_guidvarchar (36)  ''对象GUID
    prop_valuenvarchar (4000)  ''属性值

    表2:base_property(扩展字段值表)

    三、综述

            比如一个商家表,设计之初已添加商家编号、商家GUID、商家名称、商家地址、商家电话等字段,后期又需要增加营业时间、所在区域、商家优惠说明等扩展字段,使用上述两个表可以提升系统的可扩展性和可配置性。

     

    文章来源:https://blog.csdn.net/joeries/article/details/78657568

    https://segmentfault.com/a/1190000020190093?utm_source=tag-newest

    https://www.cnblogs.com/jpfss/p/8989191.html

    展开全文
  • 最近在做订单及支付相关的系统,在订单表的设计阶段,团队成员就‘订单状态’数据库字段设计有了一些分歧,网上也有不少关于这方面的思考和探讨,结合这些资料和项目的实际情况,拟对一些共性问题进行更深一层的思考...
  • 关于数据库冗余字段设计的利与弊

    千次阅读 2020-03-16 14:37:18
    其实在数据库设计方面,对于冗余字段设计,网上也是褒贬不一的。通过资料的查询,大致有以下两个方向: 1、支持冗余字段设计 引入冗余字段设计,能够减少表关联,使用SQL查询的时候执行效率更快,特别是在...
  • NULL 博文链接:https://iamzhongyong.iteye.com/blog/1888934
  • ElasticSearch添加表,字段设计

    千次阅读 2018-08-02 13:32:04
    curl -XPOST 'localhost:9200/index/aatype/_mapping?pretty' -d '{  "aatype": {  "properties": {  "id": {  "type": "long"  },  ...
  • 其实 从 个人的角度来看,, 都...但是看了一些 文章,说 如果 字段 加了索引,或者 以后 有可能会 加索引,, 对于 MySQL 的 字段来说, 应该是 不能 null 的 ,不仅仅是 效率 和性能问题,,,而且 还有着 查询...
  • 数据库字段设计之流程与状态

    千次阅读 2016-12-14 22:22:13
    数据库是动态网站开发不可缺少的一部分,当实际的业务步骤较复杂时,我们可以使用Status来表示业务进行到了哪一阶段,进而控制其整个流程。Status表示业务所处阶段的状态,而流程中的每个步骤通常表示某个动作,两者...
  • 谈谈数据库的字段设计的几个心得

    千次阅读 2014-02-18 00:19:19
    数据库的字段设计有很多细节性的技巧,下面将过去在开发中体会到经验整理出来,做个备忘。 tinyint 是-128到128 。当属性设置为unsigned的时候。最大值就是255了。现在知道为什么需要设置为unsigned属性了。原来...
  • 数据库表扩展字段设计思路

    千次阅读 2014-03-30 19:34:01
    1:什么是扩展字段? 某张表中的字段为基本属性,某个系统在不同用户不同场合可能需要其他的属性。   2:扩展思路 扩展原则:扩展字段的使用是用户级别的,即在不改动系统程序的条件下进行扩展。 数据...
  • 数据库字段设计的一些建议

    千次阅读 2020-02-27 11:27:59
    在数据库设计的时候,将几张表之间,有所联系的字段通过类似但不同的扩展来设计。基于一个规则,这个规则可以满足数据表之间不通过外键的联系。
  • mysql数据库设计文档-导出字段设计

    千次阅读 2020-10-15 10:30:01
    COLUMN_NAME 字段名称, COLUMN_TYPE 字段类型, IF ( IS_NULLABLE = 'YES', '是', '否' ) 是否可为空, IF ( COLUMN_KEY = 'PRI', '是', '否' ) 是否主键, COLUMN_COMMENT 字段注释 FROM INFORMATION_SCHEMA....
  • 数据库冗余字段设计作用

    千次阅读 2018-03-20 16:53:26
    设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段,外键除外 ——以上是我自己给出的定义 2.冗余字段应用场景 ...
  • 数据库字段动态扩展设计

    万次阅读 2016-11-18 02:16:33
    最近讨论数据库有关产品方案的项目自动扩展问题,即每个方案都有多个项目,而每个方案的项目或多或少,也有不一样的,方案以后也坑能随之增加新的项目。因此需要数据库设计一套可扩展的方案。
  • 设计中冗余字段的思考

    千次阅读 2018-04-22 15:18:41
    设计数据库时,某一个字段属于一张表,但它同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 随着企业数据量与并发量不断的增加,冗余字段的存在到底是...
  • 数据库设计字段冗余

    千次阅读 2020-08-26 13:36:16
    本文将给大家介绍一种常见的、违反范式的数据库设计方案——字段冗余 1 经典示例 先来看一个经典的例子,在一些商城系统里,要显示已购买的订单,一般会显示订单号、下单时间、订单金额、商品名称等,如下图。 ...
  • 1.默认为NULL的话,判断时用必需用 field IS NULL 才可以判断到。  如果设置默认值中,判断时要用 field='默认值' 就可以判断。 2.在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计...
  • ![图片说明](https://img-ask.csdn.net/upload/201711/02/1509588853_748930.jpg) 在高性能mysql这本书中,建议用timestamp来存储,但是一般场景中都是用int(11)来存储,请问这个该怎么理解?
  • 自定义字段设计与实现(Java实用版)

    万次阅读 多人点赞 2017-04-12 18:13:37
    自定义字段又叫做“开放模型”,用户可以根据自已的需求,添加需要的字段,实现个性化定制。 如现有一套CRM系统,客户模块中客户信息,需要实现不同行业,不同业态都可以个性化需求。那我们知道客户信息表T_CUSTOM,...
  • 1.数据库设计14规则 1. 原始单据与实体之间的关系   可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。  在特殊情况下,它们可能是一对多或多对...
  • MySQL 数据表设计 关于金额字段属性

    千次阅读 2020-05-20 18:06:41
    在开发过程中,难免触及到关于金额的项目,这时候,数据表的设计就得注意了,金额的字段属性的给予,需要多加注意,不然容易出错。 先介绍下以下三种属性: float:浮点类型,数值范围为-3.4E38 ~ +3.4E38(也就是7...
  • 、老外都是驼峰,基本没有下划线; 他们的_ 是to的意思,从什么到什么的意思。。看你应用环境吧 ;下划线支持者:更优雅主要看习惯,以及应用环境...
  • 首先数据库设计Sort字段字段默认值0. 然后查询的时候根据字段的降序排序。假如想对哪条数据进行上升排名只需要往对应的sort字段插入当前的时间戳。 假如想让第一名变成第四名,这时候优势就显示出来了。只需要拿到...
  • 管理员或指定权限的用户成功登录后,进入【平台管理】 > 【字段选项管理】> 【系统字段列表】,在此界面管理、添加、删除等功能操作,此功能将可以改变界面上所显示的各个标签信息,请根据企业自身需求进行修改,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 625,102
精华内容 250,040
关键字:

字段设计