質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

3回答

2141閲覧

【DB】ステータスを表すフィールドに"削除"、"公開"、"下書き"と日本語情報を入れるのは邪道?

退会済みユーザー

退会済みユーザー

総合スコア0

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/04/26 01:19

おつかれさまです。初歩的な質問で恐縮です。。

悩んでいる点

現在ブログのシステムを作成しています。

ブログ記事のステータスを表現するテーブルをDBに持っているのですが、そこに入れるデータを「1,2,3」というような数字にすべきなのか、それとも「"削除"、"公開"、"下書き"」とすべきなのか悩んでいます。

それぞれメリットデメリットを考えてみているのですが、

数字のメリット:表記がブレない
数字のデメリット:どの数字がどのステータスなのか忘れがち
日本語のメリット:意味が一発でわかる
日本語のデメリット:表記揺れしそう

ここで、ステータスの入力画面でステータスをプルダウンから選ばせるとかすれば表記揺れもなくなり、ステータスを日本語でもっても良い気がするのですが、何となくの気持ち悪さが残ります。

私の気がついていないデメリットや、将来バグの温床となるような部分があったりするのでしょうか? 日本語でのステータス管理はここがダメだよ! というのがありましたら、ご教授願いたいです。

以上です。よろしくお願いします!!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

自分でしたら、「ステータスリスト」というテーブルを持たせて、そこにIDと名前の対応を入れる、という方法を取ります。

この方法を使うと、

  • CHECK制約がなかったMySQLでも、外部キー制約で値を限定できる
  • Railsなど強力なActiveRecordのある環境などでは、名前へのアクセスも比較的容易
  • キーになる値は数値なので処理がしやすく高速
  • IDと名前以外に、ステータスに紐づく情報ができた場合にも、リストテーブルへ入れておくことができる

などのメリットがあります。

投稿2019/04/26 01:23

編集2019/04/26 01:25
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/26 01:32

そっこうありがとうございます。 確かにそのようにテーブルを持ちたいなと思いました。使っているシステムがFileMakerというちょっと独特なやつなのですが、外部キー制約というのをうまいこと実装できればいいなと思います。 ありがとうございます!
guest

0

コードと表記は別物です。一緒にすると表記を変える=プログラムの変更となるのが殆どです。

データの見易さという事からコードが日本語であっても別に構わないと思いますが、その見易さという観点はエンドユーザーでは無いという事。
(※表記が変わるなら同様に変更されなければ、エンドユーザー視点ではない)

という事で、コードと表記を持つ情報を別途準備する前提で、コードは表記と誤解されないもの(高速であることを考えるとやはり数値)にするのが良いかと思います。

コード体系ごとにテーブルを持つというのは面倒だったりします。
アンチパターンではありますが、汎用的なメタデータのテーブル(※)という方法もあります。
※推奨はしませんが、性能的な面でアンチパターンと感じたことは無いですね。
参照側の構造によっては、ER図を作るツールでリレーションができなかったり(=外部参照できない)しますけど。

投稿2019/04/26 01:57

編集2019/04/26 03:35
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

通常はマスタと呼ばれるコードと表示名のテーブルを持ちます。
で、データが入るテーブルにはそのコードを入れる

ステータスの入力画面でステータスをプルダウンから選ばせるとかすれば

マスタからプルダウンを作れば良いです。
optionのvalueをコードに、選ぶのは表示名にできますね。

数字のデメリット:どの数字がどのステータスなのか忘れがち

データ取得時のSQLでデータテーブルのコードとマスタのコードでJOINして表示するときは表示名にすれば良いです。

投稿2019/04/26 03:29

編集2019/04/26 03:30
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問