设计数据库时,字段“是否可用”该取什么英文名?研究active/enable/state/progress的区别

news2024/9/22 10:07:50

一条记录发布后,除了删除状态,还存在可用、不可用状态(并非审核状态),那么这个字段在数据库中该取什么名字呢?先告诉结果:使用active英文单词衍生出的is_active

在这里插入图片描述

表可用

  • active - 意为活跃或生效的。一个active的记录表明该信息是可用的。
  • enabled - 意为已使能或启动的。一个enabled的记录表示该信息已经激活。
  • available - 意为可用或可取得的。一个available的记录表明该信息可以使用。
  • usable - 意为可使用的。一个usable的记录说明该信息是有效并可以调用。

这4个单词的含义很相似,都可以表达数据是否可用的概念。
所以在数据库表设计中,你可以根据情况选择其中一个作为布尔字段的名称:

  • active (例如:is_active BOOLEAN)
  • enabled (例如:is_enabled BOOLEAN)
  • available (例如:is_available BOOLEAN)
  • usable (例如:is_usable BOOLEAN)
    这样一来,当这个布尔值是true时,就表示这条记录是可用的;当为false时,这条记录则不可用。

active

在数据库设计中,使用is_active 表示某条记录的激活状态,而不是is_activate。

其中有几个主要的原因:

  1. active 是形容词,表示"处于活跃状态" 的意思。适合用来描述一个状态。
    而activate 是动词,表示"使某物激活"的行为。不太适合用来描述一个状态。
  2. is_active 表示"是否处于活跃状态",更加传达某个状态。
    而is_activate似乎表示"是否正在被激活",不是很清楚它传达的是当前的状态,还是某个动作。
  3. active 在信息技术领域中已经成为了一个非正式的术语,表示某物的激活状态。
    is_active 已经作为一个非正式的术语常见于代码和数据库中,使用更加贴切。
  4. 某个记录的激活状态是一个boolean值,使用is_active更加简单明了。
    而is_activate则带有一定的模糊性,不太适合表达一个boolean状态。
  5. 使用active描述状态已经成为了一种习惯,程序员更易理解is_active表示某条记录是否处于激活状态。

总的来说,is_active 表示"某记录是否处于激活状态" 这个意思更加直接和贴切;

is_activate虽然看似语义相近,但还是不太适合表达boolean状态,且相对不常见。

对数据库记录的可用状态,使用 is_active 字段比较好,理由如下:

  1. active 读起来不够明确,is_active 一看就知道是记录的可用状态。
  2. is_ 开头表示是一个布尔类型的字段,这是编程中的通用约定。
  3. 与数据库记录相关的其他布尔状态字段也可以统一使用 is_xxx 的格式,如 is_deleted, is_valid 等,保持字段命名的一致性。
  4. 一些 ORM 和框架也推荐使用 is_xxx 的命名格式来表示布尔字段,使用这种风格可以获得更好的框架兼容性。
  5. 使用 is_active 字段,与代码中的变量名和方法名语义一致,如 record.is_active()、if(record.is_active) 读起来很自然。
  6. 一些数据库管理工具也用 is_ 前缀来表示布尔字段,使用 is_active 提高了跨平台的一致性。
    所以,在设计数据库时,表示记录可用状态的字段,建议使用 is_active 比较妥当,既符合编程约定,也提高了代码和数据库的可读性。

那么is_active、isActive、isactive用哪个呢?还是is_active,理由如下:

  1. is_active 遵循了较为通用的 snake_case (下划线分隔式)命名约定,即用小写字母和下划线来命名。
  2. snake_case 命名约定常被用于数据库命名,可以保持代码和数据库的一致性。
  3. 一些数据库管理工具也采用 snake_case 命名,使用 is_active 有利于保持跨平台的统一性。
  4. snake_case 命名也被许多编程语言和框架采用,有利于后续的代码开发。
  5. isactive 和 IsActive 分别是 camelCase 和 PascalCase 命名法,不太适合数据库字段的命名。
  6. is_active 中的下划线也更易于阅读,明确分隔开变量的两个词。
    综合考虑,我建议使用 snake_case 命名法,采用 is_active 作为表示数据库记录是否可用这个布尔字段的最佳命名。这可以保持编程和数据库命名的一致性。

enabled

表示数据库记录是否可用这个状态时,最好的选择是is_active。

