13

私のデータベースには、たとえばタイプを定義するテーブルがあります

表: パブリケーションの種類

ID | タイプ
----------
1 | 論文
2 | 概要
3 | 本
....

ID キーを介して、フィールドTypeIDを持つパブリケーション テーブルに関連付けられます。

次に、パブリケーション タイプに基づいてフィルター処理する .NET アプリケーションで PublicationTable データ テーブルを作成します。たとえば、次の関数は、特定の著者と出版タイプの出版数を示します。

    Public Function countPublications(ByVal authorID As Integer, _
                                      ByVal publicationType As Integer) As Integer

        authPubs を新しい PublicationsDataSet.tblPublicationsDataTable として暗くする
        authPubs = Me.getAuthorsPublications(作成者ID)

        Dim dv As New DataView(authPubs)
        dv.RowFilter = "status='published' AND type='" + _
                       publicationType.ToString + "'"

        dv.Count を返す

    終了機能

この関数を呼び出して、特定のタイプの著者による記事の数を取得するには、

  1. 2 つの整数で関数を呼び出す

    countPublications(著者ID, 1)

  2. 書くことができるように列挙型をセットアップします

    countPublications(authorID, pubType.Article)

    また

  3. どうにかしてパブリケーション タイプ テーブルを使用してパブリケーション データ セットをフィルタリングしますが、これを行う方法がわかりません。

他にどのようなアプローチを検討する必要がありますか。

ありがとう

4

4 に答える 4

5

前世でこの種のことを維持してきたので、私はスティーブンに同意しenumます。コードは明確であり、enumデータ型を追加する場合は1つのファイルのみを更新する必要があることを意味します。

また、値をデータベースのテーブルenumの値と一致させる必要があることを明確にするために、コメントを付けることをお勧めします。Publication Types

ちなみに、良い質問です!質問を非常に明確に説明し、投稿する前に解決策をブレインストーミングする時間を取ったことに対して+1。

于 2008-10-31T00:51:17.880 に答える
5

パブリケーション タイプが本質的に静的である場合は、列挙型で問題ありません

埋め込みの違いはほぼ間違いありません

inner join lookuptable lt on lt.id = (int)myenum.sometype 

クエリで追加する

inner join lookuptable lt on lt.name = "somehardcodeddescription"

どちらも埋め込み定数であり、前者はその背後に明確に定義された型を持っているだけです

代わりに使用できます

inner join lookuptable lt on lt.name = myenum.sometype.ToString

私は前者の方が好きです

一方、コードのデプロイ後に新しいルックアップ タイプが追加される可能性がある場合、列挙型はすぐに古くなります。

しかし、コードが必要とする静的な列挙値のコア セットがあり、残りは問題にならない場合は、前者のソリューションでも問題ありません。

いつものように、「場合による」;-)

于 2008-10-31T00:09:54.017 に答える
2

これは、パブリケーションタイプのリストが将来変更される頻度と、アプリケーションの更新をどれだけ簡単にプッシュできるかに依存すると思います。リストが頻繁に変更されない場合、またはフィールドでアプリを更新するのが簡単な場合は、列挙型が理にかなっています。リストが頻繁に変更される可能性がある場合、またはアプリの更新が特に難しい場合は、リストをデータベースのテーブルに保持するのが賢明です。

于 2008-10-31T01:36:04.340 に答える
0

さまざまな理由から、私の出版物タイプ リストなどのリストを 1 か所にまとめておくと便利です。データベース。その場合、変更する場所は 1 つだけです。ただし、これによりコードが複雑になるように思われます。雑誌記事などの特定の出版物タイプを参照したい場合は、コードにハードコードされた要素が必要になる場合があります。したがって、テーブル内のデータを反映する列挙型を持つことで、読み取り可能な方法でカウント関数を呼び出す可能性が与えられます

countPublications(authorID, publicationType.JournalArticle)

テーブル内のデータが変更される可能性が低い場合は、データベースにコメントを付けて、メンテナー (おそらく私) にコード内の列挙型を更新するように思い出させたり、その逆を行うことができます。

回答ありがとうございます。これで安心して進められます。

于 2008-10-31T16:23:24.297 に答える