Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Masahiro Tomita
PDF, PPTX
2,814 views
お前の罪を数えろ
NSEG #96 SQLアンチパターン読書会スペシャルで発表したスライド
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 73
2
/ 73
3
/ 73
4
/ 73
5
/ 73
6
/ 73
7
/ 73
8
/ 73
9
/ 73
10
/ 73
11
/ 73
12
/ 73
13
/ 73
14
/ 73
15
/ 73
16
/ 73
17
/ 73
18
/ 73
19
/ 73
20
/ 73
21
/ 73
22
/ 73
23
/ 73
24
/ 73
25
/ 73
26
/ 73
27
/ 73
28
/ 73
29
/ 73
30
/ 73
31
/ 73
32
/ 73
33
/ 73
34
/ 73
35
/ 73
36
/ 73
37
/ 73
38
/ 73
39
/ 73
40
/ 73
41
/ 73
42
/ 73
43
/ 73
44
/ 73
45
/ 73
46
/ 73
47
/ 73
48
/ 73
49
/ 73
50
/ 73
51
/ 73
52
/ 73
53
/ 73
54
/ 73
55
/ 73
56
/ 73
57
/ 73
58
/ 73
59
/ 73
60
/ 73
61
/ 73
62
/ 73
63
/ 73
64
/ 73
65
/ 73
66
/ 73
67
/ 73
68
/ 73
69
/ 73
70
/ 73
71
/ 73
72
/ 73
73
/ 73
More Related Content
PDF
Web エンジニアが postgre sql を選ぶ 3 つの理由
by
Soudai Sone
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
PDF
Rails SQL Injection Examplesの紹介
by
Hiroshi Tokumaru
PDF
mysql casual #4
by
kenji naito
PDF
Wtm
by
Soudai Sone
PDF
20120830 DBリファクタリング読書会第三回
by
都元ダイスケ Miyamoto
PDF
TypeScript 勉強会
by
Masahiro Wakame
PDF
Sequelのすすめ
by
Masahiro Tomita
Web エンジニアが postgre sql を選ぶ 3 つの理由
by
Soudai Sone
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
Rails SQL Injection Examplesの紹介
by
Hiroshi Tokumaru
mysql casual #4
by
kenji naito
Wtm
by
Soudai Sone
20120830 DBリファクタリング読書会第三回
by
都元ダイスケ Miyamoto
TypeScript 勉強会
by
Masahiro Wakame
Sequelのすすめ
by
Masahiro Tomita
Similar to お前の罪を数えろ
PDF
Database smells
by
Mikiya Okuno
PDF
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
PDF
オープンソース・データベースの最新事情
by
Meiji Kimura
PDF
PerlとSQLのいろいろ
by
Takuya Tsuchida
PDF
Sql基礎の基礎
by
Satomi Tsujita
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PPTX
PostgreSQL使いのエンジニアから見たMySQL
by
toshihiro_kitagawa
PDF
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
by
Kenta Oku
PDF
DB技術[実践]入門を読んだ
by
Yuuki Tan-nai
PDF
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
by
(株)TAM
PDF
Random partionerのデータモデリング
by
2t3
PDF
07 ソーシャルブックマーク(2)
by
文樹 高橋
PDF
Databasedesignforsocialgames 110115195940-phpapp02
by
hideki hasegawa
PDF
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
by
azuma satoshi
PDF
Japan.r 2データベース
by
sleipnir002
KEY
My sql casual_in_fukuoka_vol1
by
Makoto Haruyama
PDF
データマイニング+WEB勉強会資料第6回
by
Naoyuki Yamada
PDF
Sqlap teppei696
by
鉄兵 鈴木
PPT
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
PPT
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
Database smells
by
Mikiya Okuno
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
オープンソース・データベースの最新事情
by
Meiji Kimura
PerlとSQLのいろいろ
by
Takuya Tsuchida
Sql基礎の基礎
by
Satomi Tsujita
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PostgreSQL使いのエンジニアから見たMySQL
by
toshihiro_kitagawa
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
by
Kenta Oku
DB技術[実践]入門を読んだ
by
Yuuki Tan-nai
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
by
(株)TAM
Random partionerのデータモデリング
by
2t3
07 ソーシャルブックマーク(2)
by
文樹 高橋
Databasedesignforsocialgames 110115195940-phpapp02
by
hideki hasegawa
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
by
azuma satoshi
Japan.r 2データベース
by
sleipnir002
My sql casual_in_fukuoka_vol1
by
Makoto Haruyama
データマイニング+WEB勉強会資料第6回
by
Naoyuki Yamada
Sqlap teppei696
by
鉄兵 鈴木
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
More from Masahiro Tomita
PDF
MySQLの文字コード事情
by
Masahiro Tomita
PDF
MySQLの文字コード事情 2017版
by
Masahiro Tomita
PDF
文字化け
by
Masahiro Tomita
PDF
本当はこわいエンコーディングの話
by
Masahiro Tomita
PDF
文字化け
by
Masahiro Tomita
PDF
MySQLの文字コード事情 2017春版
by
Masahiro Tomita
PDF
MySQLを拡張する
by
Masahiro Tomita
PDF
「理論から学ぶデータベース実践入門」読書会スペシャル
by
Masahiro Tomita
PDF
本当はこわいMySQLプロトコル
by
Masahiro Tomita
PDF
ネットワークこわい
by
Masahiro Tomita
PDF
Ruby24
by
Masahiro Tomita
PDF
CSV
by
Masahiro Tomita
PDF
メールの暗号化
by
Masahiro Tomita
PDF
MyNAができるまで
by
Masahiro Tomita
PDF
Ruby 2.5
by
Masahiro Tomita
PDF
Crystal
by
Masahiro Tomita
PDF
🍣=🍺
by
Masahiro Tomita
PDF
進捗と品質
by
Masahiro Tomita
PDF
進捗と品質
by
Masahiro Tomita
PDF
アジャイルジャパン長野サテライト
by
Masahiro Tomita
MySQLの文字コード事情
by
Masahiro Tomita
MySQLの文字コード事情 2017版
by
Masahiro Tomita
文字化け
by
Masahiro Tomita
本当はこわいエンコーディングの話
by
Masahiro Tomita
文字化け
by
Masahiro Tomita
MySQLの文字コード事情 2017春版
by
Masahiro Tomita
MySQLを拡張する
by
Masahiro Tomita
「理論から学ぶデータベース実践入門」読書会スペシャル
by
Masahiro Tomita
本当はこわいMySQLプロトコル
by
Masahiro Tomita
ネットワークこわい
by
Masahiro Tomita
Ruby24
by
Masahiro Tomita
CSV
by
Masahiro Tomita
メールの暗号化
by
Masahiro Tomita
MyNAができるまで
by
Masahiro Tomita
Ruby 2.5
by
Masahiro Tomita
Crystal
by
Masahiro Tomita
🍣=🍺
by
Masahiro Tomita
進捗と品質
by
Masahiro Tomita
進捗と品質
by
Masahiro Tomita
アジャイルジャパン長野サテライト
by
Masahiro Tomita
Recently uploaded
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
お前の罪を数えろ
1.
自己紹介自己紹介 とみたまさひろ 得意技 Ruby MySQL 文字化け 好きなO/Rマッパーは Sequel ������������������������������������問題 1
2.
SQLの嫌いなところSQLの嫌いなところ 英語っぽい コンピュータで扱う言語っぽくない 予約語が多い カラム名に「group」が使えなくて死ぬ 余計な単語 INSERT INTO, GROUP
BY 2
3.
英語だからみんな騙されてるけど英語だからみんな騙されてるけど 日本語だったら「ぴゅう太」日本語だったら「ぴゅう太」 みたいなもんだからなみたいなもんだからな 3
4.
お前の罪を数えろお前の罪を数えろ NSEG #96 (お、丸8年では?) 2018/01/27 とみたまさひろ 4
5.
SQLアンチパターンを読んだ感想SQLアンチパターンを読んだ感想 5
6.
「あー、あるある」「あー、あるある」 6
7.
数えてみよう数えてみよう 7
8.
ジェイウォークジェイウォーク 1カラムに複数の値を格納する 8
9.
やったやった 「a,b,c」とするのはシロウト 「,a,b,c,」としておくと LIKE '%,値,%' で検索できて便利 9
10.
ナイーブツリーナイーブツリー 子が親IDを参照するツリー構造 10
11.
ふつーにやる そもそもツリー構造をRDBで表現するのが負け 同じ負けなら単純な方がいい そういえばMySQLも8から再帰クエリ書けますね Nested Set はやりすぎ感 http://tmtms.hatenablog.com/entry/20110223 /redmine 11
12.
IDリクワイドIDリクワイド すべてのテーブルに「id」列を用いる 12
13.
よくやった userテーブルのidカラムは user.id と書けていい感じ user.user_id
はなんか冗長 全体でカラム名を一意にした方がいいような気もする 13
14.
キーレスエントリキーレスエントリ 外部キー制約を使用しない 14
15.
え? MySQLをdisってんの? 初期のMySQLには外部キーなんてなかったんですよ 消す時に順番に気をつけないとエラーになるし PostgreSQL だと何か方法あった気もする 15
16.
エンティティ・アトリビュート・エンティティ・アトリビュート・ バリューバリュー 汎用的な属性テーブルを使用する汎用的な属性テーブルを使用する 名前カラムと値カラムみたいなやつ 16
17.
ごめんなさい 値の型ごとにテーブルを用意する くらいはしてもよかった 実はJSONでもいいかも 17
18.
ポリモーフィック関連ポリモーフィック関連 二重目的の外部キーを使用する二重目的の外部キーを使用する 18
19.
たぶんやってない…と思う 19
20.
マルチカラムアトリビュートマルチカラムアトリビュート 複数の列を定義する複数の列を定義する tag1, tag2, tag3
カラムみたいなやつ 20
21.
たぶんやってない…と思う 21
22.
メタデータトリブルメタデータトリブル テーブルや列をコピーするテーブルや列をコピーする 行数の多いテーブルを分割するとか 22
23.
諸般の事情によりやってました つらい 23
24.
ラウンディングエラーラウンディングエラー FLOATデータ型を使用するFLOATデータ型を使用する 24
25.
残念ながら使う機会がなかった 25
26.
サーティワンフレーバーサーティワンフレーバー 限定する値を列定義で指定する限定する値を列定義で指定する MySQLでENUM使ったり CHECK制約で値のリストを指定したり 26
27.
使ったことはある そんなに悪くなかったような… 27
28.
ファントムファイルファントムファイル 大きなデータをファイルで管理大きなデータをファイルで管理 28
29.
やってる ふつうやりますよね? まあつらいこともあるけど 29
30.
インデックスショットガンインデックスショットガン 闇雲にインデックスを使用する闇雲にインデックスを使用する 30
31.
たぶんやってない 31
32.
フィア・オブ・ジ・アンノウンフィア・オブ・ジ・アンノウン col=NULL とか func(NULL)
とかcol=NULL とか func(NULL) とか 32
33.
ふつうはやらない 33
34.
アンビギュアスグループアンビギュアスグループ 非グループ化列を参照する非グループ化列を参照する SELECT col1 ...
GROUP BY col2 とか 34
35.
やってた たぶんMySQL以外はエラーになる 意外と便利 https://twitter.com/tmtms/status /846254316797095936 35
36.
ランダムセレクションランダムセレクション データをランダムにソートするデータをランダムにソートする 36
37.
自分はやらないけどそういう要求があった場合はむずか しいですね 37
38.
プアマンス・サーチエンジンプアマンス・サーチエンジン LIKE '%文字列%'LIKE '%文字列%'
で全文検索で全文検索 38
39.
やるやる お手軽なのでおすすめ ��� PostgreSQLは何かの仕組みで LIKE
'%文字列%' でも インデックスを効かせることができたような 39
40.
スパゲティクエリスパゲティクエリ 複雑で長いクエリ複雑で長いクエリ 40
41.
SQL力が低くて複雑なクエリは書けません 41
42.
インプリシットカラムインプリシットカラム SELECT *SELECT * 42
43.
プログラム中ではふつうは書かない 手作業では使う 43
44.
リーダブルパスワードリーダブルパスワード パスワードを平文で格納するパスワードを平文で格納する 44
45.
昔やりました ごめんなさい 今は平文で格納することはないけど ハッシュ値じゃなくて復号可能な暗号にすることもある 45
46.
SQLインジェクションSQLインジェクション 未検証の入力をコードとして実行する未検証の入力をコードとして実行する 46
47.
O/Rマッパー使いましょう 47
48.
シュードキー・ニートフリークシュードキー・ニートフリーク 隙間を埋める隙間を埋める 偉い順にIPアドレスを振るみたいな? 48
49.
人目に触れるものをキーとしては つかわない方がいいですね 49
50.
シー・ノー・エビルシー・ノー・エビル 肝心な部分を見逃す肝心な部分を見逃す 例外機構がない言語でエラーチェックしてない 50
51.
そんな人いる? 例外を隠蔽するプログラムは見たことある 51
52.
ディプロマティックディプロマティック イミュニティイミュニティ SQLを特別扱いするSQLを特別扱いする プログラムを管理するようにはSQLを管理してない 52
53.
文書化はしてない ER図は必要になった時にツールで生成すればよくね? Railsのマイグレーションの仕組みはすばらしい 53
54.
マジックビーンズマジックビーンズ モデルがアクティブレコードそのものモデルがアクティブレコードそのもの 54
55.
あるある 55
56.
砂の城砂の城 想定不足想定不足 サービス継続・運用の話 56
57.
運用してないからパス 57
58.
結果結果 58
59.
13 / 2513
/ 25 59
60.
過半数 ��� 60
61.
おまけおまけ 61
62.
アンチパターンを考えてみたアンチパターンを考えてみた 62
63.
ソーリーソーリー ジャパニーズ・オンリージャパニーズ・オンリー 63
64.
日本語テーブル名/カラム名日本語テーブル名/カラム名 64
65.
英語 日本語 created_at 作成日時 user_name
利用者名 65
66.
あれ?わかりやすいあれ?わかりやすい 66
67.
文字数も少なくてすむし文字数も少なくてすむし 67
68.
入力は面倒だがエディタやIDEが入力は面倒だがエディタやIDEが きっとなんとかしてくれるきっとなんとかしてくれる 68
69.
情報処理推進機構(IPA)も推奨(?)情報処理推進機構(IPA)も推奨(?) 情報処理試験データベースで日本語テーブル名と日本語 カラム名のクエリを手で書かされた記憶が… SELECT 顧客名, 会社名
FROM 顧客管理台帳 LFET JOIN 会社管理台帳 USING 会社識別番号 WHERE 顧客住所 ... 69
70.
業務用語をそのまま使える業務用語をそのまま使える 70
71.
アンチパターン…? ������ 71
72.
実は結構よいのでは実は結構よいのでは 72
73.
おわりおわり 73
Download