主要有几个原因:

  1. Active是一个比较普遍的词汇,表达的含义比较直接。表示某物是处于活跃状态。
  2. 在编程语言和IT领域中,active已经成为一个比较通用的术语,表示状态。程序员比较易于理解。
  3. 与enable相比,active不仅可以表示可用,还可以更深层次地表示某物的生命状态。即使未被使用,只要没被标记为inactive,仍然可以认为是active的。
  4. 与enabled相比,active更贴切数据库表行为。独立存在的表记录确实处于一个活跃状态。
  5. is_active仍然比较简洁,不失数据库设计的初衷。语义比较丰富。

而enable和enabled则存在一些局限性:

  1. 需要被激活才能工作, thresholds 更高。
  2. 避免出现多个enabled但实际只有一个active的情况。
  3. 字段名称相对复杂,语义上容易隐去「活跃」的状态。

所以综上,表示数据库记录是否可用这个状态时,我个人比较推荐使用is_active。
它不仅可以解决当前的需求,同时也考虑了扩展和未来可能出现的情况。
希望这能回答您的问题,至少可以给出参考。如果您仍然有任何疑问,欢迎提出,我会尽量给出帮助。

表状态

state

在数据库设计中,可以用state来替代is_active,表示记录的状态。
state和active意思类似,都可以表示"状态"。

  1. state VARCHAR(50)
    然后在这个VARCHAR字段中,用’active’ 和 ‘inactive’表示是否激活。
    这样可以存储更多状态,不仅仅是’active’和’inactive’。
  2. state BOOLEAN
    直接用BOOLEAN字段表示。
    当状态为true时,表示激活;为false时表示未激活。
    这是最简单直接的方式。

两种方式各有利弊:

  • state VARCHAR方式:
  1. 可以存储多种状态,不仅仅是’active’和’inactive’
  2. 可读性更好,直接看字段名和值就知道状态是什么
  3. 使用性更强,可以有多个状态值,不仅仅是布尔值
  • state BOOLEAN方式:
  1. 最为直接和简单,直接根据BOOLEAN值判断状态
  2. 占用空间小,效率高
  3. 更加通用,方便和其他系统交互
    所以总的来说,你可以根据实际情况选择使用state VARCHAR 还是 state BOOLEAN,来表示记录的激活状态。
    is_active其实是一种比较固定的命名习惯,冗长一些,state更加通用。

两种方式都有它的优缺点,最主要的是能清楚明确地表达记录的激活状态。
在很多情况下,都可以使用state来替代is_active表达数据库表中记录的激活状态。
用state具有以下几个优点:

  1. 更加通用。state可以表示记录的任何状态,不仅仅限于激活状态。
  2. 不需要前缀。state本身已经表达了意思,省略is_*可以使字段名更简洁。
  3. 更贴切数据库。state更符合数据库表的本质,即一个记录的某个状态。
  4. 便于扩展。如果将来该字段需要表示更多状态,state可以很好扩展。

一些使用state作为布尔字段的示例:

CREATE TABLE users (
   id INT,
   name VARCHAR(30),
   state BOOLEAN
);
CREATE TABLE orders (
   id INT,
   user_id INT,
   state BOOLEAN  
);

但是is_active也有它的优点:

  1. 更明确。它直接表明记录的激活状态,不易产生歧义。
  2. 更常见。is_active是 IT 领域一个比较常见的非正式术语,可以减少理解障碍。
  3. 语义更加丰富。is_active为这个字段添加了更多上下文信息。
    所以总的来说,如果你希望数据库表更加通用和简洁,state会是一个不错的选择。
    但如果你的主要需要表达记录的激活状态,并希望字段更易理解,那么is_active依然是一个不错的选择。
    两者各有优劣,具体选择应考虑你的使用场景和扩展需求。

state字段可以表示记录的各种不同状态,不仅仅限于激活状态。一些其他常见的状态有:

  • 已完成(complete): 表示某项任务或订单已完成。
  • 待处理(pending): 表示还有事项等待处理。
  • 已关闭(close):表示一个账号、项目等已关闭。
  • 正常(normal): 表示在正常工作状态。
  • 异常(abnormal): 表示存在异常情况。
  • 已删除(deleted): 表示该记录已被标记为删除。
  • 审核通过(approved):表示已通过审核。
  • 审核中(reviewing):表示正在审核中。
  • 禁用(disabled):表示已被禁用。

