MySQL(その11 テーブルの結合,正規化,主キー,外部キー,リレーションシップ))

その10から続きます。

1:テーブルの正規化とは?

テーブルを分けて情報の重複をなくしていく作業のこと。

データの管理が容易になること、データ容量の削減ができることなどの

メリットが有るため、特別な意図がなければテーブルは正規化する。

2:テーブルの結合とは?

テーブル同士をある条件で結合することにより正規化なしの状態を作り出すこと

基本は正規化だが、パフォーマンスの問題が解消できない

またはできなくなりそうな場合はあえて非正規化することもある。

実務で見かける可能性もあるらしい。

3:主キー(Primary Key,PK)とは?

一つの行を特定できる列のこと

↑のusersテーブルのidが主キー

usersテーブルのidを指定すれば特定のユーザーの行を取り出せる。

usersテーブルのidが1であれば山田太郎さん

usersテーブルのidが3であれば高橋友美さんというふうにわかる

4:外部キー(Foreign Key,FK)とは?

外部キーは他のテーブルとの関連付けに使う列のこと

外部キーは関連付けされた先のテーブルでは主キーになる。

usersテーブルのprefecture_id外部キー。
参照している主キーは prefecturesテーブルのid。
外部キー結合先の主キーとの関連付けによって関連のテーブルを1つとして考えることができるようになる。
外部キーは関連付けされた先のテーブルでは主キーになり、 prefecturesテーブルの主キーidになる。
主キーが特定できれば 特定の都道府県の行を取り出せる。

5:リレーションシップとは?

テーブル同士の結びつき・関係性の種類

1対多の例

・(1)ユーザー            – (多) 注文

・(1)ブログの投稿者- (多)ブログの投稿

・(1)注文                   – (多)注文明細

・(1)部署     - (多)従業員

多対多の例

・(多) 商品               –  (多)商品カテゴリー

・(多)ブログの投稿      –  (多)ブログのカテゴリー

・(多)ユーザー              –  (多)操作権限

具体例)給与計算システムの操作権限

・人事部Aさん   : 給与設定,給与明細確認,新規ユーザー追加

・一般社員Bさん:給与明細確認

・情シスCさん    :給与明細確認,新規ユーザー追加

1対1の例

データベースはテーブルごとにアクセス権を設定することができる。
電話番号を管理するテーブルだけ特別な権限を持った人しか
見れないように設定したいのでテーブルを分けたいという要件など。

その12に続きます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です