タグ

2015年10月4日のブックマーク (6件)

  • 外部キー制約は重荷になるか - iakioの日記

    SQLアンチパターン 4章 キーレスエントリ(外部キー嫌い)より 外部キー制約によって、多少のオーバーヘッドが生じるのは事実です。しかし、以下にあげるように、他の選択肢と比べると、外部キーの方がより効率的であることがわかります。 書では、外部キー制約を使うことによってデータを更新する時の事前チェックを省略できるので効率が良いという主張。 とはいえ、データベースは「外部キー制約に違反した」というエラーは返してくれるが、複数の制約がある場合にそこからどの外部キー制約に違反したかを取得する一般的な方法は無いので、ユーザーに詳細なエラーの内容を提供する必要がある場合は、やはり事前チェックが必要になる。 あるいは筋が悪いけど、頑張ればどの制約に違反したかをエラーメッセージから拾えるかもしれない。いちいち自分で書く気にはならないが、そういうライブラリがあったら面白そうだ。 MySQLの例 ERROR

    外部キー制約は重荷になるか - iakioの日記
    suzuki86
    suzuki86 2015/10/04
  • 「SQL アンチパターン」を読んだ - tsucchi の日記 2nd season

    概要 割ともう書評も出揃ってる感がありますが、ようやく読み終わったので書こうと思います。 このSQLDB 設計でやってしまいがちな、ダメダメなパターンを体系化して、名前をつけたものです。また、なぜそうなってしまうのか、どうやって回避するのか、使っても良い場合があるとしたらどういう場合か、も書いてあります。 PoEAA なんかもそうなのですが、わりと「知ってたわー、N年前から知ってたわー」という感想なのですが、それは僕自信がここ数年、それなりに真面目に DB 設計やったり SQL 書いたりしてたから言えるわけで、Nが 0 ならそれに越したことはないと思います。 DB とか SQL とか自信ない人は是非読むべきです。DB 設計とか長くやってる人も、読んだほうがいいでしょうね。デザパタなんかと同様に、今後はパターン名知らないと、話が通じなくなっちゃう可能性がありますから。 経験の少な

    suzuki86
    suzuki86 2015/10/04
  • makopi23のブログ 「外部キー Night」に参加しました

    2015/2/13(金) 「外部キー Night」に参加してきました。 connpass http://connpass.com/event/11463/ 場所は千駄ヶ谷(代々木)のピクシブ株式会社さんです。 参加者は60人くらいでしょうか。 ・・・この勉強会のタイトル!そしてピンポイントなテーマw 惹きつけられずにはいられない! そんな私も、SQLアンチパターン読書会で4章「キーレスエントリ」の紹介を担当したということもあり、外部キーには少し思い入れがある一人なのです。 外部キーNightのお供に、書籍「SQLアンチパターン」の4章、「キーレスエントリー」をお一つ、いかがですか~ / SQLアンチパターン読書会 「キーレスエントリー」 に参加しました http://t.co/Z116mYUDyI #sqlap #fk_night — makopi23 (@makopi23) 2015,

    suzuki86
    suzuki86 2015/10/04
  • 我々は何故RDBMSを使うのか

    Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation. For the best experience please use the latest Chrome or Safari browser. Firefox 10 (to be released soon) will also handle it.

    我々は何故RDBMSを使うのか
  • 我々(主語が大きい)は何故MySQLで外部キーを使わないのか

    外部キー便利!!! MackerelではPostgreSQLで外部キーあり そのレコードがあることが保証される 各テーブルのidにアプリケーションレベル(Mackerelの場合Scala)で型付けをするとなお便利 MemberID型、MonitorID型 → idで誤ったテーブルを引くとかがない 日のスキーマ CREATE TABLE `member` ( `id` INTEGER unsigned NOT NULL auto_increment, `earned_item_count` INTEGER unsigned NOT NULL DEFAULT 0, `name` VARCHAR(191) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4; CREATE TABLE `item`

  • オレオレMySQLアンチパターン:One-track Minded - Qiita

    社内勉強会でMySQLアンチパターンというスライドを作成しました。 基的にはオライリーさんから出ている『SQLアンチパターン』の内容からチョイスしているのですが、1つだけオレオレアンチパターンを考えたので、せっかくなのでまとめてみました。 SpeakerDeckのリンクだけを載せるのもどうかなと思いますし。。 なんでもInnoDBなんでもInt アンチパターン概要 全てのテーブルのストレージエンジンをInnoDBにする。 全ての整数型のカラムをInt型にする。 つまり、何の考えもなしに(バ◯のひとつ覚え=One-track Minded)ストレージエンジンや型を決める。 シーン(どういう時に困るか) 顧客から急に全文検索機能の実装を依頼された。 ログテーブルが肥大化して、サロゲートキー(主キー)がオーバーフローした。 \(^o^)/オワタ デメリット(問題点) InnoDB 全文検索が利

    オレオレMySQLアンチパターン:One-track Minded - Qiita
    suzuki86
    suzuki86 2015/10/04