等等,甚至可以是一些自定义的状态:

  • 未开始(unstarted)
  • 进行中(in_progress)
  • 待付款(awaiting_payment)
  • 已付款(paid)
  • 已取消(canceled)
    等等, 通过state字段可以清晰地表达任何一种状态。

state字段的优点在于:

  1. 字段名本身就表示记录的状态。
  2. 不需要前缀或后缀。
  3. 表明这是一个可扩展字段,可以表示多种状态。
  4. 字段类型可以是布尔、数值或字符串,取决于状态的多少。
    所以state字段是一个非常通用且灵活的表达记录状态的数据库字段。

progress

state和progress在很大程度上是相似的, progress也可以用来表示数据库表记录的状态。

二者的相似之处在于:

  1. 都可以表示记录处于某种状态。State表示的更广泛,progress针对任务等进度方面。
  2. 都不需要前缀,field 名本身就表达了信息。
  3. 都可以扩展性,表示多种状态,取决于需要。
  4. 都可以使用数字或字符串来表示复杂的多状态情况。

差异在于:

  1. State更多地描述记录的总体状态。而Progress更侧重于某个任务或过程的状态。
  2. State的状态更多与静态属性有关。Progress更侧重动态地描述任务完成度。
  3. State更广泛,可以指任何事物的状态。Progress专门用于表示进度,或者说过程中的状态。
  4. State使用布尔值更多。Progress使用数字值表示百分比进度或阶段。

所以,可以说State利用database model 的方式,Progress使用JIT 执行中update 的方式。

总的来说,两者的区别主要在于:

  • State 更多的是描述记录的总体属性状态
  • Progress 更侧重于记录某个正在进行的过程中的变化状态
    所以你可以根据场景自由选择把数据库字段命名为 state 或者 progress。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java经典面试题下包含答案

21.String、StringBuffer和StringBuilder的区别是什么? 线程安全: String中的对象是不可变的,线程安全StringBuffer对方法加了同步锁,所以是线程安全的StringBuilder没有对方法加同步锁,所以是非线程安全的 使用效率…

【STM32单片机】STM32控制SG90舵机的PWM部分参数的设置解答

STM32控制SG90舵机的PWM部分参数的设置解答 一、舵机控制要知道的知识二、PWM的参数要怎么计算1、为什么要分频呢?2、为什么选择TIM_OCMode_PWM1呢? 每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请…

论青春线上书屋的设计与实现(论文+源码)_kaic

目 录 摘 要 III 第一章 绪论 1 1.1本课题研究背景与意义 1 1.2本课题国内外研究现状 1 第二章 开发技术介绍 3 2.1JDK的安装与配置 3 2.2HTML技术 3 2.3MySQL数据库管理系统 4 2.4JDBC的使用 4 第三章 系统分析 5 3.1系统的设计要求 5 3.2系…

交通 | 动态设施选址问题

