数据库命名约定 --- 数据库结构命名

数据库设计:命名约定、主键、外键、索引与视图的最佳实践 本文详细介绍了在数据库设计中应遵循的命名约定,包括表名、列名、触发器、存储过程等的命名规则。强调了避免使用下划线和空格,推荐使用Pascal Case命名法。同时,对于主键、外键、索引、视图的设计和应用也给出了具体建议,旨在提高数据库的性能和可维护性。 阅读详情

 

  【标准1】数据库命名

     数据库的命名要求使用与数据库意义相关联的英文字母且以“DB_”打头,例如:客户资料数据库的命名可以是DB_Customer_Info。

 

    【标准2】数据库安全设计命名

数据库的安全性命名主要包括应用系统数据库的用户、角色和权限的分配和回收。

针对用户的命名必需以部门、岗位和用户名3个部分考虑,即以“DeptID_PositionID_StaffID”格式给出,其中:

DeptID为部门的代号或名称或名称简写

PositionID为岗位的代号或名称或名称简写

StaffID为用户的代号或名称或名称简写

针对角色的命名必需以应用系统管理员、机构岗位管理员(例如:处长、主任、班组长等)和具体的操作人员3个部分,因此,建议采用如下方式:

应用系统管理员的命名以“AppSA_”打头

机构岗位管理员的命名以“PosSA_”打头

具体的操作人员的命名以“AppUsr_”打头

针对权限的命名要求考虑开发环境和应用环境2个方面,可以视具体情况而制定其命名规范。

开发方面要考虑系统定义(DDL)和系统操作(DML)2个方面的权限。

应用系统要考虑对数据库对象(表空间、表、字段/域等)的访问和数据操作(SELECT、INSERT、DELETE、UPDATE等)的权限分配。

 

    【标准3】数据库日志设计命名

数据库日志的的命名建议以“DBName_LogName.log”格式给出,其中:

DBName为数据库名称

LogName为有意义的数据库日志名称

 

    【标准4】数据库配置设计命名

     数据库配置设计方案是以文件形式保存的,其内容是关于特定数据库的配置项目的具体值。

数据库配置文件的命名建议以“DatabaseName_AppName_CFG.TXT”格式给出,其中:

DatabaseName是数据库的简写,例如SYB表示SYBASE、ORA表示ORACLE、DB2表示DB2、SQL表示SQL SERVER等

AppName表示应用系统的名称或代号

CFG表示该文件是数据库配置文件

 

    【标准5】数据库复制与存储设计命名

     数据库复制与存储设计方案是以文件形式保存的,其内容是关于特定数据库之间的复制策略的具体细节。

数据库复制与存储设计文件的命名建议以“DbName_AppName_REP.TXT”格式给出,其中:

DbName是数据库的简写,例如SYB表示SYBASE、ORA表示ORACLE、DB2表示DB2、SQL表示SQL SERVER等

AppName表示应用系统的名称或代号

REP表示该文件是数据库复制与存储文件

 

    【标准6】数据库连接设计命名

     数据库连接设计方案是以文件形式保存的,其内容是关于特定分布式数据库之间的连接设计的具体细节。

数据库连接设计文件的命名建议以“DbName_AppName_DBL. TXT”格式给出,其中:

DbName是数据库的简写,例如SYB表示SYBASE、ORA表示ORACLE、DB2表示DB2、SQL表示SQL SERVER等

AppName表示应用系统的名称或代号

DBL表示该文件是数据库连接设计文件

 

1.1.2.            数据库对象命名

    【标准7】表空间

数据库表空间的命名遵循如下的格式:

 TBS_Servername_Function_SerialNumber

上面格式中:

TBS是必需具备的,表示该对象为表空间。

ServerName是数据库物理服务器的名称或名称简写。

Function是表示该表空间的作用

SerialNumber是具有该作用的数据库表空间的序列号

 

    【标准8】表

    1. 表的命名必须以TB(Table缩写)开头,加下划线(_),其后紧接与表意义相关联的英文字母,例如:TB_Customers。

    2. 关联表的关联域使用相同的命名方法,使各表之间关联关系显而易见。

 

    【标准9】字段/域

字段的命名必须以FD(Field 缩写)开头,加下划线(_),紧接与字段意义相关联的英文字母。例如: FD_Name。

 

    【标准10】索引

    针对数据库表中一个或多个字段建立的索引的命名规范可以如以下格式所定:

     IDX_TableName_ColumnName1_ColumnName2_…

上面格式中:

IDX是必需具备的,表示该对象为索引。

TableName是数据库表的名称或名称简写。

ColumnName1是数据库表中(第一个)索引字段的名称或名称简写

ColumnName2是数据库表中(第二个)索引字段的名称或名称简写

其他,有几个字段,就可以进行几个字段的名称或名称简写的追加

下划线 “_”可以考虑保留或删除

索引名的总长必需符合数据库的规定

 

    【标准11】视图

视图的命名必须以VW(View 缩写)开头,加下划线(_),紧接与视图意义相关联的英文字母。例如: VW_Sort_By_Name。

 

    【标准12】存储过程

存储过程的命名必须符合P_SubSystemName_DetailName格式,其中 P表示是存储过程,SubSystemName是子系统的英文简写,DetailName是与存储过程意义相关联的英文字母,例如:P_Query_Write_to_Disk。

 

    【标准13】触发器

 触发器(Trigger)的的命名必须符合TRG_SubSystemName_DetailName格式,其中TRG表示是触发器,SubSystemName是子系统的英文简写,DetailName是与触发器意义相关联的英文字母。

 

    【标准14】函数

 函数的命名必须符合F_SubSystemName_DetailName格式,其中F表示是函数,SubSystemName是子系统的英文缩写,DetailName是与函数意义相关联的英文字母,例如:F_Salary_Count。

 

