Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドメイン名の話 (データベース,SQL)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tsuda.a
July 04, 2015
Programming
24
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメイン名の話 (データベース,SQL)
データベースのドメイン名の話
tsuda.a
July 04, 2015
More Decks by tsuda.a
See All by tsuda.a
Git を GUI で使う話
tsudaahr
0
95
マジカルインクリメントと指数表記
tsudaahr
0
250
バックアップしていますか?
tsudaahr
0
150
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
160
NPUわからん
tsudaahr
0
210
計算量オーダーの話
tsudaahr
1
460
クラウド初学者が抱える不安について
tsudaahr
0
330
キューとは何か
tsudaahr
0
280
等幅は死んだ(ぇ
tsudaahr
0
130
Other Decks in Programming
See All in Programming
Modding RubyKaigi for Myself
yui_knk
0
890
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
590
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
560
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
150
dRuby over BLE
makicamel
2
320
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
760
Oxcを導入して開発体験が向上した話
yug1224
4
290
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
450
OSもどきOS
arkw
0
450
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
630
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.1k
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Claude Code のすすめ
schroneko
67
230k
Exploring anti-patterns in Rails
aemeredith
3
390
Crafting Experiences
bethany
1
170
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
320
The Curious Case for Waylosing
cassininazir
1
370
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Documentation Writing (for coders)
carmenintech
77
5.4k
The Limits of Empathy - UXLibs8
cassininazir
1
350
Transcript
ドメインの話 LTDD #15 @tsuda_ahr
ドメインというと色々ありますが… 今回のドメインは、www.servername.com 、的なやつじゃないです。
昨年、某DB勉強会のハンズオンで、こんな ER 図を書きましたが
列名の命名方法で質問があったんですね。 なぜ「file_size」なのか。 「Size」じゃないのか?
ドメイン(定義域)という考え方がありまして。 列名はオブジェクト指向のプロパティやフィールドとはちょっと違う感じ。 列名 = 型、に近い。 この「型」のようなものを「ドメイン名」と呼ぶ。
ドメイン名の利点1: 自然結合 普通に結合 select * from TABLE_A inner join
TABLE_B on TABLE_A.key1 = TABLE_B.key1; こう書ける select * from TABLE_A natural join TABLE_B;
つまり 普通の結合の場合は、結合する列の対応を記述しないといけない。 自然結合の場合は、同名の列名は結合の対象と自動で判断する。 記述量が減るので、ちょっと便利。 ただ、自然結合は、同名の列名すべてと JOIN
するので使いづらい場合が多い。
ドメイン名の利点2: 自然結合を使わない場合でも! 同名の列は「結合の条件となり得る」と判断できる。 逆に、列名が違うもの同士の結合は結合してはならない、という暗黙の了解(=規約)を得るこ とができる。 (オブジェクト指向でいう「型の違う代入」と同等) こちらの利点が主力。
利点2の場合は、実は別の方法もある create domain 文 本当にデータ型を作る -- PostgreSQL の例 create
domain file_size as numeric(12); create table TABLE_A( key1 as varchar(10), size as file_size ); -- Oracle にはない模様
create domain の利点と欠点 型名(ドメイン名)による、列の生成が可能となる。 →命名規約というあやふやなものに依存しなくて済む。 他方、ドメイン名に頼って列名を自在に命名すると、自然結合が効かなくなる。 結合列の是非も列名からだけでは判定できないので、SQLの組立てが難しくなる場合が多い。
(ハンガリアン記法みたいですね)
まとめ 列名は、オブジェクト指向プログラミングのようにオブジェクト(=テーブル)単位で ユニークにするのではなく、スキーマ単位,あるいはもっと上位のレベルでユニークに するようにします。 列名は「変数名(プロパティ名)」ではなく、「型名」だと思うようにします。 つまり、同じ列名を持っているものは、みな同じ性質を持っていて、かつ、他のテーブルで 同名の列名がある場合には、その列との結合が可能であるように設計します。
しかし例えば同じ型(?)の列が必要な場合もあるので、そのあたりは臨機応変に。 例)自分の性別と恋愛対象の性別を、同一のテーブルに定義する場合とか。
ご清聴ありがとうございました。