検索
ホームページデータベースmysql チュートリアル关于数据库的变更设计的思考随笔

关于数据库的变更设计的思考随笔

Jun 07, 2016 pm 03:35 PM
について変化考えるデータベース構造デザイン

11数据库中表结构的变更总是一件让人感觉不舒服的事情。 在新增加字段时,如何对以前的操作不产生影响或者将影响降至最低呢? 一种方法:直接在表上增加一个字段,给该字段设置一个默认值,该默认值用于标记以前的数据,然后用新的值来标记以后的数据。 如果

11数据库中表结构的变更总是一件让人感觉不舒服的事情。
在新增加字段时,如何对以前的操作不产生影响或者将影响降至最低呢?
一种方法:直接在表上增加一个字段,给该字段设置一个默认值,该默认值用于标记以前的数据,然后用新的值来标记以后的数据。
如果说是标记的话,那么为什么不在设计的时候就专门建立一个字段,来作为数据的版本标识呢?
但是问题好像没有这么简单,比如:在His系统的设计中,有关科室人员的设计,在最基础的版本中,只需要有科室人员的姓名,登陆密码,编号,所属科室等信息就够了。但是如果医院领导要求在更大的范围内对医院进行信息话的管理,那么在科室人员数据的设计上,就要再增加新的内容,比如:出生日期,家庭住址,学历,职称,是否是党员等等,这些数据该如何处理呢?是重新设计数据库吗?

在设计数据库的时候,里面的数据流程也是数据的生长轨迹,可否专门对生长轨迹进行处理来简化数据流程的处理呢?
用流程数据来代替标记数据。
如:chufang_mx表中,bz为标记该处方的状态:1-划价,2-收费,3-取药,4-退药,5-退费审核,6-退费。
用流程数据表示:建立一个用于维护处方数据流程的表chufang_lc(chufangid, hj,sf,qy,ty,tfsh,tf),每完成对该处方的处理,就将对应的流程数据置为1。作为流程,只要判断当前流程是否处理及上一流程是否处理,就可以知道是否可以处理当前流程。这样就可以轻松维护数据流程了(我现在实在厌烦在数据库的设计文档上标记各种状态值的含义,还有就是判断当前的处理是否满足流程要求,有没有跨过流程处理的可能性。)

对于以上设计,按照数据库的设计原则,可以设计为两个表:流程记录表(流程记录id,流程描述),流程记录明细表(流程记录id,流程记录序号,流程步骤描述,流程执行标记(布尔值)),这两个表中的数据和业务数据对应。
再加上两个流程维护表:流程信息表(流程id,流程描述),流程信息明细表(流程id,流程序号,流程步骤描述)

对于流程维护表,其信息也可以将其绑定于处理这些数据对象上,因为同一个数据集,其处理对象不同,就意味着其处理流程不同,并且可以为处理对象的各个方法标上流程中的处理序号,这样就可以轻松判断处理对象上的某个方法当前是否可以处理他对应的数据了。

对于流程,为什么不直接在设计某个实体的时候,直接给他加上流程编码呢?比如给处方表加上lc,那么定义:lc=1时,处方划价;lc=2时,处方收费。这样也可以体现流程信息。

经过几天这几天的思考,发现同一个数据,在系统流程的不同环节,对其的描述不一样.这就有一点像在现实生活中,对同一个人,处于不同环境的其它人对它的描述肯定不一样。而对于这个描述,其特征应该是复合的,即对于这个人的描述是综合了这个人的一个或者多个特征的组合来完成的。比如说:老师说小明是一个好学生,那么老师说这句话的时候,老师的大脑里一定出现了小明平时的几个特征:上课专心听讲,积极发言,认真完成作业等等。而小明的妈妈说小明是一个乖儿子,妈妈在说这句话的时候,大脑里出现的是小明的其它特征:有孝心,成绩好,能够体谅妈妈等等。这就说明,一个对象在对另一个对象进行处理时,是综合了它的特征的。那么就是说,对象应该有一个它的特征列表,这个特征列表是这个对象在处理中的前提。
呵呵,这个好像有点像游戏设计了。其实在处理商业逻辑中,也应该是这个道理。把那些分散的标记管理起来,然后对商业的逻辑对象进行处理。

根据以上思路,必须在系统中注册各个对象的描述,这些描述是系统数据处理的依据,它对了对象的特征集,而对象的每一个特征都有相应的处理方法。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。Apr 19, 2025 am 12:24 AM

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

MySQL対その他のプログラミング言語:比較MySQL対その他のプログラミング言語:比較Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLの学習:新しいユーザー向けの段階的なガイドMySQLの学習:新しいユーザー向けの段階的なガイドApr 19, 2025 am 12:19 AM

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版

SublimeText3 中国語版

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

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール