12695


ステータスを保存するテーブルを作ろうと、`order_statuses`を作り、`status`カラムを作成したのですが、実際に値にアクセスしようとした時に、`order_status.status`のような感じで`status`が連続するのにすごい違和感があります。  
この場合、どのようにテーブル or カラムを命名したら、よりわかりやすくなるでしょうか？

[code]

    order_statuses:
      user_id
      order_id
      status (enum: approved, declined)
      comment
    
[/code]

### 追記

1つのorderに複数のユーザーがapproved, declinedを設定できます。


CC BY-SA 3.0
2015-07-25T06:18:07.493
12684
2015-07-25T19:51:57.963
2015-07-25T07:52:42.907
9860
9860
question
データベース設計
テーブル名とカラム名のつけ方について


order_statusテーブルの名前から推察できるのは「orderの状態に特化した管理」かなぁと思いましたが、他のカラムから推測するに、ユーザIDとorderIDもありましたので、orderそのものを管理するテーブルではないだろうかと思いましたので、テーブル名からstatusを外した方が理解しやすいでしょうか。

ところでSQL文ではORDERは予約語ですので、つけるとすれば、item_order でしょうか。

参考になれば幸いです。


CC BY-SA 3.0
2015-07-25T06:27:01.720
12685
2015-07-25T06:27:01.720
5778
12684
answer


単に value としてしまってもいいかもしれませんね。  
sqlのvalues句と紛らわしくなるなら status_value とかでしょうか。

ちなみにmagentoなどではそのまま status を使っているようです。


CC BY-SA 3.0
2015-07-25T06:28:45.683
12686
2015-07-25T06:35:56.750
2015-07-25T06:35:56.750
10083
10083
12684
answer


例えば・・・ユーザーが何かを提案し、それに対し複数のユーザーが承認・却下を回答し、いくつか回答が集まった時点で結果が決まる、というのを考えてみました。

[code]

    提案:
      提案内容
      提案者
      状態 (レビュー待ち, 承認済み, 却下済み）
    
    # あるいは
    #
    # 状態 (レビュー待ち, レビュー済み)
    # 結果（承認, 却下)
    
    提案のレビュー履歴:
      レビュアー
      対象となる提案
      レビュー結果 (承認, 却下)
    
[/code]

status は対象の状態を表すものでしょうから、（履歴は別ですが）独立したテーブルを形成するのではなく、列として考えるのが適切かと思います。なので、

> 1つのorderに複数のユーザーがapproved, declinedを設定できます。

何の status や comment なのかを考え、それをテーブル名に使うべきではないでしょうか。もしその結果 `**_status` になるようなら、
`status` を使わない呼び方を考えます。


CC BY-SA 3.0
2015-07-25T13:02:37.623
12694
2015-07-25T13:02:37.623
8000
12684
answer


> 1つのorderに複数のユーザーがapproved, declinedを設定できます。

ということですが、  
「order: ラーメン食べる？」  
「user_1: approved, user_2: declined」  
のようなイメージで良いのでしょうか？  
だとすると、テーブル名は order_users という手もあるかと。

[code]

    order_users:
      user_id
      order_id
      status (enum: approved, declined)
      comment
    
[/code]

使い方としては下記の感じでしょうか。

[code]

    SELECT * FROM order_users WHERE status == `approved`
    
[/code]

ただ、これだと `order に対する user の集合` という意味になってしまうので、`ステータスを表現したいんだ!`
ということであれば、概念として適切ではないかもしれません。


CC BY-SA 3.0
2015-07-25T13:07:37.090
12695
2015-07-25T13:07:37.090
7471
12684
answer


order の status というと、発注済み、発送済み、納品済みなども連想されるので、テーブル名を `order_approvals`
などに変えてはどうでしょうか。

[code]

    order_approvals:
      user_id
      order_id
      status (enum: approved, declined)
      comment
    
[/code]


CC BY-SA 3.0
2015-07-25T19:51:57.963
12703
2015-07-25T19:51:57.963
3605
12684
answer