Relational Data Base Management System の略。 日本語では、「リレーショナルデータベース管理システム」「関係データベース管理システム」と訳される。 DBMSの一種。RDBを構築・運用するために用いられる管理ソフトウェアのこと。 汎用RDBMS製品の例としては次のようなものがある。
違法すれすれの『ライン上』に位置する設計 代理キー:主キーが役に立たない時 ケース1:入力データに主キーになるような一意キーが存在しない ケース2:一意キーはあるが、サイクリックに使いまわされる ケース3:一意キーはあるが、途中で指す対象が変化する 代理キーによる解決 自然キーによる解決 列持ちテーブル アドホックな集計キー 多段ビュー データクレンジングの重要性 参考 違法すれすれの『ライン上』に位置する設計 上手に使えば論理設計に効果があるが、間違った使い方をすると運用に支障をきたすといった、『バッドノウハウ』ではないが『グレー』な設計方法について学ぶ。メリデメを理解した上で利用することが…
論理設計の『やってはいけない』 非スカラ値(第一正規形未満) ダブルミーニング 単一参照テーブル テーブル分割 水平分割 垂直分割 テーブル分割の代替手段 不適切なキー ダブルマスター 参考 論理設計の『やってはいけない』 戦略の失敗を戦術で取り返すことはできない という有名な言葉があるらしい。システム開発における戦略は設計で、プログラミングは戦術に相当する。つまり、プログラムの品質を決めるのは設計になる。そんな設計において品質を致命的なレベルで損なってしまうバッドノウハウ(アンチパターン)を学ぶ。 非スカラ値(第一正規形未満) 第一正規系未満(セルにデータは1つ)のテーブルも存在する。例えば…
RDBMSの論理設計の基本の概念は正規化であり、それは『データ整合性を保持する』ために行っている。一方で正規化による背反として、『SQLのパフォーマンス劣化』を引き起こす。 正規化を行うと基本的にテーブルが増えていく。よって、SQL文を実行する際には、結合(JOIN)が必要になるが、この結合がSQL文の処理としては高コストなものになるため、多用するとSQL文の速度が悪化する。 その対処法に非正規化があるが、『正規化によるデータ整合性』と『非正規化による検索パフォーマンス』はトレードオフの関係のため、最良策にはならない。 『じゃあ、どうするの🤔』ってことだけど、原則として非正規化は許さないという…
テーブルの関連のパターン ER図の描き方 参考 テーブルの関連のパターン 同じ意味の列を持つテーブル同士の間には、通常次の3パーンの関連がある。 1対1(1:1) 『1対1』というのはほぼ見ないらしい。理由は2つのテーブルのレコードが1対1に対応するというのは、主キーが一致するケースなので、通常1つのテーブルにまとめても問題ないため。よって、正規化の過程で『1対1』のテーブルが作られることは無い。 1対多(1:N) 『1対多』は最もよくある関連のタイプ。正規化によって作られる関連の多くはここに属する。 多対多(N:N) 『多対多』は特殊なカテゴリで、RDBMSでは『多対多』の関連は作っていけな…
テーブル設計の流れ 図書館の予約申込書 メインとなるテーブル名を出す(イベント系エンティティを洗い出す) 「誰が・何が」、「誰を・何を」を考えてテーブル名を出す(リソース系エンティティを洗い出す) 各テーブルのカラムを出す 表現できていない情報を、テーブルにするか、カラムに追加するかを考える 関連を入れる 制約とデフォルト値とINDEXを考える 参考書:解答例 参考 テーブル設計の流れ テーブル設計の流れの概要にめちゃくちゃわかりやすくテーブル設計の手順が書かれていたので記載。これをベースに作業を進める。 メインとなるテーブル名を出す 「誰が・何が」を考えてテーブル名を出す 「誰を・何を」を考…
ウィンドウ関数 ウィンドウ関数は、ランキング、連番生成等の集約関数で通常できないような操作をする際に用いる。別名としてOLAP関数(OnLine Analytical Processing)とも呼ばれ、データベースをリアルタイムに処理して、オンラインでデータ分析などを行う際に使用する。よって、ウィンドウ関数は、OLAP用途のために、SQLに追加された機能。 具体的にどんなものかというと次のようなもの。 ウィンドウにすることの旨味としては、区切られたウィンドウ内でデータを操作できる点。ウィンドウ関数の構文は次のようになっている。 ウィンドウ関数 OVER ([PARTITION BY 列リスト]…
テーブルの足し算と引き算 UNION:テーブルの足し算 INETRSECT:テーブルのAND EXCEPT:レコードの引き算 テーブルを列方向に連結する 内部結合 外部結合 クロス結合 参考 テーブルの足し算と引き算 2つ以上のテーブルを使う場合のSQL文を学ぶ。テーブルのレコード同士を足したり引いたりするのが集合演算子。次の集合演算子についてまとめる。 UNION:テーブルの足し算 INTERSECT:テーブルの共通部部分の選択 EXCEPT:レコードの引き算 次のテーブルに対して色々操作してみる。 UNION:テーブルの足し算 UNIONはテーブルの『和集合』をとる。ベン図で示すと次の通り…
ビューとテーブル ビューの旨味 ビューを使う ビューを作る ビューを実行する ビューを削除する サブクエリ スカラ・サブクエリ 相関サブクエリ 参考 ビューとテーブル テーブルを作る(CREATE TABLE)、検索する(SELECT)、更新する(INSERT,DELETE,UPDATE)を学んだが、新しい知識としてビュー(VIEW)を学ぶ。 ビューとは、『SELECT文を保存したもの』と覚えておけば良さそう。テーブルではデータを保存するが、ビューではSELECT文を記録する、つまり検索文を記憶したようなもの。検索文を記憶しておくと、その実行結果としてはテーブルデータが返ってくる。よって見た目…
INSERT:データの登録 データを登録する 他のテーブルからデータをコピー DELETE:データの削除 テーブルデータを全部削除 テーブルデータを指定して削除 UPDATE:データの更新 全行の値を更新する 条件を指定して更新する トランザクション トランザクションを作る ROLLBACK:処理の取り消し ACID特性 参考 下記のようなテーブルからデータを選択したい時に使用するのが、SELECT文だった。SELECT文はデータベースに対して変化を与えるものではなく、『読み取り専用』の状態で、データ検索を行うコマンドであった。 今回は、データベースのデータを更新(登録、削除、更新)する方法に…
集約関数 COUNT:テーブルのレコード数(行数)を数える SUM:合計値を求める AVG:平均値を求める MAX,MIN:最大値・最小値を求める 重複値を除外して集約関数を用いる GROUP BY:グループに分ける HAVING:集約結果に条件を指定する ORDER BY:並び替え 参考 下記のようなテーブルからデータを選択したい時に使用するのが、SELECT文だった。 今回は、さらにテーブルデータを集約したり、並び替えなどをする方法について学んだ。 集約関数 テーブルのデータを集計したりする際に用いるのが集約関数(または集合関数)。とりあえず、COUNT,SUM,AVG,MAX,MINの5…
Webサービスに何かしらのファイルをアップロードしたい場面は多い。需要がある処理なのでやりようは幾らでもある。 幾らでもあると逆にどうするのがいいのか迷ったりする。 そんなわけでどのようなファイルアップロードの構成があるのか整理しておく。 前提条件 整理した構成 レンタルサーバ、1サーバ時代 オブジェクトストレージ直列 オブジェクトストレージアップロードだけ切り出し オブジェクトストレージイベント伝播 整理まとめ
SQL Serverで統計情報関連の情報をあさっていたところ、どうやらSQL Serverでは統計情報の自動更新という機能があるようでした。自動更新自体は、データベースの設定によって決まるようです。 SSMSでその設定状況は、簡単に確認することができます。[オブジェクトエクスプローラー]のデータベースを右クリック - 「プロパティ」で、ページの選択欄で「オプション」を選択する。 するとその設定項目の中に「自動」欄がありますが、そこの「統計の自動更新」が言葉通り、統計情報の自動更新の設定となるようです。 もちろん、"True"であれば統計情報は自動更新され、"False"であれば自動更新はされま…
システムデザインについて勉強しました。 まだほぼ概要が理解できていない状態なので、厳密な説明や定義より平易な表現を選んでいる(というかそれしかできない)ものの、なにかマズそうな嘘が書いてあったら教えていただけると助かります。 現状 CSなし、崖っぷち応用情報技術者。 システム設計の学習・経験無し。 system-design-primerをパッと見た感じあんまりよくわからなかった。 目標 とりあえず大まかな用語について意味を自分なりに噛み砕いて理解する。 学習する内容の全容をざっくり把握する。 これからどんな内容を掘り下げる必要があるのかなんとなく把握する。 使用した教材 github.com…
達人に学ぶDB設計 徹底指南書 1. データベース設計を制する者はシステム開発を制す データベースについて データベース = データの集まり DBMS(Database Management System) = データベースを管理するシステム RDB(Relational Database) = 関係データベース 現在最も広く利用されているデータベース 単にデータベースと言った場合、RDBを指すことがほとんど RDBMS = RDBを管理するシステム 単にDBMSと言った場合、RDBMSを指すことが多い データベース設計 データ中心アプローチ(DOA:Data Oriented Approac…
これはなに BiTemporal Data Modelはこういうことができるよ!という内容ではなく、導入時の注意点やちょっとしたつまづきポイントなどをまとめたもの 背景 BiTemporal Data Modelについて、すでに何社かでは導入事例もあるようで*1、たまに BiTemporal Data Modelに入門中 - だいたいよくわからないブログ を参照していただくこともあるようです。 そんな中でBiTemporal Data Modelについてこういうことができてすごいよ!という話だけでなく、導入するとこういうところが辛いとかそういうこともまとめておきたいなと思った次第です。(割とぱ…
こんにちは、データエンジニアの滑川(@tomoyanamekawa)です。 Classiでは2022年5月に学校内のユーザー利用状況を集計し可視化したダッシュボード機能をリリースしました。 この機能のデータ集計は既存の社内用データ基盤からのReverse ETLで実現しました。 そのアーキテクチャの説明と「社内用データ基盤」から「ユーザー影響あるシステムの一部」になったことによる変化について紹介します。 ダッシュボード機能とは 概要 先生のみが利用可能な機能 先生と学年・クラスごとの生徒の利用状況を可視化したダッシュボードを提供する機能 要件・制約 アプリケーションはAWS上で動かす 前日まで…
PostgreSQL セットアップ pgAdmin4 起動 DBの確認 テーブル作成 SQL 実行 PostgreSQL https://www.postgresql.jp/ OSS の RDBMS。 ライセンス:BSD ランキング:4位 (2022/6時点) https://db-engines.com/en/ranking 読み方 ポストグレスキューエル 通称:ポスグレ 語源 Ingres の後継を意味する。 Post-Ingres => PostgreSQL Ingres も RDBMS。 セットアップ インストーラーをダウンロード。 https://www.postgresql.org…
gigazine.net 商用データベース管理システムを開発するソフトウェア企業のCockroach Labsが、クラウドのパフォーマンスをベンチマークで比較した「2022年度クラウドレポート」を公開しました。 Amazon・Google・Microsoftのクラウドのパフォーマンスを比較した2022年度クラウドレポートが公開される - GIGAZINE ⇧ 比較対象にOracleのクラウドが入ってないのは、「Cockroach Labs」がデータベースを扱ってるからということでしょうかね... Oracleは、RDBMS(Realtional DataBase Management Syst…
1 MariaDBとは? 2 環境 3 パッケージのインストール 4 mariadbサービスの起動方法 5 事前準備 5.1 文字コード設定 5.2 管理者の登録 6 データベースの作成、削除方法 6.1 データベースの作成方法 6.2 データベースの削除方法 7 テーブルに対する操作 7.1 テーブルの作成方法(create) 7.2 カラム情報を取得する方法 7.3 テーブルの削除方法(drop) 7.4 テーブルの名前を変更する方法(alter) 7.5 データを登録する方法(insert) 7.6 データを更新する方法(update) 7.7 データを削除する方法(delete,whe…
はじめに 最近AWSのサーバーレスサービスで作るWebサービスの雛形を公開してみた*1。小規模サービスならかなり安く (ほぼ無料になるケースも多そう) で運用できるので、割と良い選択になる場面も多いと考えている。今日はその布教記事。 github.com 全体構成 全体の構成は下図のとおり。特徴としては以下が挙げられる: CDNでフロントエンド (React SPA) の静的ファイルを配信 バックエンドAPIは API Gateway + Lambda (Express.js) データベースはDynamoDB (詳細は後述) ユーザー登録が必要なサービスのため、Eメール認証も付けている ありが…