プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • データベース
  • 【データベース設計】ビューの基本
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【データベース設計】ビューの基本

04.24

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

「ビュー」は、実際の開発現場で非常に多く使われているデータベースの技術です。

メリット、デメリットを知り、設計時にビューを活用するかどうか判断できるようにしましょう!

ビューとは?

SQLを実行する観点で見れば、「テーブルと同じもの」です。

ビューの使い方

構文

CREATE VIEW ビュー名 AS SELECT文

例

ユーザーマスターから、中年社員を抽出したビューを作る場合

CREATE VIEW TYUNEN AS
SELECT * FROM USER_MASTER
WHERE AGE > '35'
AND AGE < '50'

ビューのメリット

SQLがシンプルになる点

例えば、上記の例で言えば、中年社員の方の給料を一覧化する場合と、中年社員の方の部署をグループ化する場合があったとしたら、それぞれわかりやすくなります。

ビューを使う前

それぞれ、SELECT文での集計の仕方が違う場合は、以下のように冗長になってしまいます。

SELECT SALARY FROM TYUNEN
WHERE AGE > '35' AND AGE < '50'; //SQL1 

SELECT DEPARTMENT FROM USER_MASTER 
WHERE AGE > '35' AND AGE < '50'
GROUP BY DEPARTMENT;//SQL2

ビューを使って書く場合

それぞれ、非常にSQLがすっきりしましたね。

SELECT SALARY FROM TYUNEN; //SQL1

SELECT DEPARTMENT FROM TYUNEN
GROUP BY DEPARTMENT;//SQL2

他には、良く使う「結合済みのテーブル」なんかを、ビューとして定義しておくと非常に便利かもしれません。

アクセス権限を割り振ることができる点

「ありのままのテーブルA」、「テーブルAから、機密情報を除いたビューB」というように、それぞれ作っておき、利用者の権限に応じて、どちらを使うか振り乾けることができます。

ビューのデメリット

想像以上に複雑なSQLになっていることも…。

ビューは、あくまで、SELECT文に名前をつけただけのものに過ぎません。

なので、SQLがシンプルになりわするが、SQLの実行速度自体が早くなることはないのです。

安易に、ビューで簡素化されたから、少し複雑なSQLを書いてやろうと思うと、思ったよりパフォーマンスが悪くなることがあるので、気をつけましょう!

ビューの注意点

ビューでORDER BY句は使えないです。

ビューではOREDER BY句を使うことができません。

なぜなら、ビューには「行に順序という概念がない」ためです。中には、ビューにORDER BY句を許すRDBMSもありますが、基本的には許されていないので使用しないでおきましょう。

ビューは、特定条件で更新が可能です。

ビューは基本的に、直接更新することが許されないです。

しかし、下記の条件を満たせば更新することが可能です。

  • SELECT句にDISTINCTキーワードが含まれていない場合
  • FROM句に含まれるテーブルが一つだけの場合
  • 「GROUP BY句」、「HAVING句」をそれぞれ使用していない場合

「マテリアライズド」・ビューとは?

SELECT文の実行結果をキャッシュしているテーブルのようなもので、データを直接もっており、インデックスも使えるので「性能のよいビュー」というイメージです。

性能重視である場合は、こちらの利用も検討されてもよいかもしれません。

※一部のDBMSで利用可能な機能になるので、実務で避けられる傾向にあります。あまりお目にかかる機会はないかもしれません。

スポンサーリンク
  • 2018 04.24
  • miyabisan2
  • コメントを書く
  • データベース
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 04.22

    【Java】JDBCをWebアプリで使う場合で考慮すること(データソースなど)

  2. 2018 04.08

    【データベース設計】テーブルを作る際の基本ルール(物理設計)

  3. 2018 04.28

    【データベース】トランザクションが競合しないための仕組み(ロック、分離レベル)

  4. 2018 04.30

    【SQL】内部処理の仕組み(Oracle)

  5. 2021 09.26

    【データベース】テーブル設計:「削除フラグの闇」について

  6. 2018 04.28

    【データベース】ER図の基礎知識(見方等)、ツール、DBスペシャリストでのER図

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【データベース設計】インデックス(索引)の基本

【データベース設計】採番について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー