数据库表的命名规范

Jun 07, 2016 pm 04:04 PM
名前 名前 成し遂げる データベース モジュール テーブル名 仕様

1.表名一般以【模块名称_具体表名】来实现,同一个模块的前缀是一样的。(Oracle大小写敏感,在SQL中可以不用_,因为可以用大小写一起的写法。这也是可以的) 2.表名称不应该取得太长(一般不超过三个英文单词,不推荐使用中文拼音,总的长度不要超过30个

1.表名一般以【模块名称_具体表名】来实现,同一个模块的前缀是一样的。(Oracle大小写敏感,在SQL中可以不用"_",因为可以用大小写一起的写法。这也是可以的)

2.表名称不应该取得太长(一般不超过三个英文单词,不推荐使用中文拼音,总的长度不要超过30个字符)。表名使用英文的原因,有些项目有英文版的需要,或者这个项目是给外国做的时候,使用英文是基本的要求,应该说这是一个习惯问题,多学一点英文也不是坏事 3.不使用tab或tb作为表前缀(本来就是一个表,为什么还要说明)。 4.一些作为多对多连接的表,可以使用两个表的前缀作为表名:如:用户登录表User_Login,用户分组表User_GroupInfo,这两个表建立多对多关系的表名为:User_Group_Relation(关系统一用Relation)。注意一点,主键在做其他表的外键时,或者在被其他表引用时,字段说明和字段名尽量保持一致,比如发帖表BBS_Topic里的用户字段写成UI_ID,这样跟用户信息表User_Info的主键UI_ID保持一致,看起来舒服,对应关系很明确,也不容易错,前后不一致时容易令人费解。 5.当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。如地区、系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。一般数据库中,都有一个数据字典表,用来保存系统所用到的基础数据,大型的字段表如省份城市区域的字典表,统一以Dictionary_作为前缀。 6. 与字段有关,默认的一些特殊字段, 很多表中,  比如一些业务处理表中,除了添加生成的自动编号ID(一般作为主键用),该记录创建的时间CreateDate(创建时间),该记录的创建人CreatBy(注意这里,没UI_ID(用户信息表User_Info的主键UI_ID),因为还有修改人),最后修改人LastEditBy,最后修改时间LastEditDate。(这些可以直接使用中文字符,而不使用编码,提高查询的效率)  同时有的时候需要注意,删除的时候并不真的删除该记录,而是添加一个标识位,比如XX_DeleteStaus删除状态。1是有效的,0则是无效的。 7.在命名表时,用单数形式表示名称。例如,使用 Employee,而不是 Employees。 8.数据库中应建立这样一个表,就是数据库本身的字段信息,表的说明,也就是数据库设计文档的一个表,方便查询使用,有什么不明的可以直接从数据库查询,数据库文档丢失,注释丢失,都可以重新起作用。 9.每个表都应该有一个主键,这个主键最好是数字,而且是递增的,有很多表的主键用32位字符编码,这样做的目的更多的是从安全考虑的。因为字符多时索引时效率低,而使用自增列也不是很少,比如添加主表和从表操作时,主表的主键是从表的外键,这个时候还有取返回值,然后再添加,不可以同时添加。主键可以用自定义的规则,大部分用MAX(ID)的做法,也可以自定义一个序列表,有点像序列,或者用时间的年月日秒具体到毫秒。关于列的命名,建议对数据类型也做一些规范,因为很容易确定,只有四种主要类型:数字,字符,时间,逻辑值,这些在类型上和长度上都可以定好规范,统一起来。 10.操作日志表,登录日志表,这是数据库中必备的两个表,这个记录也需要做进一步的保存。这个有两种情形,一是具体到单个字段的操作日志,二是整个表的操作日志。

常见的几个表具体说明:操作日志表Sys_OperateLog、登录日志表Sys_LoginLog、

           系统字典表Sys_Dictionary、系统字典表类型Sys_DicType

操作日志表Sys_OperateLog
中文名 字段名 注释
操作日志编号 OL_ID 索引列,日志的编号
操作类型 OL_Type 是添加,修改,删除,查询等类容(可放在通用字典表)
操作模块 OL_Module 操作模块,比如新闻模块,关联的是菜单表编号
操作内容 OL_Content 操作了什么内容,越具体越好(修改前、修改后)
操作人 UI_ID 用户的信息
操作时间 OL_AddDate 日志记录创建时间
操作IP OL_IP 操作人的IP地址
备注信息 OL_Remarks 备注信息,一些其他的需要说明的信息

这样的一个操作日志比较笼统,不是能具体到具体的字段值更新,如果要具体到某个具体值的更新,则需要设计新的数据库

一般情况下需要这样几个表,系统中可能已经有了,但是我们拿到我们自己的数据库中来,一个是数据库列表的表(就是数据库中有几个表)(编号,创建时间,创建人,修改时间,修改人,表名,注释,是否删除),然后就是数据库表下面的字段类型(编号,创建时间,创建人,修改时间,修改人,字段名,字段类型,字段精度,字段说明,字段注释,表的编号),也就是字段列表,这时的日志操作表可以这样设计(编号,表名,被修改的字段名,修改前值,修改后值,操作人,操作时间,相关模块,操作IP) 这种能记录修改记录,但是添加和删除时记录就不是很方便控制了。 

登录日志表Sys_LoginLog
中文名 字段名 注释
登录日志编号 LL_ID 登录的日志编号
登录人 UI_ID 登录人
登录时间 LL_AddDate 登录时间
登录IP LL_IP 登录的IP地址
登录状态 LL_Status 登录是否成功的标识位
登录浏览器 LL_Browser 登录浏览器
登录分辨率 LL_Resolution 登录的屏幕分辨率

还有一个就是数据字典表,我看过很多的数据库设计,类型表一个接一个,没有放在一起,还有的干脆写在注释里,有的根本就没有,这样某个程序员走了,这个字段就没人知道了,即使没走,自己也有可能时间长了忘掉,所以,见一个基础数据字典表的作用非常重要,其他的比如地区表(Sys_DicArea),汉语拼音表(Sys_DicCharacter)(用来汉字和拼音的转换)因为数据量较大,单独建表。这里介绍通用的数据字典表。

系统字典表Sys_Dictionary
中文名 字段名 注释
字典编号 SD_ID 字典的编号,可以直接使用此主键编码(注意删除时的关联关系)
字典类型 DY_ID 字典类型的ID,需要建立字典类型表,因为放的是所有的字典表
字典编码 SD_Code 字典编码,支持自己编码(同一类型是唯一的,一般是整数型
字典中文名称 SD_Name 字典中文名称(比如男女,比如状态,可以放在字典表里,作为查看依据)
字典备注 SD_Remarks 字典备注,字典需要一些备注信息
创建人    
创建日期    
修改人    
修改日期    
系统字典表类型Sys_DicType
中文名 字段名 注释
字典类型编号 DT_ID 字典的自动索引号
字典类型名称 DT_Name 字典类型的中文名称
字典的备注说明 DT_Remarks 字典使用的备注说明
字典状态 DT_Status 字典是否删除,不在使用

最后补充一些内容,一般设计数据库是这个样子的,但是不排除有些特殊的情形,为了数据的保密性,数据库的表名和字段名都是一些看似毫无意义的字符数字,比如Table1,Col1,但是有一个表是说明表,或者有对应的数据库文档设计。

补充:一些列说明了单位类型,可以在设计数据库的时候表明,比如HeightIncm, WeightInKg.这样一目了然。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

C++ 関数の命名におけるパラメーターの順序に関する考慮事項 C++ 関数の命名におけるパラメーターの順序に関する考慮事項 Apr 24, 2024 pm 04:21 PM

C++ 関数の名前付けでは、読みやすさを向上させ、エラーを減らし、リファクタリングを容易にするために、パラメーターの順序を考慮することが重要です。一般的なパラメータの順序規則には、アクション-オブジェクト、オブジェクト-アクション、意味論的な意味、および標準ライブラリへの準拠が含まれます。最適な順序は、関数の目的、パラメーターの種類、潜在的な混乱、および言語規約によって異なります。

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 Mar 27, 2024 pm 05:21 PM

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。

See all articles