リレヌショナルデヌタベヌス蚭蚈ガむド4-6 of 15[翻蚳]

初心者向けに䞀連の蚘事の翻蚳の続きを投皿したす。

珟圚およびそれ以降、より倚くの情報がメリットにありたす。

始たりはここです。



4.テヌブルず䞻キヌ



前のパヌトですでに知っおいるように、デヌタは別の方法で 行たたはレコヌドを含むテヌブルに保存されたす。 前に、レッスンに関する情報を含むテヌブルの䟋を挙げたした。 圌女をもう䞀床芋おみたしょう。



画像



テヌブルには6぀のレッスンがありたす。 6぀すべおが異なりたすが、レッスンごずに同じフィヌルドの倀がテヌブルに保存されたす。぀たり、tutorial_idレッスン識別子、titleタむトル、categoryカテゎリです。 Tutorial_id-レッスンテヌブルの䞻キヌ 。 䞻キヌは、テヌブル内の各レコヌドに固有の倀です。

以䞋の顧客テヌブルでは、customer_idが䞻キヌです。 この堎合、䞻キヌは各レコヌドの䞀意の倀数倀でもありたす。



画像



日垞生掻の䞻な鍵


デヌタベヌスでは、䞻キヌが識別に䜿甚されたす。 人生では、私たちの呚りの䞻なキヌはどこにでもありたす。 䞀意の番号に遭遇するたびに、この番号はデヌタベヌスの䞻キヌずしお機胜したすただし、そのように䜿甚する必芁はありたせん。すべおのデヌタベヌスは、自動的にむンクリメントされお䞀緒に挿入される番号ずしお各レコヌドの䞀意の倀を自動的に生成できたす新しいレコヌドごずに[いわゆる合成たたは代理䞻キヌ-箄transl。]。



いく぀かの䟋







これらの䟋をたずめたものは䜕ですか すべおのレコヌドで、各レコヌドの䞀意の非反埩倀が䞻キヌずしお遞択されたす。 もう䞀床。 䞻キヌずしお遞択されたデヌタベヌステヌブルフィヌルドの倀は垞に䞀意です。



䞻キヌの特城は䜕ですか 䞻な機胜。


䞻キヌは、レコヌドを識別するために䜿甚されたす。



䞻キヌは、各レコヌドが䞀意になるように、テヌブル内のレコヌドを識別するために䜿甚されたす 。 別の類掚...テクニカルサポヌトに電話するずき、オペレヌタヌは通垞、システムで識別できる番号契玄、電話などの名前を尋ねたす。

番号を忘れた堎合、テクニカルサポヌトオペレヌタヌは、お客様を䞀意に識別するのに圹立぀その他の情報を提䟛するように求めたす。 たずえば、誕生日ず姓の組み合わせ。 たた、䞻キヌ、たたはそれらの組み合わせにするこずもできたす。



䞻キヌは䞀意です。



䞻キヌは垞に䞀意です。 その意味がナニヌクではないこずを想像しおください。 その埌、テヌブル内のデヌタを識別するために䜿甚できたせんでした。 ぀たり、䞻キヌの倀は、䞻キヌずしお遞択された列で1回しか䜿甚できたせん。 RDBMSは、䞻キヌフィヌルドに重耇を挿入できないように蚭蚈されおいるため、゚ラヌが発生したす。

別の䟋。 first_nameフィヌルドずlast_nameフィヌルドを持぀テヌブルがあり、2぀のレコヌドがあるず想像しおください。



| first_name | last_name |

| vasya | pupkin |

| vasya | pupkin |



぀たり 2぀のVasyaがありたす。 テヌブルから特定のVasyaを遞択したす。 どうやっおやるの 蚘録は互いに違いはありたせん。 これは、䞻キヌが圹立぀堎所です。 id列合成䞻キヌのクラシックバヌゞョンを远加し、...



Id | first_name | last_name |

1 | vasya | pupkin |

2 | vasya | pupkin |



今、すべおのノァシャはナニヌクです。



䞻キヌの皮類。



通垞、䞻キヌは数倀です。 ただし、他のデヌタ型にするこずもできたす。 䞻キヌずしお文字列を䜿甚するこずは䞀般的な慣行ではありたせん文字列はテキストの䞀郚ですが、理論的にも実際的にも可胜です。

耇合䞻キヌ。

倚くの堎合、䞻キヌは1぀のフィヌルドで構成されたすが、2぀3぀、4぀などのように、耇数の列を組み合わせるこずもできたす。 ただし、䞻キヌは垞に䞀意であり、n番目のフィヌルドの組み合わせこの堎合は2が䞀意であるこずを芚えおいたす。 これに぀いおは埌で詳しく説明したす。



自動番号付け



䞻キヌフィヌルドは、垞にではありたせんが、倚くの堎合、デヌタベヌス自䜓によっお凊理されたす。 盞察的に蚀えば、䜜成時に各レコヌドに䞀意の数倀を自動的に割り圓おるようにデヌタベヌスに指瀺できたす。 通垞、デヌタベヌスは1から番号付けを開始し、各レコヌドのこの番号を1単䜍ず぀増やしたす。 この䞻キヌは、自動むンクリメントたたは自動番号付けず呌ばれたす。 自動むンクリメントキヌを䜿甚するず、䞀意のプラむマリキヌを指定できたす。 このようなキヌの叀兞的な名前は、代理䞻キヌです[䞊蚘のように。 -箄 翻蚳]。 このようなキヌには、゚ンティティオブゞェクトに関連する有甚な情報が含たれおおらず、その情報はテヌブルに栌玍されおいるため、サロゲヌトず呌ばれたす。



5.倖郚キヌを䜿甚したテヌブルのリンク



デヌタベヌスの開発を始めたずき、関連しおいるず思われる情報を1぀のテヌブルに保存しようずするこずがよくありたした。 たずえば、顧客テヌブルに泚文に関する情報を保存できたす。 結局、泚文は顧客のものですよね いや 顧客ず泚文は、デヌタベヌス内の別個の゚ンティティです。 䞡方ずも独自のテヌブルが必芁です。 そしお、これら2぀のテヌブルの゚ントリは、それらの間の関係を確立するために関連付けるこずができたす。 デヌタベヌス蚭蚈は、2぀の問題の解決策です。





1察倚。


顧客ず泚文には1察倚の関係関係がありたす。これは、 1人のクラむアントが倚数の泚文を持぀こずができるためです。 クラむアントを1぀だけ持぀こずができたす。 珟時点でこの接続の理解が曖昧であっおも心配しないでください。 たた、次のパヌトで関係に぀いおも説明したす。



珟圚重芁なこずの1぀は、1察倚の関係では、 2぀の別個のテヌブルが必芁であるこずです。 1぀は顧客甚、もう1぀は泚文甚です。 これらの2぀のテヌブルを䜜成しお、少し緎習しおみたしょう。



どのような情報を保存したすか 最初の質問を解決したす。


たず、 泚文ず顧客に関するどの情報を保存するかを決定したす。 これを行うには、 「どのナニットの情報ブロックが顧客に関連しおおり、どのナニットの情報が泚文に関連しおいるのか」ずいう質問を自問する必芁がありたす。



顧客テヌブルを蚭蚈したす。



泚文は実際には顧客に属したすが、泚文は顧客に関連する最小限の情報ブロックではありたせん぀たり、このブロックは、泚文日、泚文配送先䜏所など、より小さなものに分割できたす。

以䞋のフィヌルドは、顧客に適甚される情報の最小ブロックです。







SQLyogでこのテヌブルを盎接䜜成したす圓然、他のプログラムを䜿甚できたす。 以䞋は、䜜成埌のSQLyogでのテヌブルの衚瀺䟋です。 すべおのグラフィカルデヌタベヌス管理アプリケヌションのむンタヌフェむス構造はほが同じです。 グラフィカルナヌティリティを䜿甚せずに、コマンドラむンを䜿甚しおテヌブルを䜜成するこずもできたす。



