アウトプットを頑張る

初めてのプログラミング学習期間中の記録と、日頃読んでいる本をメモのアウトプットをがんばります。

【プログラミング学習】WEBアプリケーションの基本設計 DBの要素を抽出

■プログラミング学習

f:id:yuma6128:20211006071449j:plain

モデリング

モデリングとは、エンティティの分類や関連付けを行い、模型のように表すこと。
エンティティ自体を見直し、エンティティ同士の関係性を考え、図などに表記したりすることです。

・イメージ

f:id:yuma6128:20211006072459p:plain

続いて、モデリングされたDBをさらに詳細な設計をしていく工程になります。
テーブルの情報を利用しやすい形に変えていくことから始めます。

 

正規化

正規化とは、データベースの構造を効率的でシンプルな形にすることです。
正規化は段階で分かれていて、下記のような内容になります。

正規形の段階 | 概要
-----------------------------------------------------------

非正規形   |何もしていない状態
第一正規形  |重複する値やカラムを分離する
第三正規形  |情報が混在するエンティティを分離する

 

制約

制約とはデータを扱う際に制限をかけることです。バリデーションの仕組みと似ています。制約はDBへ直接設定するので、後に変更すると非常に手間のかかる可能性があります。
設計時点で、しっかり考えて、設定をする。

 

NOT NULL制約

NOT NULL制約は、テーブルの属性値にNULL(空の値)が入らないように制限する制約になります。
null:falseを記述し、設定をする。
```
t.型 : カラム名, null: false
```

一意性制約

一意性制約は、テーブル内で重複するデータを禁止する制約です。

 

主キー制約

主キーとは、レコード情報を識別するための項目。
主キー制約とは、主キーのデータが空になることがなく、かつ重複していないことを保証する制約です。
(※Railsでテーブルを作成する際には、idカラムとして自動で設定されます)

 

外部キー制約

外部キーとは、関連する他のテーブルレコードの主キーを値とする項目のことです。
そして、外部キー制約とは、外部キーのもとになるデータと参照するデータの整合性を保証する制約です。
1.存在しない値を外部キーとして、登録することができない
2.子テーブルの外部キーに値が登録されている親テーブルのレコードは削除できない

```
t.references :カラム名、foreign_key:true
```
userと記載するとuser_idというカラムが生成される。

 

チェック制約

チェック制約は値が保存される際に条件を満たしているかチェックできる制約です。
たとえば、userのニックネームが六文字以下になるような条件を加えれば、
それ以上のニックネームが保存されることはありません。


ER図

ER図とは、DBのテーブルなどを図で表記したものです。
下記ER図の例になります。

f:id:yuma6128:20211006074602p:plain


読書

f:id:yuma6128:20210710180648j:plain

◎2030年:すべてが「加速」する世界に備えよの紹介の最後になります。
ソーラーパネルの製法や性能の進化が、「量子ドット」と呼ばれるナノスケールの半導体の塊が、使われ始めていて、そのエネルギーの変換効率と価格の低下が進んできている。
風力と太陽光で、必要な電力の80%をまかなえるようになるのと同時に蓄電システムも発展をしており、エネルギー問題にもテクノロジーの進化によって解決の糸口が見えてきている。
本の中に書いてあった企業名で知らなかったところは、自分でも調べてみて
この本が書かれていたときよりも進化していないか、そして、「海の向こう側の話」ではなく、自分たちにも関係のある話として意識しながら学び続けて行ければと思います。