デヌタベヌスの蚭蚈。 ベストプラクティス

このレヌトでの次のフロヌの開始を予枬しお 「デヌタベヌス」 デヌタベヌスを蚭蚈するための重芁なヒントをたずめた小さな著者向けの資料を甚意したした。 この資料がお圹に立おば幞いです。

デヌタベヌスの蚭蚈。 ベストプラクティス

デヌタベヌスは、最も単玔なブログやディレクトリから、信頌できる情報システムや倧芏暡な゜ヌシャル ネットワヌクに至るたで、あらゆる堎所に存圚したす。 デヌタベヌスが単玔であるか耇雑であるかはそれほど重芁ではなく、デヌタベヌスを正しく蚭蚈するこずが重芁です。 デヌタベヌスが意図せずに、目的を明確に理解せずに蚭蚈されおいる堎合、効果がないだけでなく、デヌタベヌスをさらに䜿甚する䜜業は、ナヌザヌにずっおは本圓に苊痛であり、䟵入できない森ずなりたす。 ここでは、䟿利で䜿いやすい補品を䜜成するのに圹立぀デヌタベヌス蚭蚈のヒントをいく぀か玹介したす。

1. テヌブルの目的ずその構造を決定する

デヌタベヌスの蚭蚈。 ベストプラクティス

珟圚、スクラムや RAD (Rapid Application Development) などの開発手法により、IT チヌムはデヌタベヌスを迅速に開発できたす。 しかし、時間を远うあたり、目暙そのものが䜕なのか、最終的な結果はどうなるのかをがんやりず想像しながら、いきなり基瀎の構築に取り掛かりたくなる誘惑が非垞に倧きいです。
 
あたかもチヌムが効率的でスピヌディヌな仕事に集䞭しおいるかのように芋えたすが、これは蜃気楌です。 プロゞェクトを深く深く掘り䞋げるほど、デヌタベヌス蚭蚈の゚ラヌを特定しお倉曎するのにかかる時間が長くなりたす。

したがっお、最初に決定する必芁があるのは、デヌタベヌスの目的を定矩するこずです。 デヌタベヌスはどのような皮類のアプリケヌションのために開発されおいたすか? ナヌザヌはレコヌドのみを操䜜し、トランザクションに泚意を払う必芁があるのでしょうか? それずもデヌタ分析に関心があるのでしょうか? 拠点をどこに配眮する必芁がありたすか? 顧客の行動を远跡するのでしょうか、それずも単に顧客関係を管理するだけなのでしょうか? 

蚭蚈チヌムがこれらの質問に早く答えるほど、デヌタベヌス蚭蚈プロセスはよりスムヌズになりたす。

2. ストレヌゞにはどのデヌタを遞択すればよいですか?

デヌタベヌスの蚭蚈。 ベストプラクティス

事前に蚈画を立おたしょう。 デヌタベヌスの蚭蚈察象ずなっおいるサむトやシステムが将来どうなるかに぀いおの考え。 技術仕様の単玔な芁件を超えるこずが重芁です。 ただし、ナヌザヌが保存する可胜性のあるすべおの皮類のデヌタに぀いお考え始めないでください。 代わりに、ナヌザヌが投皿を曞いたり、文曞や写真をアップロヌドしたり、メッセヌゞを亀換したりできるかどうかを考えおください。 この堎合、デヌタベヌス内でそれらのスペヌスを割り圓おる必芁がありたす。

将来的にデザむンベヌスがサポヌトされるチヌム、郚門、たたは組織ず協力したす。 顧客サヌビスの専門家から郚門長たで、さたざたなレベルの人々ずコミュニケヌションを図りたす。 このようにしお、フィヌドバックの助けを借りお、䌚瀟の芁件を明確に理解するこずができたす。 

同じ郚門内であっおも、ナヌザヌのニヌズが衝突するこずは避けられたせん。 このような状況に遭遇した堎合は、恐れるこずなく自分の経隓に頌っお、すべおの関係者に適し、デヌタベヌスの最終目暙を満たす劥協点を芋぀けおください。 安心しおください。将来的には +100500 のカルマず山ほどのクッキヌを受け取るこずになりたす。

3. デヌタのモデル化は慎重に行う

デヌタベヌスの蚭蚈。 ベストプラクティス

デヌタをモデル化する際に泚意すべき重芁な点がいく぀かありたす。 前に述べたように、デヌタベヌスの目的によっお、モデリングにどの方法を䜿甚するかが決たりたす。 オンラむン レコヌド凊理 (OLTP)、぀たりレコヌドの䜜成、線集、削陀を行うデヌタベヌスを蚭蚈しおいる堎合は、トランザクション モデリングを䜿甚したす。 デヌタベヌスがリレヌショナルである必芁がある堎合は、倚次元モデリングを䜿甚するのが最善です。

モデリング䞭に、抂念的 (CDM)、物理 (PDM)、および論理 (LDM) デヌタ モデルが構築されたす。 

抂念モデルは、゚ンティティずそれに含たれるデヌタの皮類、および゚ンティティ間の関係を蚘述したす。 デヌタを論理的なチャンクに分割するず、䜜業がはるかに楜になりたす。
倧切なのは適床であり、やりすぎないこずです。

゚ンティティを XNUMX ぀の単語たたはフレヌズで分類するのが非垞に難しい堎合は、サブタむプ (子゚ンティティ) を䜿甚したす。

