iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >数据库设计中boolean类型怎么处理
  • 459
分享到

数据库设计中boolean类型怎么处理

2023-06-26 07:06:02 459人浏览 独家记忆
摘要

这篇文章主要介绍“数据库设计中boolean类型怎么处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“数据库设计中boolean类型怎么处理”文章能帮助大家解决问题。数据库的boolean值是一个令

这篇文章主要介绍“数据库设计中boolean类型怎么处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“数据库设计中boolean类型怎么处理”文章能帮助大家解决问题。

数据库的boolean值是一个令人头疼的问题,涉及到多方面的问题。

命名

数据库中的boolean字段,以什么方式命名?通常会要求boolean值以is开头,比如阿里的数据库设计规范强制要求boolean型以is_开头,比如is_deleted。这确实可以很直观的让人知道某个字段的类型,我也很喜欢这样。

但是命名不仅仅是在数据库里面,JavaBean里面如何命名呢?为了统一性(特别是使用工具从数据库生成Java类),JavaBean里的属性名应该和数据库字段名一致,当然是isDeleted。

那么问题来了,JavaBean的get、set方法如何写呢?如果用开发工具(如IntelliJ idea)生成,会是这样:

public class User {    private Boolean isDisabled;    public Boolean getDisabled() {        return isDisabled;    }    public void setDisabled(Boolean disabled) {        isDisabled = disabled;    }}

有些生成工具产生如下代码也不要奇怪:

public class User {    private Boolean isDisabled;    public Boolean getIsDisabled() {        return this.isDisabled;    }    public void setIsDisabled(Boolean isDisabled) {        this.isDisabled = isDisabled;    }}

如果使用原生类型boolean而非对象类型Boolean,则代码如下:

public class User {    private boolean isDisabled;    public boolean isDisabled() {        return this.isDisabled;    }    public void setDisabled(boolean disabled) {        this.isDisabled = disabled;    }}

再用jackson生成JSON,会是{disabled:false}或{isDisabled:false}。

于是数据库isDisabled,JavagetDisabled() isDisabled() getIsDisabled(),jsONdisabled isDisabled。是不是有点凌乱?

太混乱了,所以有很多开发规范里禁止JavaBean属性使用is开头。

数据库说要is开头,JavaBean说不要is开头,到底要不要?也许可以让数据库的字段用is开头,在JavaBean里则去掉is。这是一个办法,但从数据库自动生成JavaBean的时候,就要手动改了。而且JavaBean、JSON里都没有is开头,在数据库里又突然又有is开头,也是一种混乱。

最后的结论是,都不要is开头,且boolean型不能为空。JavaBean用原生类型boolean而不是Boolean。这样数据库disabled,JavaisDisabled(),JSONdisabled,这样就简单明了多了。

另:可为空的Boolean可以考虑用char(1),如性别(m:男,f:女,n:保密)。

数据库类型

虽然boolean型是sql标准的数据类型,但很多数据库都没有提供boolean类型,理由是这个数据类型太容易代替了,没有必要专门用一个数据类型。比如用char(1)或者int。

可代替是可代替,那实际使用中,怎么代替才是最佳实践呢?

Hibernate是这样处理的:

  • 使用数值型(如int或者tinyint),则0表示false,1表示true。

  • 使用字符型(如char(1)),则N/n表示false, Y/y表示true,或者F/f表示false, T/t表示true。

很显然使用数值型比较直观,毕竟和C语言的规则一致,计算机一贯的传统。

字符型则稍显混乱,当然字符型也可以用0和1,特别是在oracle中用char(1)比用number(1)更节省空间。char(1)占一个字节,number(1)占两个字节。在其它没有1字节的数值型数据库中,也是这样(如DB2)。

用char(1)还一个问题,就是数据库自动生成JavaBean时,无法判断是字符型还是boolean型。特别时字段不以is开头,就更无法自动判断了,这对自动生成代码很不友好。众所周知,自动生成代码在开发里面有着很高地位,没有人愿意把时间花在重复的、没有意义的事情上面。

MySQL中,有boolean类型,但这个类型是tinyint(1)的同义词,就是说boolean也是用数值存储的。

阿里的数据库设计规范也是要求使用tinyint(1)存储boolean类型。

数据库管理工具liquibase的规则是有boolean类型的直接用,没有的用bit或者数值代替:

MysqlDatabase: BIT(1)SQLiteDatabase: BOOLEANH2Database: BOOLEANPostgresDatabase: BOOLEANUnsupportedDatabase: BOOLEANDB2Database: SMALLINTMSSQLDatabase: [bit]OracleDatabase: NUMBER(1)HsqlDatabase: BOOLEANFirebirdDatabase: SMALLINTDerbyDatabase: SMALLINTInfORMixDatabase: BOOLEANSybaseDatabase: BITSybaseASADatabase: BIT

liquibase在mysql中使用BIT(1),没有直接用MySQL的boolean类型,这个有点奇怪,可能liquibase认为MySQL的boolean是假的(实际是tinyint(1)),还不如用BIT(1)。咱就不和数据库较这个劲了,直接用MySQL的boolean,数据库说啥就是啥,它总比我们了解它自己吧,总不能让我们吃什么大亏。

如此看来,并不好逆流而动用char(1)作为boolean。至少看在代码自动生成的份上,开发环境上用数值做boolean(一般是MySQL,直接用bool类型,数据库自动转为tinyint(1))。生成其它数据库脚本时,如果为了方便(char(1)所有的数据库都有)或者节省存储空间,将boolean转成char(1)也许不是什么大问题(mybatis会映射成BIT类型,不知能否操作char(1))。

