DB設計: Schemaをどう利用するか?


http://d.hatena.ne.jp/drugrammer/20070720

DBFlute作者というより、(未熟ながらも)DB設計者としてコメントします。

> SQLServerの場合、異なるスキーマでもテーブル名の重複は出来なかったような気がします。

試したことはないので自分もどうだったか...
全てdboに所属させていました。

> スキーマを単に名前空間として利用するのって一般的ではないのだろうか。
> プリフィックスをつけるべき?

そこは、DB設計をする人の好みやProject方針、組織、会社によって
変わるかもしれませんが、少なくとも自分が設計するときもしたことがありません。
(他でもあまり見たこと無いです)
それは、単に「スキーマの扱いが違うDatabase」を扱ってきてたことに
よるクセだったりするのかもしれませんが....
(なんだかんだいってどこいっても周りにはOracle出身者が多い...)

もし、自分がスキーマを利用する場合は、
少なくとも同じ名前のTableは作らないように気を使うと思います。
なぜなら、Projectの現場や打ち合わせ等でTable名で会話をすることが多いですが、
そのとき、Table名がユニークでないと勘違いが生まれてきそうなためです。
「ああ、売り上げ管理の方のORDER_DETAILの話ね。。。すまん間違えてた」
なんてことが1回でも起きて欲しくないと思うので。
(同様にTable名と同じ名前のColumn名も絶対につけないですね)


ちなみに
自分がDB設計する上でTable名やColumn名などの命名で一番気をつけていることは、
「会話がしやすいこと」
です。
無論、常識的に「そのEntityを明確に表している」とかその辺押さえますが、
個人的なこだわりで重視しているのが「会話」です。
ちょっと話それちゃいました...ごめんなさい


ちなみに自分は普段、EA(EnterpriseArchitect)でERD作ってます。
ERWinは使わないのかって?だって高いんですもの。
というかERWinの吐き出すHTMLのERDでTableをClickしたときのTable詳細のWindowのSize、
えらい小さくで毎度Clickした後にWindow調整...どこかで指定で変えられないのかなぁ
ってどんどん話それちゃいました...ごめんなさい