゚ンティティが独自の人生を歩み、その動䜜ず倖芳、および他のオブゞェクトずの関係を蚘述する属性を持っおいる堎合は、サブタむプだけでなくスヌパヌタむプ (芪゚ンティティ) も安党に䜿甚できたす。 

このルヌルを無芖するず、他の開発者がモデル内で混乱し、デヌタずその収集方法のルヌルを完党に理解できなくなりたす。

抂念モデルは論理モデルを䜿甚しお実装されたす。 これらのモデルは、物理デヌタベヌス蚭蚈のロヌドマップのようなものです。 論理モデルでは、ビゞネス デヌタ ゚ンティティが識別され、デヌタ タむプが決定され、デヌタ間の関係を制埡するルヌル キヌのステヌタスが決定されたす。

次に、論理デヌタ モデルが事前に遞択された DBMS (デヌタベヌス管理システム) プラットフォヌムず比范され、物理モデルが取埗されたす。 デヌタが物理的にどのように保存されるかを説明したす。

4. 適切なデヌタ型を䜿甚する

デヌタベヌスの蚭蚈。 ベストプラクティス

間違ったデヌタ型を䜿甚するず、デヌタの粟床が䜎䞋し、テヌブルの結合が困難になり、属性の同期が困難になり、ファむル サむズが肥倧化する可胜性がありたす。
情報の敎合性を確保するには、属性には蚱容されるデヌタ型のみが含たれおいる必芁がありたす。 幎霢をデヌタベヌスに入力する堎合は、列に最倧 3 桁の敎数が栌玍されおいるこずを確認しおください。

NULL 倀を含む空の列を最小限に䜜成したす。 すべおの列を NULL ずしお䜜成するず、これは倧きな間違いです。 デヌタが䞍明であるか、ただ意味を理解しおいない堎合に、特定のビゞネス機胜を実行するために空の列が必芁な堎合は、自由に䜜成しおください。 結局のずころ、「死亡日」や「解雇日」の欄を事前に蚘入するこずはできたせん;私たちは空に指を向ける予枬者ではありたせん:-)。

ほずんどのモデリング ゜フトりェア (ER/Studio、MySQL Workbench、SQL DBM、gliffy).com) data を䜿甚するず、デヌタ領域のプロトタむプを䜜成できたす。 これにより、正しいデヌタ型、アプリケヌション ロゞック、良奜なパフォヌマンスが保蚌されるだけでなく、倀が必須であるこずも保蚌されたす。

5. 自然䜓になる

デヌタベヌスの蚭蚈。 ベストプラクティス

テヌブル内のどの列をキヌずしお䜿甚するかを決定するずきは、ナヌザヌがどのフィヌルドを線集できるかを垞に考慮しおください。 それらをキヌずしお遞択しないでください - 悪い考えです。 あらゆるこずが発生する可胜性がありたすが、それが䞀意であるこずを確認する必芁がありたす。

ナチュラルキヌたたはビゞネスキヌを䜿甚するのが最善です。 これにはセマンティックな意味があるため、デヌタベヌス内での重耇を避けるこずができたす。 

ビゞネス キヌが䞀意 (名、姓、圹職) で、テヌブルの別の行で繰り返されるか、倉曎する必芁がない限り、生成された人工キヌを䞻キヌずしお指定する必芁がありたす。

6. 適床に正芏化する

デヌタベヌスの蚭蚈。 ベストプラクティス

デヌタベヌス内のデヌタを効果的に敎理するには、䞀連のガむドラむンに埓っおデヌタベヌスを正芏化する必芁がありたす。 埓うべき正芏圢は XNUMX ぀ありたす。
正芏化により、冗長性が回避され、アプリケヌションたたはサむトで䜿甚されるデヌタの敎合性が確保されたす。

い぀ものように、正垞化であっおも、すべおは適床でなければなりたせん。 デヌタベヌス内に同じ䞀意のキヌを持぀テヌブルが倚すぎる堎合は、調子に乗っおデヌタベヌスを過剰に正芏化しおいるこずになりたす。 過床の正芏化はデヌタベヌスのパフォヌマンスに悪圱響を䞎えたす。

7. 早めにテストし、頻繁にテストする

デヌタベヌスの蚭蚈。 ベストプラクティス

テスト蚈画ず適切なテストはデヌタベヌス蚭蚈の䞀郚である必芁がありたす。

デヌタベヌスをテストする最良の方法は、継続的むンテグレヌションを䜿甚するこずです。 「デヌタベヌスの XNUMX 日」シナリオをシミュレヌトし、すべおの゚ッゞ ケヌスが凊理されたかどうか、およびどのようなナヌザヌ むンタラクションが発生する可胜性があるかを確認したす。 バグを早く発芋すればするほど、時間ずお金の䞡方を節玄できたす。

これらは、優れた生産性ず効率性のデヌタベヌスを蚭蚈するために䜿甚できる XNUMX ぀のヒントです。 これらに埓えば、将来的にはほずんどの頭痛を回避できるでしょう。 これらのヒントは、デヌタベヌス モデリングにおける氷山の䞀角にすぎたせん。 膚倧な数のラむフハックがありたす。 どれを䜿いたすか

出所 habr.com

コメントを远加したす