26歳女性メディア技術者がWebプログラマーに転職する物語

26歳女性メディア技術者がWebプログラマーに転職するまでの過程をメインに投稿します。あたたかく見守ってください。

本日のOut Put part26

お久しぶりです。

Ramrinです^^

 

ここずっとOutPut関係の更新をサボっていました。。。

まだまだ自分に甘いですね。

改めてOutPut頑張っていきたいと思います!!

 

OutPutの更新はサボってたのですが、勉強としては最終課題に入りました。

ここ3日間くらいはデータベース設計に苦戦していて、

今日やっとメンターさんからLGTMをもらうことができました!

 

作成するアプリとしては、ユーザーが商品を出品、購入できる簡単なフリマアプリになります。

 

なぜ自分がDB設計に苦戦したかというと、

①エンティティの抽出が甘かった。

②各テーブルの関連付とアソシエーションがごちゃごちゃになっていた。

③カラムの型や制約について、理解が足りていなかった。

の3つが主な原因です。

 

①について

エンティティとはサービスで扱われるデータ自体のことです。

見本のアプリを試して使用しながら、

今回の実装で必要なデータ、つまりエンティティをメモや紙に書き出したのですが、

結果的にいくつも抜けていました。

特に購入履歴のテーブルについては指摘されてから初めて気付きました。

メモや紙も殴り書きのように書いていたので、見直しずらかったので、

今後はメモや紙も大切にしようと思いました。

 

②について

has_manyとbelongs_toの関係はできていたのですが、

has_oneとbelongs_toの関係に苦戦しました。

どちらが親で、子なのかということを考えていると、

どんどん分からなくなっていました。

落ち着いて考えたら分かるので、焦らないようにしないとですね。

 

③について

今回の実装の中でactive_hashというDBに保存しないが、

あたかも保存したかのような扱いができるGemを使用するのですが、

ルール上、integer型でないといけないということを知りました。

追加するGemによっては他にもルールがあるので、

気を付ける必要があると思いました。

 

 

実際にどのようなDB設計をしたのかというのは、

最終課題提出後に改めてまとめたいなと思っています。

 

明日からはユーザー管理機能の実装に取り掛かります!