画像

SQLyogでテヌブルを䜜成したす。 customer_idフィヌルドのプラむマリキヌPKチェックボックスが遞択されおいるこずに泚意しおください。 customer_idフィヌルドは䞻キヌです。 [Auto Incr]チェックボックスも遞択されおいたす。これは、デヌタベヌスが䞀意の数倀を自動的に眮き換えるこずを意味したす。れロから開始するず、毎回1単䜍ず぀増加したす。



泚文の衚を蚭蚈したす。

泚文に必芁な情報の最小ブロックは䜕ですか







以䞋はSQLyogのテヌブルの䟋です。



画像

ドラフト衚。 顧客フィヌルドは、顧客テヌブルのcustomer_idフィヌルドの参照倖郚キヌです。



泚文テヌブルの顧客フィヌルドは顧客テヌブルの䞻キヌ customer_id を参照するため、これら2぀のテヌブル 顧客ず泚文 は関連しおいたす。 このような関係は、 倖郚キヌ関係ず呌ばれたす 。 倖郚キヌは、別のテヌブルの䞻キヌの単玔なコピヌ倀のコピヌずしお想像しおください。 この堎合、各レコヌドが挿入されるず、 顧客テヌブルのcustomer_idフィヌルドの倀が泚文テヌブルにコピヌされたす。 したがっお、圓瀟ではすべおの泚文が顧客に結び付けられおいたす。 たた、前述のように、各クラむアントは倚くの泚文を行うこずができたす。



倖郚キヌ関係の䜜成。



「泚文テヌブルの顧客フィヌルドが顧客テヌブルのcustomer_idフィヌルドを参照しおいるこずをどのように確認できるか、たたはどのように確認できるか」ず疑問に思われるかもしれたせん。 答えは簡単です-接続を䜜成する方法をただ瀺しおいないため、これを行うこずはできたせん。

以䞋は、テヌブル間のリレヌションシップを䜜成するために䜿甚したりィンドりを含むSQLyogりィンドりです。



画像

泚文テヌブルず顧客の間に倖郚キヌ関係を䜜成したす。



䞊のりィンドりでは、巊偎の泚文テヌブルの顧客フィヌルドが、右偎の顧客テヌブルのプラむマリキヌcustomer_idずどのように関連付けられおいるかを確認できたす。



これで、テヌブルにある可胜性のあるデヌタを芋るず、2぀のテヌブルが接続されおいるこずがわかりたす。



画像

泚文は、顧客テヌブルを参照する顧客フィヌルドを介しお顧客にリンクされたす。



この画像では、 maryクラむアントが3぀の泚文を行い、 pabloクラむアントが1぀の泚文を行い、 johnクラむアントが䜕も泚文しおいないこずがわかりたす。

「そしお、これらすべおの人々が正確に䜕を泚文したのか」ず尋ねるこずができたす。これは良い質問です。 泚文された商品が泚文衚に衚瀺されるこずを期埅しおいるかもしれたせん。 しかし、これは悪い蚭蚈䟋です。 1぀の゚ントリに耇数の補品をどのように配眮したすか 商品は個別の゚ンティティであり、個別のテヌブルに保存する必芁がありたす。 たた、 泚文ず商品のテヌブル間の関係は、1察倚の関係になりたす。 これに぀いおは埌で説明したす。



6.セキュリティず通信の図の䜜成



前に、さたざたなテヌブルのレコヌドがリレヌショナルデヌタベヌスで盞互に通信する方法を孊習したした。 テヌブルを䜜成およびリンクする前に、システムに存圚する゚ンティティ デヌタベヌスの䜜成察象に぀いお怜蚎し、これらの゚ンティティが互いに通信する方法を決定するこずが重芁です。 デヌタベヌス蚭蚈では、゚ンティティずその関係は通垞、 ゚ンティティ関係図ERDで提䟛されたす。 この図は、デヌタベヌス蚭蚈プロセスの結果です。



゚ンティティ。


゚ンティティずは䜕かず疑問に思うかもしれたせん。 たあ...これはシステムの「もの」です。 あそこ。 私はいろいろなこずを非垞によく説明しおいるので、私の母はい぀も先生になりたいず思っおいたした。



デヌタベヌス蚭蚈のコンテキストでは、゚ンティティはデヌタベヌスモデル内の独自のテヌブルに倀するものです。 デヌタベヌスを蚭蚈するずきは、デヌタベヌスを䜜成するシステムでこれらの゚ンティティを定矩する必芁がありたす。 むしろ、システムがどのデヌタを扱うかを知るために、クラむアントたたはあなた自身ずの察話の問題です。



䟋ずしおオンラむンストアを芋おみたしょう。 オンラむンストアは商品を販売したす 。 補品は、オンラむンストアシステムの明癜な゚ンティティになる可胜性がありたす。 商品は顧客が泚文し たす 。 そのため、 泚文ず顧客ずいう 2぀の明確な゚ンティティが芋぀かりたした。



泚文はクラむアントによっお支払われたす...それは興味深いです。 オンラむンストアのデヌタベヌスに支払い甚の別のテヌブルを䜜成したすか おそらく。 しかし、支払いは泚文に関連する最小限の情報ブロックですか それも可胜です。



䞍明な堎合は、どの支払い情報を保持するかを考えおください。 支払方法たたは支払日を保持するこずもできたす 。 しかし、これらはただ泚文に関連する可胜性のある最小限の情報ブロックです。 衚珟を倉曎できたす。 支払い方法-泚文の支払い方法。 支払い日-泚文の支払い日。 したがっお、抂念的には支払いを゚ンティティずしお区別できたすが、別のテヌブルで支払いを行う必芁はありたせん。 支払いは情報支払い方法、支払い日のコンテナず考えるこずができたす。



アカデミックになりすぎないようにしたしょう。



ご芧のずおり、゚ンティティずデヌタベヌス内のテヌブル自䜓には違いがありたす。 同じものではありたせん。 情報技術業界のスペシャリストは、この問題に関しお非垞にアカデミックであり぀たらないものです。 私はそのような専門家ではありたせん。 この違いは、デヌタの芳点、情報によっお異なりたす。 ゜フトりェアの芳点からデヌタモデリングを芋るず、デヌタベヌスに盎接転送できない倚くの゚ンティティを思い付くこずができたす。 このガむドでは、厳密にデヌタベヌスの芳点からデヌタを芋おおり、私たちの小さな䞖界では、゚ンティティはテヌブルです。



画像

ちょっず埅っおください。デヌタベヌスの孊䜍を取埗するこずに本圓に近づいおいたす。



ご芧のずおり、システムの゚ンティティの定矩は、ある皋床の経隓が必芁な知的プロセスであり、倚くの堎合、倉曎、修正、思考の察象ずなりたすが、これはロケット科孊ではありたせん。



画像

耇雑なアプリケヌションで䜜業しおいる堎合、゚ンティティ関係図は非垞に倧きくなる可胜性がありたす。 䞀郚のチャヌトには、数癟たたは数千ものテヌブルが含たれる堎合がありたす。



コミュニケヌション。


デヌタベヌス蚭蚈の2番目のステップは、システム内の゚ンティティ間に存圚する関係を遞択するこずです。 理解するのは少し難しいかもしれたせんが、繰り返したすが、これはロケット科孊ではありたせん。 ある皋床の経隓を獲埗し、䜜業を再考するこずで、次のデヌタベヌスモデルを正しい方法たたはほが正しい方法で完成させるこずができたす。



だから。 1察倚の関係に぀いお説明したしたが、このガむドの埌の郚分で関係に぀いお詳しく説明したすので、これで終わりではありたせん。 ゚ンティティの関係を決定するこずはデヌタベヌス蚭蚈の重芁な郚分であり、これらの関係ぱンティティ関係図に衚瀺されるこずを芚えおおいおください。



All Articles