论文解读 陈迎新,柯斯琪,曲晨辉,张景琪 编者按 本次解读的文章是Transportation Science 2017年的 《在日益增长的市场中,动态设施选址问题的连续逼近方法》(Wang, X., Lim, M. K., & Ouyang, Y. (2017). A conti…

空元素不占用位置处理

一. 问题场景&#xff1a; 如果将一个元素的CSS设置为margin-right: 10px&#xff0c;即使这个元素为空&#xff0c;那么这10px依然存在&#xff0c;效果如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

【编译原理】词法分析程序设计(C语言)

目录 一、实验内容二、实验原理三、结果分析四、源代码一、实验内容 给定下表所示的一个简单语言的词法规则描述完成以下任务: (1)画出识别该语言词法规则的状态转换图; (2)依据状态转换图,设计并编制词法分析程序,实现从输入源程序中,识别出各类单词,即关键字、标识…

打工人如何利用自动化实现职场突围

作为优秀的打工人&#xff0c;如果可以将办公中的重复性、繁琐性、低效性工作自动化&#xff0c;那么将省去许多日常工作。许亚宁就是这样一个优秀的打工人&#xff0c;善于使用各类自动化工具来提升工作效率&#xff0c;上周的直播他分享了如何利用自动化工具&#xff0c;实现…

设计原则-依赖倒置原则

如同人体结构一样&#xff0c;项目代码也是需要有结构的&#xff0c;如原子逻辑块(不可再分代码块)、方法、类、模块等。结构要么是由成熟的框架搭建起来&#xff0c;要么自己手动划分&#xff0c;但是都需要保证下层模块的变动时不会影响上层模块。注意&#xff1a;这里所说的…

missing-semester————2

文章目录 shell 脚本赋值语法函数逻辑运算符命令替换进程替换通配 shell工具查看命令如何使用查找文件查找代码查找shell指令 shell 脚本 很多情况下需要执行一系列的操作并使用条件或循环这样的控制流。 大多数shell都有自己的一套脚本语言&#xff0c;包括变量、控制流和自…

006-Logstash、FileBeat、ELK整合详解

目录 ELK架构背景需求架构logstash核心概念配置文件结构插件Codec Plugin-Multiline输出&#xff1a;elasticsearch输入&#xff1a;jdbcGrok插件Grok语法 mutate插件Date插件 Logstash Queue Beats配置步骤 ELK整合步骤1&#xff1a;日志采集步骤2&#xff1a;配置Logstash接收…

ChatGLM2体验+ubuntu18.04LTS+CPU版本

ChatGPT在自然语言处理领域的表现让人振奋&#xff0c;开启了大模型在通用人工智能领域的大门。 许多工作随之跟进&#xff0c;并开源&#xff0c;凭借相对小的参数量达到近似GPT的效果&#xff0c;包括LLama&#xff0c;alpace等。 其中LLama训练语料主要选择英语&#xff0…

Docker内部工作原理:容器化背后的魔法

Docker内部工作原理是怎样的&#xff1f; 现在我们知道了Docker是什么以及它提供了哪些好处&#xff0c;让我们逐个重要的细节来了解。 什么是容器&#xff1f;它们是如何工作的&#xff1f; 在深入研究Docker的内部机制之前&#xff0c;我们首先要了解容器的概念。简单地说&am…

在工作与生活中保持情绪稳定的艺术

强烈的情绪波动&#xff1a;工作中的挑战 在我的职业生涯中&#xff0c;我经历过许多情绪波动的时刻。其中一个最具挑战性的时刻是在我负责一个重要项目的时候。我需要在短时间内完成大量的工作&#xff0c;同时还要管理一个由不同背景和技能的人组成的团队。这个项目的压力让…

leetcode-704. 二分查找

leetcode-704. 二分查找 文章目录 leetcode-704. 二分查找一.题目描述二.第1次代码提交(非二分查找)三.第2次代码提交(非二分查找&#xff0c;std::find和std::distance)四.第3次代码提交(二分查找)五.关于C中int型的奇数除以2 一.题目描述 二.第1次代码提交(非二分查找) clas…

Openlayers实战:drawstart,drawend 绘制交互应用示例

Openlayers地图中,绘制一个多边形是非常见的一个应用,涉及到交互会在绘制开始 drawstart 和绘制结束drawend时,通常会在绘制完成后取消继续绘制,然后提出feature的一些信息。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代…

B066-基础环境-前后端整合 批量删除 下拉 级联 增改

目录 批量删除页面调整普通属性的新增和修改引用属性的新增和修改管理员下拉列表部门树 见文档与代码 cd 子项目 运行前端项目 页面布局分析 批量删除 点击多选 - 改变data - 点击批量删除 - 带参数发请求 页面调整 略 普通属性的新增和修改 新增按钮&#xff1a;点击…

【MySQL系列】在Centos7环境安装MySQL

「前言」文章内容大致是在Centos7环境安装MySQL&#xff0c;演示安装的版本为5.7 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「句子分享」 浮生梦&#xff0c;三生渺渺&#xff0c; 因缘无踪&#xff0c;虽堪恋&#xff0c;何必…

回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测&#xff0c;CNN-GRU结合…

Vision Transformer(VIT)论文解读及实现

1 论文解读 paper&#xff1a;VIT 1.1 VIT模型架构如下图所示&#xff1a; 图片原始输入维度 H * W * C在H和W按像素P切分&#xff0c;则H 、W可分割为 NPP, NHW/(PP)&#xff0c;N为输入transform序列的长度。 x ∈ R H ∗ W ∗ C > x ∈ R N ∗ P 2 ∗ C x \in R^{H*W…

第三章 SSD存储介质:闪存 3.1

3.1 闪存物理结构 闪存芯片从小到大依此是由&#xff1a;cell&#xff08;单元&#xff09;、page&#xff08;页&#xff09;、block&#xff08;块&#xff09;、plane&#xff08;平面&#xff09;、die&#xff08;核心&#xff09;、NAND flash&#xff08;闪存芯片&#…