关于“数据库设计中boolean类型怎么处理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 数据库设计中boolean类型怎么处理

本文链接: https://www.lsjlt.com/news/307579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库设计中boolean类型怎么处理
    这篇文章主要介绍“数据库设计中boolean类型怎么处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“数据库设计中boolean类型怎么处理”文章能帮助大家解决问题。数据库的boolean值是一个令...
    99+
    2023-06-26
  • Oracle数据库中怎么处理NVARCHAR2数据类型
    在Oracle数据库中,NVARCHAR2数据类型用于存储Unicode字符数据,其中每个字符占据两个字节的存储空间。要处理NVAR...
    99+
    2024-04-02
  • Typescript中boolean类型怎么用
    这篇文章主要为大家展示了“Typescript中boolean类型怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Typescript中boolean类型怎...
    99+
    2024-04-02
  • oracle中boolean类型怎么赋值
    在Oracle数据库中,并没有原生的boolean数据类型,通常使用数字或者字符类型来表示布尔值。常见的做法是使用NUMBER类型,...
    99+
    2024-03-02
    oracle
  • mysql中clob类型数据怎么处理
    在MySQL中,CLOB(Character Large Object)类型数据通常指代文本类型数据,例如长文本、大段文本或者大型文...
    99+
    2024-04-09
    mysql
  • 怎么在mysql中返回Boolean类型
    今天就跟大家聊聊有关怎么在mysql中返回Boolean类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql返回Boolean类型第一种情况,直接返回select&...
    99+
    2023-06-15
  • PostgreSQL中怎么处理JSON和XML数据类型
    在PostgreSQL中,可以使用JSON和XML数据类型来存储和操作相应格式的数据。 处理JSON数据类型: 创建JSON类型的...
    99+
    2024-03-12
    PostgreSQL
  • Java中如何使用Apache库处理数组数据类型?
    Apache是一个非常流行的开源软件基金会,提供了许多优秀的库和工具来处理各种数据类型。在Java中,我们可以使用Apache库来处理数组数据类型。在本文中,我们将介绍如何使用Apache库来处理数组数据类型,并提供一些示例代码。 一、A...
    99+
    2023-11-03
    数据类型 数组 apache
  • 数据库中有什么数据类型
    小编给大家分享一下数据库中有什么数据类型,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!数据库的常用数据类型有哪些?一、 整数数据类型:整数数据类型是最常用的数据类型之一。  1、...
    99+
    2024-04-02
  • 数据库中Decimal类型怎么使用
    数据库中的Decimal类型是一种精确的十进制数类型,用于存储需要保留小数位数的数值。在大多数数据库管理系统中,Decimal类型通...
    99+
    2023-08-14
    数据库 Decimal
  • MyBatis中怎么使用TypeHandler处理特殊数据类型
    在 MyBatis 中使用 TypeHandler 处理特殊数据类型的步骤如下: 创建一个自定义的 TypeHandler 类,继...
    99+
    2024-04-08
    MyBatis
  • Oracle数据库中NVARCHAR2类型怎么使用
    NVARCHAR2是Oracle数据库中的一种数据类型,用于存储Unicode字符数据,支持多种语言和字符集。以下是关于如何在Ora...
    99+
    2024-04-02
  • mysql数据库中Decimal类型怎么使用
    今天小编给大家分享一下mysql数据库中Decimal类型怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 背景数字...
    99+
    2023-06-29
  • MariaDB中如何处理JSON数据类型
    在MariaDB中,JSON数据类型可以用来存储和查询JSON格式的数据。要处理JSON数据类型,可以使用各种函数和操作符来操作JS...
    99+
    2024-04-09
    MariaDB
  • Laravel中如何处理Python数据类型?
    Laravel是一款流行的PHP框架,而Python则是一种强大的编程语言。在一些项目中,Laravel和Python可能需要进行数据交互和数据处理。那么,Laravel中如何处理Python数据类型呢?本文将为您详细讲解。 Pytho...
    99+
    2023-10-19
    数据类型 数组 laravel
  • redis数据库是什么类型数据库
    redis 是一种键值存储数据库,用于存储和检索键值对,并提供基于内存的高速数据访问,但易失性。此外,它还提供数据结构多样性、原子性、持久性(可选)、发布/订阅和事务等独特功能。 Re...
    99+
    2024-04-02
  • mongodb数据库是什么类型数据库
    mongodb是一个文档型数据库,它以文档导向的数据模型、灵活模式和可扩展性而闻名,适用于处理大量非结构化或半结构化数据,如社交媒体数据、物联网传感器数据、电子商务目录和媒体内容。 M...
    99+
    2024-04-02
  • 怎么理解MYSQL数据类型存储中数值型
    怎么理解MYSQL数据类型存储中数值型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。探索MYSQL 数值类型的存储,以及解读方...
    99+
    2024-04-02
  • 数据库怎么查询date类型的数据
    要查询date类型的数据,可以使用以下方法: 使用日期函数进行查询:可以使用日期函数(如YEAR、MONTH、DAY等)来获取特定...
    99+
    2023-10-24
    数据库
  • navicat怎么看数据库表的数据类型
    直接查看表结构:1. 打开 navicat 并连接到数据库,2. 在对象管理器中找到目标表,右键单击并选择“查看数据表”,3. 在“表结构”选项卡中查看“数据类型”列。使用 sql 查询...
    99+
    2024-04-24
    navicat
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作