ふくだ学習録とは?
ふくだが学習したことの備忘録。
目に見える形で残すことによってやる気を出す個人的な作戦です。
他人に見せるように書いているわけではないので、すごく読みにくいです。
読了した本
データベースエンジニア養成読本 [DBを自由自在に活用するための知識とノウハウ満載!]
ゼロから作るDeepLearning
PHPフレームワーク CakePHP 3入門
SQLアンチパターン
Docker入門
今読んでいる本
なし
アプリ制作
テーブル設計
スクレイピング部分の作成とテーブル設計、どっちを先にするか迷ったけど、テーブル設計することにしました。
最初は
①(スクレイピングで)どんな情報を取得できるかどうか確認
②(取得できた情報を)どういう風に情報格納するのか決めてテーブル設計
って流れでいこうと思ったけど、それって結局行き当たりばったりやし、手段と目的が逆転しちゃうイメージなので辞めました。
本来は
①サービス実現のためにはどんな情報が必要か
②サービスをアプリケーションに落とし込むためには、情報をどういう形で整理格納しておくべきか
③アプリケーションを実現するための情報をどういう風に取得していけばいいか
こういった順序で考えていくべきだなと。
スクレイピングはあくまで③部分なので、先に③から始めちゃうと本来優先すべき①②が考えれなくなっちゃう(諦めちゃう)なと思い、先にテーブル設計していくことにします。③の主な手段はスクレイピングで実現するけど、それが無理な場合は別手段考える!
データベース設計(テーブル設計)の際に参考にしたもの
命名規則関連は下記記事参考に進めています。
データベースオブジェクトの命名規約
あとは参考に4ステップで作成する、DB論理設計の手順とチェックポイントまとめも見た。
ふくだ流テーブル設計の考え方、進め方
実際に今設計中ですが、主にこんな考え方で進めてます。(あんまり効率よくないよ!とかあれば言っていただきたい!)
①一番重要なエンティティを考える。(以後主エンティティと呼ぶ)
②主エンティティはどのようなデータ(属性)を保持しているかを考える。それらをフィールドにし主エンティティテーブルを作成する。
③主エンティティテーブル内のフィールドの中でも「格納されるデータにパターン性がある」かつ「格納されるデータ自体が、それだけで完結しない(オブジェクトとして他データを保持して欲しい)」フィールドは、別エンティティとして切り分けられるので、別テーブルとして作成する。
④主エンティティテーブルと、切り分けられたエンティティで作られたテーブルには何かしたのリレーションがあるので、リレーションテーブルを作成する。
って流れで作っています。(思考の言語化結構大変)
自己流なので、これが一般的なのかすごいダメなやり方なのかはわからないですが、プログラミングでいうリファクタリング的な感じで結構サクサク進めれるので、まぁまぁいいやり方なんじゃないかなと思ってる。
今日の一言
今日はちょいとTypeScriptいじって、テーブル設計したー。
Typescript×VScodeがすごい開発の手助けしてくれるってのを肌で実感した!ありがてぇ。
テーブル設計は自己流なので、あんまりいいやり方じゃないかもやけど、個人的には進めやすいので初期設計はこのやり方で進める!