MySQL数据库命名规范及约定 一、【操作规范】1. 如无备注,则表中的第一个id字段一定是主键且为自动增长;2. 如无备注,则数值类型的字段请使用UNSIGNED属性;3. 如无备注,排序字段order_id在程序中默认使用降序排列;4. 如无备注,所有字段都设置NOT NULL,并设置默认值;5. 如无备注,所有的布尔值字段,如is_hot、is_deleted,都必须设置一个默认值,并设为0;6. 所有的数字类型字段,都必须设置一个默认值,并设为0;7. 针对varchar类型字段的程序处理,请验证用户输入,不要超出其预设的长度;8. 建表时将数据字典中的字段中文名和属性备注写入数据表的备注中(“PK、自动增长”不用写 立即下载

相关推荐

光模块基础知识【快速入门】02

光模块是用于交换机与设备之间传输的载体,是光纤通信系统中的核心器件。主要作用是发射端将设备的电信号转换成光信号。 光纤通道光模块和以太网光模块 光纤通道光模块 光纤通道(FC, Fiber Channel)是一种高速网络数据传输协议。光纤通道协议可以有序无损地传输原始数据,它主要用于在数据中心、电脑服务器、交换机与存储网络中进行数据传输。 FC光模块遵循FC协议,充当着光纤通道系统之间的接口,也是光纤存储网络设备间的接口。它们主要用于数据中心的光纤通道存储网络链接中。 FC光模块具有小型化和低.

Jin Hanquan的博客 3万+

MySQL_数据库命名规范及约定

操作规范 如无说明,建表时一律采用innodb引擎; 如无说明,数据库表编码集(utf8,utf8_bin) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 如无备注,则表中的第一个id字段一定是主键且为自动增长; 如无备注,则数值类型的字段请使用UNSIGNED属性; 如无备注,排序字段order_id在程序中默认使用降序排列; 如无备注...

Bobit - 优快云博客 5544

深入解析Flex NOC总线驱动的实时带宽与延迟优化策略

本文深入解析了Flex NOC总线驱动的核心价值与优化策略。通过解读`/proc/noc/real_time`中的实时带宽与延迟数据,并结合`sysfs`接口进行动态QoS调优,可以有效解决芯片内部数据拥堵问题。文章以智能摄像头和算力盒子的实际案例,详细说明了如何通过优先级调整、带宽限制和参数优化,提升系统在复杂任务下的实时性与稳定性。

weixin_29289821的博客 284

Mysql 30条军规

一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数据字段必须加入中文注释 解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的 (4)禁止使用存储过程、视图、触发器、Eve...

dianfu2892的博客 221

手把手教你用GNU Radio和PlutoSDR搭建FM收音机(附完整流程图)

本文提供了一份详细的实践指南,教你如何使用GNU Radio和PlutoSDR搭建一个功能完整的FM收音机。从软硬件环境准备、核心流程图构建,到运行调试与效果优化,手把手带你完成从射频信号接收、下变频、FM解调到音频输出的全过程,是入门软件定义无线电(SDR)的绝佳实践项目。

weixin_29189377的博客 748

弹簧管压力表设计报告

精密机械课程设计 弹簧管压力表设计报告 2020年5月1日 目 录 第一章 设计任务概述... 3 1.1 课程设计目的... 3 1.2 设计任务... 3 1.3 技术指标... 3 第二章 压力表概述... 4 2.1 机械式压力表的组成部分... 4 2.2 工作原理... 4 第三章 压力表设计... 5 3.1 弹簧管参数设计... 5 3.2 曲柄滑块机构设计... ...

weixin_42163746的博客 6450

mysql 架构名_如何快速重命名MySQL数据库(更改架构名称)?

三国纷争对于InnoDB,以下内容似乎有效:创建新的空数据库,然后将每个表依次重命名为新数据库:RENAMETABLEold_db.tableTOnew_db.table;在此之后,您需要调整权限。对于shell中的脚本,可以使用以下任一项:mysql-uusername-ppasswordold_db-sNe'showtables'|whilereadtable;...

weixin_29432863的博客 383

PyTorch深度学习实战(36)——Pix2Pix详解与实现

Pix2Pix 是基于生成对抗网络的图像转换框架,能够将输入图像转换为与之对应的输出图像,能够广泛用于图像到图像转换的任务,如风格转换、图像修复、语义标签到图像的转换等。Pix2Pix 的核心思想是通过对抗训练将输入图像和目标输出图像进行配对,使生成网络可以学习到输入图像到输出图像的映射关系。在本节中,将学习使用 Pix2Pix 根据给定轮廓生成图像。

盼小辉丶的博客 1万+

MySql 数据库【数据库概述及数据准备】

数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。数据库管理系统:英文单词DataBaseManagement,简称DBMS。数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库中的数据进行管理(增删改查)。常见的数据库管理系统:MySql、Oracle、MS、SqlServer、DB2、sybase等…SQL:结构化查询语言。

是微风,是晚霞,是无可替代 436

【DexGraspNet与多指手抓取算法详解】第三章 DexGraspNet数据集构建机理

抓取姿态描述多指手与物体的相对空间关系,包含手掌位姿与手指关节配置。

VectorShift的博客 497

QT里获取UUID当做唯一文件名称

QT里获取UUID当做唯一文件名称

542

laravel学习笔记--数据填充

数据填充 Laravel 包含一个填充类可以为你的数据库填充测试数据,所有的填充类都放在 database/seeds 目录下。你可以随意为填充类命名,但是更建议您遵守类似 UserSeeder 的命名规范 编写 Seeders --填充文件 框架生成的 seeders 都放在 database/seeds 目录下 php artisan make:seeder UserSeeder seeder 类只包含一个默认方法:run 。 这个方法会在执行 db:seed 这个 Artisan 命令 时被调

小信的博客 278

基于 Qt C++ 的金融行情交易终端

由于完整的商业级源码非常庞大,我将为你提供一个 **结构完整、可直接编译运行的基础框架**,并详细说明各模块的实现思路和扩展方向。double波动 = quote.lastPrice * (rand()%200 - 100) / 10000.0;// 订单缓存(orderId -> Order)

寒寒豆豆软件公司的博客 191

SQL设计与命名规范

一.设计规范:        1.采用有意义的字段名:尽可能的把字段描述的清楚些(见名之意);        2.遵守数据库三范式(3NF)规定:                A:表内的每一个值都只能被表达一次;                B:表内的每一行都应该被唯一的标识(有唯一键);                C:表内不应该存储依赖于其他键的非键信息。       3...

best it kill 168

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

sql:命名管道管道程序_学习SQL:命名约定

sql:命名管道管道程序 A naming convention is a set of unwritten rules you should use if you want to increase the readability of the whole data model. Today, I’ll try to explain how you should formulate your...

culuo4781的博客 2207

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

开发设计

开发设计     1. 界面原型     2. 设计数据库     3. 确定架构     4. 使用什么样的约定         配置文件: 命名规范, 样式         页面命名         action命名         数据库表命名     1. 数据库命名:         1.1 原则: 简单         1.2 库名: 项目名       

sidiansh的专栏 348

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Sharepoint2007核心表结构

SharePoint 2007 Databases (Core Content Tables) The classic naming convention of SharePoint 2003 (PortalName_Prof, PortalNa

RainyLin-SunnyLin的专栏 1743

MySQL规范建表:从结构设计到性能优化的实践指南

在MySQL数据库开发中,“规范”是避免后期维护混乱、提升查询性能的核心前提。一张设计合理的表,不仅能减少数据冗余和错误,还能为业务增长提供稳定支撑。本文结合实际开发场景,梳理MySQL规范建表的15个核心要点,附实操代码示例,帮你避开常见坑点。

专注Java和MySQL领域知识分享 1032

.NET5.0 Code First 建立索引方法

Code First方式建立主键可以不需要注释,遵循约定即可,即属性为 Id、Id 、类名加Id都可以,这个很方便。其他的属性建立索引,原来的方式为属性上添加注释

luwq168的专栏 868

数据库结构命名规范

目    录... 3第一章         介绍... 41.      目的... 42.      范围... 43.      文档约定... 44.      参考文档... 4第二章         命名及设计规范... 51.         数据库表(Table)、字段(Field)命名及设计规范... 51.1        表命名规范... 51.2        列命名规范... 51.3        设计规范... 62.         存储过程(Procedure) 命名及设计

每天=生命的最后一天 2110

类词——我最喜欢的数据库列命名约定

类词本质上是一些关键词,我们将其附加到数据库列的名称上,以表明它们包含的数据类型。这种约定在数据的形式和功能之间架起了一座桥梁,使任何与数据库互动的人都能立即了解某一列所包含的信息。在本质上,使用类词是在数据库结构中嵌入一层语义清晰度。类词的美丽之处在于它们的简单性和传达意义的能力。例如,将_id添加到列名中表明该列是该实体的唯一标识符。同样,像_size_kb这样的后缀告诉你该列存储的是以千字节表示的数据大小信息。

龙哥盟 715

SQL 中命名约定的快速指南 - 第 1 部分

如果命名约定在特定情况下没有逻辑意义,请不要害怕放弃使用它。例如,如果我们有一个 product 和 invoice 表,并且我们想要指定哪些产品在哪些发票上,那么名称“invoice_item”可能比“invoice_product”或“invoice_contains_product”更有意义。

Navicat 官方账号 492

MySQL命名规范最佳实践:数据库、表、字段等命名规则与行业标准

本文系统介绍了MySQL数据库命名规范,重点涵盖数据库、表和字段的命名规则。主要内容包括:命名规范的重要性,MySQL官方命名规则,数据库命名最佳实践(小写字母、下划线分隔、环境标识),表命名原则(复数形式、关联表命名模式),以及字段命名规则(避免保留字、数据类型暗示)。通过具体案例展示了电商系统和微服务架构下的命名实践,提供了完整的SQL示例和代码分析,帮助开发者建立统一的命名标准,提升数据库设计的可读性和可维护性。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 926

MySQL命名艺术:打造高效数据库命名规范的终极指南

例如,在不同的表中使用相同的列名“id”,而没有上下文说明其具体指向,可能导致查询时的混淆。例如,如果不同开发人员使用不同的命名风格(如有的使用下划线分隔,有的使用驼峰命名),在后续修改或优化时很容易产生混淆。更严重的是,缺乏规范的命名可能隐藏潜在的设计缺陷,比如同名字段在不同表中表示完全不同的含义,这种歧义会在系统扩展时引发难以排查的问题。答:关键在于制定分层命名策略。例如,通过收集团队在使用命名规范过程中的实际数据(如常见错误类型、命名冲突频率等),系统可以自动识别规范的薄弱环节,并推荐调整方案。

zuiyuelong的博客 1169

Database-Naming-Convention 项目推荐

Database-Naming-Convention 项目推荐 1. 项目基础介绍和主要编程语言 Database-Naming-Convention 是一个专注于数据库命名规范和最佳实践的开源项目。该项目旨在帮助开发者遵循一致的数据库命名约定,以提高代码的可读性、可维护性和一致性。虽然该项目本身不涉及具体的编程语言,但其内容适用于多种关系型数据库(如 PostgreSQL、MySQL、Oracl...

gitblog_00351的博客 430
上一篇: Java 程序编码规范
下一篇: 谨以此文献给才毕业2--5年的朋友 [转]
ealpha
博客等级 码龄23年 1粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值