えんぴつぶろぐ

子育て中のフロントエンドエンジニアのブログ。

UoPeopleでDatabases(DB設計・SQL)のコースを修了した。

オンライン大学 University of the People でDatabases (CS2203) を修了したのでその感想を書きます。

これまでのUoPeople関連の記事はこちら:
UoPeople カテゴリーの記事一覧 - えんぴつぶろぐ

はじめに

このコースはDatabasesについて、DBMSの種類や基本的な用語の定義から始まり、情報モデルについての概念をおさえつつRDBMSの設計プロセスを実践を通して学ぶコースです。
SQLについてもANSI/ISOの規格に基づいて、基礎的な部分は網羅的に触れます。

今期は3コース同時受講(統計学Java、Databases)していましたが、このコースが一番楽しかった気がするし実務ですぐ役立ちそうです。

ちなみにコースを始める前の自分のレベルは

  • ORMなら使ったことある
  • 簡単なSQLなら覚えてる
  • 正規化はなんとなく知ってる

みたいな感じです。

学習内容

  • DBMSの種類
  • DBにまつわる様々な職種
  • 3層のデータモデル
    • 概念モデル/論理モデル/物理モデル
  • 各種用語の定義と使いわけ
    • Entity set/Relation/Table
    • Entity/Tuple/Row
    • Attribute/Column
    • Relationship set/Primary key/Foreign key
    • Relation degree
    • Relationship cardinality
  • 各種制約
    • Entity integrity constraint
    • Referential integrity constraint
    • Semantic integrity constraint
    • Domain constraint
    • Null constraint
    • Unique constraint
  • ER図
  • 正規化
    • 関数従属
    • Closure Set
  • SQL
    • DCL
    • DML
    • DCL
    • 各種データ型
    • Aggregate function
    • Nested Selects
    • Sub Queries
    • Unions
  • アプリケーション・DB設計プロセス
  • トランザクション
  • アプリケーションとの結合

課題について

Programming Assignmentがほぼ毎週(Graded Quizある週以外)出るので課題の量は結構多いと思います。
Learning JournalでもUnitの振り返りに加えて演習やSQL課題が出ます。

内容としては

概念モデルの作成、
要件定義、
ER図の作成、
正規化の実施、
実際のDatabaseの構築、
SQL演習

などです。

序盤の設計では、Attributeの名前や型をどうするかなど迷うかもしれませんが、 事前にある程度の採点基準が提示されるのでそれに従っていれば細かい所まで気にしなくても大丈夫でした。

環境構築について

ご覧の通り、後半のUnitから実際にSQLを書く課題が出てくるので、なにかしらのDBの環境構築が必要です。
ただコースからはあんまり親切な案内は提示されないです。(MySQL Workbenchなどへのリンクが貼られているのみ)

また、最終週はSQL ServerまたはOpenOffice Baseの構築が必要だったので、Macの自分はDocker for Macを使ってSQL Serverを使えようにしました。

このあたりの記事が参考になります。

How to Install SQL Server on a Mac | Database.Guide

が、自分のMacbook Air M1では上記で紹介されているMicrosoft SQL Server が起動せず、
M1対応のDocker for Mac + Rosetta + --platform optionを使ってもだめだったので
以下で紹介されているAzure SQL Edge というimageを使ったらうまくいきました。

Docker Express: Running a Local SQL Server on Your M1 Mac | by Maarten Merken | Geek Culture | Medium

Discussion Assignment

Discussion課題は

このDatabaseの設計にはどういう問題がありますか、
この設計プロセスで気をつけることはなんですか、
正規化のProps/Consはなんですか、
このSQLはどうやって使い分けますか、

みたいな感じでした。

Unit1から例として実際のDatabaseを構築してER図を提示したりする猛者がいました…が、そんなことをしなくても普通に高得点はもらえるかと思います。

役立ったもの

IntelliJ IDEA

UoPeopleをやっている人はJetBrains Student Pack(学生向け無料ライセンス)が使えます!!

この学生向けライセンスを申請すると、IntelliJ IDEA UltimateやWebStrom、PyCharmなどがダウンロードできます。
ただし、教育・学習目的にしか使えないライセンスになっており仕事などには使えないので注意してください。

JetBrains Student Pack(学生・教職員向け無料ライセンス)と申し込み方法 | JetBrains Blog

私はIntelliJ IDEAでUoPeopleのJavaやDatabasesのコースを進めていました。
IntelliJ IDEA UltimateならDatabaseの閲覧・操作に便利なプラグインがビルトインされています。

Database tools and SQL | IntelliJ IDEA

ER図作成に便利なデータベーススキーマ機能があるCacoo

IntelliJ IDEAのDatabase Toolでも Diagrams > Show Visualization... でDatabaseからER図が自動生成できるのですが、鳥の足記法ではありません。

「鳥の足記法でER図を作成しろ」という課題があったので、その際はIntelliJからスキーマCSVでエクスポートし Cacooにインポートして生成していました。

データベース設計図 | テンプレート | オンライン作図ツール Cacoo(カクー)

ただ、なぜかインポート時にエラーが発生しrelationshipの部分が期待通りにインポートできなかったため欠けた部分はCacoo上で書き足していました…。

オンライン作図ツールdraw.io

また、https://draw.io というオンラインツールでもER図が作成できました。
こちらはインストラクターも紹介していました。

Flowchart Maker & Online Diagram Software

達人に学ぶDB設計 徹底指南書

参考書としては「達人に学ぶDB設計 徹底指南書」が役立ちました。 DB設計の基礎や正規化について例を出しながら丁寧に解説しており、今回のコースではUnit1〜3くらいまでの内容にベストマッチしています。

書籍の後半はパフォーマンスについてやバッドノウハウ・グレーノウハウの具体例が主ですが、このあたりの内容もDiscussion Assignmentで自分の考えを補強する時に役立ちました。

www.amazon.co.jp

Graded QuizとFinal exam

Graded QuizはSelf Quizの内容 + アルファって感じでした。
Final ExamもSelf Quiz / Review Quizにない問題が多く、ふわっとした問が多くて答えに迷うことが多かったような…。

成績

インストラクターがめっちゃ厳しい人でLJでなかなか満点をとれなかったり、 ピアからつけられた微妙な点数(全問正解しているのに85/90点みたいな)に対してGrade Appealしても受け付けてくれなかったりでちょっとモヤりましたがA-で着地しそうです。

f:id:empitsu88:20210608221934p:plain

学習時間

学習時間は8〜15時間/週くらいでした。
Discussion Assignmentで例を提示すべくDatabaseを作成したりと割と頑張ってしまったので、もう少し効率よく進められた気がします。

f:id:empitsu88:20210608164951p:plain
週毎の学習時間

これまでに受講したコース

ということで以下のコースが修了できました!

+前の大学から単位移行したコース