連関エンティティの説明のまえに、こんにちわ
こんにちわ。お昼もお茶ですね。まだまだ新米の京茶華です。
本日はデータベース設計をしている中でよく使う、
「連関エンティティ(中間テーブル)」について語ってみます。
具体例
まず、具体例ですが
ユーザーがマイページを持っていて、そこにプロフィール情報を書き込むような、
よくあるサイトを思い浮かべてみてください。
そういう時、たいていの場合
・名前
・生年月日
・性別
・住所
・メールアドレス
・趣味
.....etc.......
のような情報を登録すると思います。
この時、
名前や生年月日は、ひとりのユーザーに一つしかありません。
当たり前ですね!
そういう時は、そのままデータベースに入れてしまいます。自然ですね!
そうやって、「ああ、なんだ、簡単じゃないか!」と思って作業を進めていると
ぶつかります。
「趣味」です・・・
趣味はひとりのユーザーにとって一つとは限らないですよね!
要するに、N:N の関係です。
スポーツも音楽も本も・・・好きっていうことになると
それ用のカラムをどんどん増やしていかなければなりません!大変!
しかしここで少し頭を使って、「趣味カラムの中にコンマ区切りで連結すればいいんだ!」
とかを思いつき、趣味カラムの中に唖然とする位カンマ区切りの趣味がどんどん連結されて格納されたとしても、
その一瞬は楽でも、後々、JOIN できない!とか、いちいち LIKE で検索して取り出さないといけない!とか。。。
問題が発生し始めます。
その時に やっと本題!「連関エンティティ」を利用したら便利ですよ!
連関エンティティ利用方法
よし、連関エンティティを利用しよう!ということで
まず、上の例でいうと、
member テーブル がありますよね!
そのなかの member_id はまず、ユーザーにとって固有のものですよね。
なので、趣味をどんどん追加していっても便利に利用できる中間テーブル
「member_hobby テーブル」を作成して
user_hobby TABLE
| member_hobby_id | member_id | hobby_id |
とします。
hobbyテーブルには
| hobby_id | hobby_contents |
としてデータを持っておくことで
連関エンティティを利用し、
快適に JOIN も SELECT も行えてしまいます!便利ですよね!
この場合、hobby_id と member_id の組み合わせによって
member_hobby は一意のものとなります。
なお、hobby_id と member_id にはそれぞれ外部キーを設定します。
このように連関エンティティや外部キーを用いるデータベースを
RDB(リレーショナルデータベース)といいます。
複数のテーブルが「関係(リレーション)」で結ばれ、相互連結可能であり、
関係に対して「制限・射影・結合・和・差・交わり」などの関係代数演算(集合演算を含む)ないし関係論理演算を行うことで結果を取り出します!
現在、最もポピュラーなデータベース設計です!
サイブリッジラボ
株式会社サイブリッジがデザインやシステムのノウハウを公開!
月別 アーカイブ
カテゴリ
- API (4)
- Apache (1)
- Application (6)
- Design (12)
- Firefox (2)
- Flash (7)
- Google Chrome
- HTML + CSS (8)
- Javascript (3)
- Mobile (3)
- MovableType (1)
- MySQL (2)
- OS (1)
- OnlineSearvice
- OnlineService (3)
- OpenSource (2)
- Other
- PHP (11)
- SEO・SEM
- Server (2)
- Windows (2)
- google app engine (1)
- アクセシビリティ (1)
- アクセス解析 (1)
- セキュリティ
- プロトコル (2)
- ベータサービス (1)
- 公共事業
- 社内システム (1)
- 社内制度 (1)
- 自己紹介 (19)
- 開発環境 (7)
サイブリッジスタッフ
水口翼
かのう
ぬいぐるみ
いそっち
ボブ
濱田優貴
しんぶー
ぴんしゃん
ハシモト
けっつん
acurry
ハラ
ぐーちゃん
はーにゃ
とくなが
ぽこ太
京茶華
やす
啄木鳥
イトウ
検索
タグ
- 1982年9月8日 (1)
- _notes (1)
- actionscript (3)
- Adobe (1)
- API (2)
- api SDK apple iTunes COM WSH (1)
- Asterisk (1)
- ATOK (1)
- bitmap (1)
- B型 (1)
- CakePHP (2)
- CDATA (1)
- CMS (1)
- CSS (3)
- CSS3 (1)
- ctp (1)
- DB (1)
- design (4)
- dotCMS (1)
- Dreamweaver (6)
- Drupal (1)
- EC (1)
- Explorer (1)
- extraction (1)
- eラーニング (1)
- Firefox (1)
- firefox (1)
- firefox アドオン add-on タブ 拡張 (1)
- Fireworks (5)
- fireworks (2)
- FLASH (5)
- FlashMediaServer (1)
- font (1)
- font-face (1)
- frame work (1)
- Frog (1)
- get_template_vars() (1)
- google (1)
- Google Analytics API (1)
- Google App Engine (1)
- Habari (1)
- HTML (1)
- html5 (1)
- HTML5 (2)
- IE (1)
- iPhone (1)
- IP電話 (1)
- IrfanView (1)
- java (1)
- JIS規格(JISX8341-3) (1)
- JPEGマスク (1)
- jquery javascript prototype ajax (1)
- JSON (1)
- LAMP (1)
- LIBXML_NOCDATA (1)
- livedoor (1)
- logo (1)
- LoL (1)
- mac (1)
- MassiGra (1)
- Melody (1)
- mixiアプリ (3)
- MODx (1)
- MT (1)
- MySQL (2)
- MySQL ENUM (1)
- ocPortal (1)
- OpenCms (1)
- Photoshop (2)
- php (1)
- PHP (5)
- php PHPlot グラフ (1)
- PHP 並列処理 (1)
- PHP5 (1)
- print css (1)
- prototype $関数 ajax (1)
- PubSubHubbub (1)
- Python (1)
- Radiant (1)
- Red5 (1)
- RSS (1)
- RTMP (1)
- SEO (1)
- SimpleXML (1)
- Smarty (1)
- Smarty テンプレート (1)
- sNews (1)
- SSD (1)
- symfony (1)
- Symphony (1)
- Textpattern (1)
- Thumbs.db (1)
- twitter (2)
- Typekit (1)
- TypeKit (1)
- USB (1)
- VPN (1)
- web (1)
- webdesign (1)
- Webサービス (1)
- webデザイナー (1)
- webデザイン (1)
- Windows (2)
- windows (2)
- windows7 (1)
- WP (1)
- xhtml2 (1)
- XnView (1)
- XOOPS (1)
- アイコン (1)
- アクセシビリティ (1)
- アクセス解析 (1)
- アクティブディレクトリ (1)
- アドオン (2)
- インスピレーション (1)
- エミュレーター (1)
- オンライン (1)
- カラー (1)
- キーボード (1)
- クラウド (1)
- グラフィックデザイン (1)
- グループウェア (1)
- ゲーム (1)
- コマンドプロンプト (1)
- コードヒント (1)
- サンプル (3)
- サーバ (1)
- サービス (1)
- シミュレーター (1)
- ショッピング (1)
- ショートカット (1)
- スケールアウト (1)
- スケールアップ (1)
- ソフト (1)
- タグライブラリ (1)
- チェックツール (1)
- テクスチャ (1)
- テスト (1)
- テレビドラマ (1)
- デザイナー (2)
- デザイン (2)
- デザイン展 (1)
- デュアルモニタ (1)
- デュアルモニター (1)
- トリプルディスプレイ (1)
- トレンド (1)
- ドラマウォッチ (1)
- ニアレストネイバー (1)
- ネットショップ (1)
- ハードウェア (1)
- バイキュービック (1)
- バイキュービック法 (1)
- バイリニア (1)
- バグ (1)
- フォント (3)
- フットサル (1)
- フリー (1)
- ブラウザ (1)
- プログラマー (2)
- プロトコル (1)
- プロフィール (1)
- モニタ (1)
- モバイル (2)
- モバイルサイト (1)
- モバイルサイト制作 (1)
- モバイルサイト構築 (1)
- ランチ (1)
- リモートデスクトップ (1)
- レンダリング (1)
- ロゴ (1)
- ロゴデザイン (1)
- 中間テーブル (1)
- 京茶華 (1)
- 勉強会 (1)
- 圧縮率 (1)
- 委員会 (1)
- 教育 (2)
- 書体 (1)
- 正規表現 (2)
- 水口翼 (1)
- 無料 (1)
- 生産性 (1)
- 画像 (1)
- 画像編集 (1)
- 米国リハビリテーション法508条 (1)
- 縮小表示 (1)
- 自己紹介 (4)
- 設計 (1)
- 連関エンティティ (1)
- 開発環境 (1)
- 高速化 (1)
ラボ的メディア
最近のブログ記事
社内風景ライブカメラ
社内風景を24時間リアルタイムで公開しています。ライブカメラに関する取り組みについて