人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Oracleでテーブルを作成しようと思います。
以下の項目について、それぞれどんなメリットデメリットがあるでしょうか。
皆さんの開発現場ではどうしていますか。

テーブル名:アルファベットか、日本語か
日時:日時型、文字型、数値

以前の会社では、テーブル名は「アルファベット」、日時はもっぱらCHAR型でした。
とある開発会社のアプリは、テーブル名は「日本語」、日時はもっぱらNUMBER型でした。

日時は、どういう意図で日時型を選択しないのか、いまいちわかりません。
宜しくお願いします。

●質問者: kyoko55
●カテゴリ:コンピュータ インターネット
✍キーワード:Char Number Oracle いまいち とある
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ながの
●27ポイント

論理設計の権限が私にあるならば、以下にします。


テーブル名、カラム名はアルファベットを選択します。

日本語のテーブル名、カラム名を使うと、SQLを書くときに英数/かなの切り替えが面倒だからです。

一方、日本語にするメリットは、SQL予約語と、テーブル名カラム名の区別が、見た目で付きやすいですね。


日時は、日時型(date, datetime, timestamp等)を選択します。

日付であればchar(8)でもよろしいかと。データの見た目でわかりやすいからです。(select文をどう書くか、にもよりますが)

日時型であれば、SQLでの計算がしやすいですね。char型だと、アプリ側で計算してからSQLに渡す羽目になります。

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


2 ● Ktwo
●27ポイント

(日時型を使用するデメリット)

「日時型は(CHAR型やNUMBER型に比べて)取り扱いが難しい」気が致します。

慣れれば、大きな問題とは思いませんが、TO_CHARや、TO_DATE関数などを

使用する手間(?)が面倒だと感じることがあります。

(日時型を使用するメリット)

その項目に編集されている値が、日付として認められる値であることが、

はっきりしていることだと思われます。

あと、日付の計算(月末日+1日=翌月の一日)が可能なところかと

思います。

「暗黙的な変換」

http://www.shift-the-oracle.com/inside/implicit-conversion.html

「日付データ/文字列データの変換」

http://oracle.se-free.com/dml/07_todate.html

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


3 ● khazad-Lefty
●26ポイント

私の場合、好きにできるのであれば、

カラム名:日本語

意味が分かりやすいこと、プログラム上で列名が分かりやすいなどの視認性がメインです。

あと、英語にすると、英訳のズレ、ローマ字表記のブレなどの規約をかなり厳密にしないと、

表示ブレが日本語名以上に起こりやすいということですね。

デメリットは、漢字変換違いや送り仮名による表記ブレ(ただし個人的にはアルファベット使用時のときよりも小さいと考えてます)、あとIME切り替えの手間、言語系によっては日本語をうまく扱えないのがあるなどでしょうか?


日付:日付型

なによりそのために作られた型なので、それを使うのが自然だというのが一番の理由。

具体的なメリットは日数計算など、必要な関数がSQL側に揃っていること。

例えば何年何月何日は何曜日?というのも日付型ならすぐに出てくること。

デメリットは、まず、処理系によって使える日付範囲が異なること。

「内部的にどの日付を基準とするか」が処理系によって違う場合があるため、扱える日付の範囲が違ってくる可能性がある。

それと、日付でない値が使えないこと。

これ自体は日付型の最大のメリットでもあるのですが、例えば、文字型で「有効期限が終了していない場合」には、9999-99-99などの日付が使うことで単純にBetweenなどで有効なデータを引き出すことができますが、日付型だと同様のことを行うには"3000-12-31"などの実在する日付を使うか、Null(単純にBetweenなどでは指定できなくなる)をしようするしかなくなる。ちなみに私はそういう場合Nullを使用しています。

また、日付未定の場合はNullを使用せざるを得ないわけで、Nullを嫌がる人は日付型を使用しないかと思います。

http://www.geocities.jp/mickindex/database/db_getout_null.html

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。

文字型の環境で、「9999-99-99」を使用している例を見たことがありました。

確かに、日付型ではできないですね。

皆さん、ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