この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回は知識(主キーと候補キー)およびSQL(確認ドリル)について書く。
※この記事のSQLはGoogle Big Queryに準拠
知識(主キーと候補キー)
前回おさらい
- データベーススペシャリスト資格について「そもそも何?」「大事なポイントは?」「何の役に立つの?」は過去記事にてまとめ済
- 本試験について過去問ベースの学習を進めていく。
キーとはなにか
- そもそも、すべてのデータはテーブルで管理する。
- そして、テーブルは集合(意味のあるまとまり)であり関数(入力に対し一意に出力が決まる)である。
- なお、業務においては業務の流れに沿ったテーブルに分割することが多い。
- そこで重要なのは、まず1つのテーブル内で一意に出力を決めるためのとっかかり。これが主キー。
- 次に重要なのは、たくさん出来たテーブル同士をつなげるためのとっかかり。これが外部キー。
キーの種類
- 主キーを語る上で出てくるのが候補キーという考え方。
- いずれも、テーブル(表)においてタプル(行)を一意に決めるための属性(列)のこと。
- 一意性を確保するためのミニマムの組み合わせ(もちろん1つの場合もあり)が候補キー。
- 英語で言うと「一意」はunique。「候補キー」はcandidate key。
- そこから主キーを決める。(候補キーはNULL(空白)OK。主キーはNULL NG。データが参照できなくなるので)
- また、他のテーブルの主キー(または候補キー)を参照する項目を外部キーと言う。ER図の肝となる要素。
- それ以外に「午前試験対策で意味だけ知っておくとよい」のはスーパーキー、代替キーなど。詳細は右記参照(過去記事)
候補キーが複数あるパターン
- たとえば関係スキーマが「社員(社員№,氏名,住所,生年月日,電話番号,メールアドレス,入社年月日)」とする。
- どれが候補キーになるかは、業務の背景に依存する。この例では”電話番号”は「会社支給のスマホ番号」、”メールアドレス”は「会社のメールアドレスで一人につき1つ」とする。
- このとき候補キー要素として、「一意性」と「ミニマム」の両方をふまえると①社員№、②電話番号、③メールアドレス、④{氏名,住所}などが考えられる。
- このうちどれを主キーにするかは、業務のやり方をふまえて考えなければいけない。なぜなら主キーは「非null値制約」も持つから。
- たとえば②電話番号や③メールアドレスを主キーにしたとして、業務が「新入社員は登録に数カ月かかる」だとしたら、nullになってしまうので上手くない。(業務上、入社後すぐに必ず登録されるのであれば良いのだが…)
- そうなるとこの場合は、主キーは①社員№か④{氏名,住所}がふさわしいということになる。
- 午後試験問題では、このように業務の内容を読ませたうえで、今の主キーだとどんな問題が起き、どうすればよいのか…を考えさせる問題が出る。
試験問題例
- 関係Rが属性a,b,c,d,eを持ち、関数従属a→{b, c}および{c, d}→eが成立するとき、関係Rの候補キーはどれか。図に書くと分かり易い。aにより決まるのはb,c。あとdがあればeも決まる。よって候補キー(一意かつミニマム)は{a, d}となる。(R2問3)
9月22日復習時追記
- ここに記載の対策は完了している。
- 関数従属性や候補キーの「考え方そのもの」の出題は午前2で数問レベルであり、対策済。
- 候補キーを洗い出したり、第何正規形か答える「基礎理論」は午後過去問で2問確認しており、対策済。
問題037(SQL確認ドリル)
問題文
- 「sales」テーブルから、商品ID(product_id)が「5」で、
- 販売金額(revenue)が8,000円を超えるレコードのすべてのカラムを取得し、
- 「order_id」の小さい順に表示してください。
where, order byのおさらい
- whereは行の絞り込みを行う。数式的に「= 5」や「>= 8000」なども使える。
- order byは並び替えをおこなう。今回はこれらを組み合わせ、以下のとおり。
考察
- データベーススペシャリスト資格について。今回は主キーと候補キーについて復習した。業務の流れとキーの制約を踏まえて、つど最適なキーを選択することが重要だ。また、SQLの確認ドリルを解いた。お題は数式での絞り込み、データの並び替えだ。
- 考察。「ユーザーが何を求めているか」は重要だ。なぜなら”価値”はそれに応じることで発生するからだ。たとえばデータベーススペシャリスト(以降デスペ)は、業務効率化などの価値を、データ技術を用いて提供する。その際「データ技術の知識」と「ユーザと業務の理解力」、即ち「実践力」が必要だ。
- 続き。国がデスペ資格で求めるのは、国策である生産性向上をデータ面から実現できる人材と考えられる。資格試験は時間の制約上、知識は4択、実践力は「パズルのような穴埋め問題」で問われるので、解法を体に馴染ませるのは必須だ。ただ、設問の真意も意識していきたい。価値ある学びとするために。
考察のシンプル化と英訳(練習中)
- I try to know partner well for giving real value.
- (私は本当の価値を与えるために、パートナーをよく知るように努めています)
参考資料
- 2022年度版 ALL IN ONE パーフェクトマスター データベーススペシャリスト/TAC
- 集中演習 SQL入門/木田和廣/株式会社インプレス(SQL確認ドリル)
コメント