Skip to content

DataBase (データベース)

オープンソース・ワークショップ 永原 篤 edited this page May 5, 2019 · 10 revisions

データベースに関するコメント

チェックボックスのテーブル設計

選択肢が可変な場合は、別テーブルにする。
一つのカラムに区切り文字でデータを入れた場合、検索の完全一致が難しく、LIKE にならざるを得ない。
その場合、文字列を含む他の結果を対象とする問題がある。
また、区切り文字にしたものが登録できない。

以下のデメリットがあると考え、1カラムにパイプつなぎでやってみる。

  • 一覧表示時のデータ取得が複雑になる。
  • 検索時のSQLが複雑になる。

検索時にLIKE で他のものを拾わないようにするために、データの前後にもパイプを付けて、絞り込み検索では |検索値| で検索する。

データ抽出SQL

  • フレームに配置されていないコンテンツ・プラグイン
SELECT contents.* FROM contents
WHERE NOT EXISTS
(SELECT frames.bucket_id FROM frames WHERE contents.bucket_id = frames.bucket_id )
  • 紐づいていないコンテンツ・プラグインのbucketsデータ
SELECT buckets.* FROM buckets 
WHERE buckets.plugin_name = 'contents'
  AND NOT EXISTS (SELECT * FROM contents WHERE contents.bucket_id = buckets.id )
Clone this wiki locally