[データベース]標準化(標準化)
6529 ワード
このパブリケーションには、データベースの「正規化」(Normalization)が含まれています.
「組織と整理は巨大なテレスゲームのようだ」
--アレクサンドラ・コストロ
[Intro]
引き出しを整理するとき、電子機器は2番目の引き出しに入れます.
最初の引き出しに白いものを入れることにしたら
白い電子機器はどの引き出しに入れたらいいですか?
この現象をデータベースでは「異常現象」(Anomaly)と呼ぶ.
データの整合性を確保するために明確な基準を提供し、
データベースを標準化と呼びます.
[Anomaly異常現象]
이상 현상
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을
수행할 때 발생할 수 있는 부작용
종류
- 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
データベースの設計が正しくないと、不要な重複データストレージが発生する可能性があります.この場合、リソースが浪費され、運用上の予期せぬ副作用が生じる可能性があります.
Insertion Anomaly
: 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되어야 하는 경우
上図のように、表に値を入力したいのですが、これまでのレッスンでは
存在しない場合はありません.
新しいデータを挿入するには、次のコード名を入力します.
作り直す必要があります.これを「挿入」異常と呼びます.
Update Anomaly
: 중복된 튜플 중 일부의 속성만 갱신 시킴으로써 정보의 모순성이 발생하는 경우
519号の従業員が引っ越した後、木工の技能を身につけて新しい関連情報を入力すると、
アドレスが更新されていないと、「更新」またはそれ以上のバージョンと呼ばれるデータにエラーが発生します.
Deletion Anomaly
: 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
389号教職員の英語課程が廃止され、この課程が削除された場合、その教職員の名前と雇用日、
IDとともにパターン単位で連鎖して削除され、情報が失われる可能性があります.
これを「削除」例外と呼びます.
なぜこのような問題が発生したのでしょうか。
上記の異常は表設計が規範化されていないためである.データベース設計では、コードの再利用性とメンテナンス性を向上させるために、コードを符号化する際に興味点を分離するなど、同様の原則がデータベース設計にも適用されます.データベース設計では、コードの問題よりも、興味が分離されていないための問題がずっと深刻です.
理論的には,正規化には属性間の相関性を理解する必要がある.
これらのアトリビュート間の相関
함수적 종속성(Functional Dependency)
です通常、あるバージョンでは、
これにより、関数の依存関係が正規化されます.
[Purpose]
そのため、これらの異常を排除し、冗長データを最小限に抑えます.
正規化の目的といえる.また、データベース構造を拡張する場合、
クエリーを最小化し、複数の角度からクエリーをサポートできます.
[Target]
オンライン取引処理(OLT P)データベース、例えば大型オンラインチケットシステム.
CRUD(Create、Read、Update、Delete)は非常に多く、正規化に適しています.
逆に、分析レポートなどのデータベースのオンライン分析処理
分析とレポートに使用するため、半正規化を使用して演算速度を速めることをお勧めします.
반정규화 : 정규화된 시스템을 성능 향상 및 개발과 운영의 단순화를 위해 역으로 정규화를 수행하는 것.
일반적으로 Join을 많이 사용해야 하거나, 대량의 범위를 자주 처리하는 경우와
같이 Select 작업의 중요도가 높다고 판단될때 반정규화를 수행합니다.
[Step of Normalization]
正規化段階は大きく7段階に分けられる.
現実のほとんどのバージョンでは、BCNFを標準化すると
実際の異常現象がないため、BCNFは通常正規化される.
[Type of Key]
正規化を行う前に、後述する鍵のタイプについて簡単に説明します.
1.スーパーキー:一意性O/最小性X
[身分証明書番号、氏名]→🟢
名前→🔴
身分証明書番号→🟢
2.候補鍵(Candidate Key):一意性O/最小性O
簡単に言えば、いつでもプライマリ・キーになれるキーです.
ID→🟢
I-pin → 🟢
アカウント→🟠
テーブルがどのようなテーブルであるかは、候補キーであってもよいし、そうでなくてもよい.
(どのテーブルかによっては、ユニークかもしれないし、そうではないかもしれない)
ex)「顧客表」、「一意性満足/支払情報」表で同じ勘定科目を使用して複数の取引を行う
3.プライマリーキー(Primary Key):候補キーリストから選択したキー
1. Null(결측값)이 없어야함
2. 자주 변경되는 속성이 포함되어있으면 부적절
3. 가급적 단순한 후보키를 선택
4.外部キー:他のバージョンのプライマリ・キーを参照してください
1.第一正規化(1 NF)
バージョン内のすべての属性の値が
원자성(Atomic)
の場合、1 NFに属します.左側のバージョンは1 NFを満たしていません.興味は原子性ではなく複数の値を持つ
なぜなら.したがって,右側に示すように原子値を1番目の正規化に変更する.
2.第2正規化(2 NF)
リリース版が最初の一般的なフォーマットを満たし、プライマリ・キーではなく属性がプライマリ・キーに完全に依存していることを示します.
つまり,鍵でない列は鍵によって決まる.
部分関数依存
属性セットXのすべてではなく、属性セットYが関数依存であることを示す.
下図に示すように、学生番号とカリキュラム名がプライマリキー(Primary Key、以下PK)である場合、教室
PKに従属することもできますが、PKセクションの集合に従属するカリキュラム名(確定)から従属することもできます.
この場合,部分関数依存関係といえる.
*意思決定者、従属者
次の図に示すように、どの属性(キー値、矢印の始点)を決定するかを決定します.
意思決定者が意味を決定する属性を従属者と呼ぶ.
したがって、下図に示すように、すべての非プライマリ・キー属性がプライマリ・キーに完全に依存している場合は、2 NFに属する.
3.第3正規化(3 NF)
このバージョンが2 NFを満たし、依存関係が存在しないことを示します(<->直接依存関係).
動的従属関係:A->B、B->Cが成立した場合、A->Cが成立した関数従属関係を指す.
このような場合、501人の学生がデータベース課程をスポーツ経営学課程に変更すると、
2万の学費スポーツ経営学もちろん、カリキュラム名に基づいて
変更は可能ですが、2回の変更が必要です.こんな面倒.
問題を解決するのは3番目の正規化だ.
既存の表では、学生番号がカリキュラム名を決定し、カリキュラム名が授業料を決定します.この2つの関係は、次のように分けなければなりません.
4. BCNF(Boyce–Codd Normal Form)
プライマリ・キーは(学生番号、テーマ名)、教授は(学生番号、テーマ名)の完全な関数依存項目です.また、教授も講座の名称を決め、決定者の役割を果たしている.
次に、すべての意思決定者が候補鍵であることを確認します.(学生番号、テーマ名)はプライマリ・キーであり、もちろん意思決定者と候補キーである.ただし、教授は意思決定者であり、候補鍵ではないため、バージョンを上図と区別する必要があります.
ほとんどのバージョンでは、BCNFを標準化すると、実際の異常現象が解消され、BCNFが標準化されます。
[pros and cons]
正規化のメリットとデメリットは次のとおりです.
🟢 異常現象による問題を解決することができる.
🟢 ユーザーに標準化されたテーブルとテーブルの関係を提供できます.
🔴 複数バージョン間の演算(JOIN).
🔴 これにより、クエリの応答時間が遅くなる可能性があります.
[半正規化(De-normalization,非正規化)]
半標準化は、パフォーマンスの向上、開発、操作の簡素化のために、重複する標準化データベースを統合します.
データモデリング技術、例えば分離.
ディスクI/O数が増加したり、テーブル間のパスが遠すぎたりして、大量の結合が発生し、パフォーマンスが低下します.
必要に応じて、逆正規化を実行できます.通常、Selectの処理能力
これが重要だと思ったら、局所的などうせの規則化を考えます.
どうせ正規化された対象
共通テーブルにアクセスするプロセスが最も多い.
常に一定の範囲のみを表示している場合は、
テーブルに大量のデータがあり、頻繁に大量の範囲を処理している場合、パフォーマンスの問題が発生する可能性があります.
テーブルの結合が多すぎるため、技術的にデータのクエリーが困難です.
半正規化の欠点
[Summary of Nomalization]
Reference
この問題について([データベース]標準化(標準化)), 我々は、より多くの情報をここで見つけました https://velog.io/@jude0124/정규화テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol