2016-03-22 10 views
0

私はプロジェクトで作業しているときに、データベースIDフィールドを表す変数または定数を定義することがしばしば簡単になります。 golangにはデータベースID定数/変数を定義するベストプラクティス

const (
    //SELECT ID FROM dbo.MyTable 
    MYTABLEID_NO = 1 // MyTable ID for NO 
    MYTABLEID_YES = 2 // MyTable ID for YES 
    MYTABLEID_MAYBE = 3 // MyTable ID for MAYBE 
) 

という定数があります。これは悪い考えですか?もしそうなら、どうすればこのようにすることができますか? golangでこれを行うよりダイナミックな方法はありますか?何らかの理由でIDが変更された場合、新しいIDが追加されるか、テーブルに多数のIDがあります。

+1

このコンテキストでは、「データベースID」とは何ですか?列にはIDがなく名前があります。列挙型をデータベースに格納しているように見えますが、コードにも列挙しているようです。もしそうなら、1つのままにして、他のものを捨ててください(そして、私は可変でない限り、データベーステーブルに些細なキー/値のペアを格納することはお勧めしません)。 – Dai

答えて

1

あなたは、これが単に好みにまで沸き立つので、これについては大きく異なる回答を得る可能性があります。私はこれが悪い習慣の一例であるとは思わないでしょう。 ormマッパーを使用していない場合は、定数や列挙型が「型定義」を表す良い方法になります。あなた自身に尋ねるべき2つの質問があります。

  1. 一度値が変更されますか?
  2. コードとデータベースの間に疎結合が必要ですか。

#1の答えが「はい」の場合は、最初に定数や列挙型を持つ直感的ではないため、型テーブルから値を引き出すことになります。 (型がアプリケーションの中核であり、値を追加するときに他のクライアントアプリケーションを変更する必要がない場合は、これを維持してロジック比較に使用する方が簡単です)

#2の答えがイエスならばormマッパーや、一定の範囲を動的に表現する他の方法を調べてください。データベースへの変更に応答できない場合、それはあなたを窮地に陥らせます。