Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 553 - データベースに関して、Core Dataと絡めて

Core Dataに手を出してしまうと、やはりデータベースに関する知識が気になってしまいます。

まだOOPのプログラミングも習得していないのにデータベースに手を出すべきじゃないかもしれませんが、Core Dataでアプリのデータを管理するのであれば、ある程度データベースの基本を押さえる必要があると考え、データベース設計に関する情報を探し回っていて次のページを見つけました。

www.atmarkit.co.jp

少々古い記事ではありますが、素人向けに書いた内容なので私でも分かるかなと思って読みました。

まず、最初の「データベースとDBMSは別の概念」を読んで、「あれ、そうなんだ! DBMSってのがCore Dataのことか!」ってな感じですんなり理解できました。

当に、Core Dataが「データベース管理システム(Database Management System: DBMS)」の事ですね。本来のデータベースはSQLiteなんで、これはリレーショナルデータベースになります(RDB)。すると、それを管理するDBMSと言うことは、「リレーショナルデータベース管理システム」ということで、Core Dataは、「RDBMS」になるって事です。

このデータベースは、表形式(テーブル)で表現されていて、列と行で構成され、列1つに1つの意味を持って管理されています。このデータの内容を参照したり変更する言語が「Structured Query Language(SQL)」と呼ばれ、当にSQLiteってことにになります。

リレーショナルデータベースの特徴は、複数の表をリレーション(結合)して利用できることです。複数の表に共通の列を持たせ、リレーションを使って結合させることができます。ということはリレーションをしなくても1つの表でデータを管理することも可能ですが、「複数の表にする理由」を読んで、データを複数の表に分割する意味が分かりました。1つのデータから、管理の効率を考えて複数の表に細かく分けてリレーションを作っていく作業のことおを「正規化」と呼ぶことも知りました。

そして最後にSQLの説明があります。

  1. Query:問い合わせ
  2. DML:データ操作
  3. DDL;データ定義
  4. トランザクション制御

「あれ? これらの機能、どこかで見たことがある!」そうです。「Core Data Stack」です。すべての機能がCore Dataで実現していることを知って、データベースを理解すること無しでCore Dataの理解はあり得ないってことが理解できました。本当にプログラミングの世界は奧が深い...

今日はここまで。