0

データベースの設計に問題があります。

次のテーブル構造を持つドキュメントを含むテーブルがあります。

[Documents]
Id [int] 
FileName [varchar]
FileFormat [varchar]
FileContent [image]

私のプログラムでは、各ドキュメントはスタンドアロン (エンティティとの関係なし) にすることも、Customer または Employee 型のいずれかのオブジェクトとの関係を持つこともできます (さらにいくつかは近日中に公開される予定です)。

各エンティティには、データベース内の ID があります。たとえば、Employee-Table は次のようになります。

[Employee]
Id [int]
Fk_NameId [int]
Fk_AddressId [int]
Fk_ContactId [int]

私の考えは、エンティティとドキュメントを接続するためのテーブルを作成することです。私は次のようなことを考えました:

[DocumentConnection]
DocumentId [int]
EntityId [int]
Entity [varchar]

DocumentConnection-Table のエンティティ列には、関係のテーブル名が含まれています。

タイプ Employee のエンティティの例では、この列には「Employee」が含まれます。私のアプリケーションでは、データベースからエンティティ文字列を読み取って、ドキュメントの選択ステートメントを作成します。

これがこれを行う良い方法かどうかはわかりません。

4

1 に答える 1

2

EmployeeDocument テーブル、CustomerDocument テーブルなどを用意する方がはるかに優れた設計になると思います。

これにより、提案された設計では不可能なエンティティ テーブルへの外部キーを使用できるようになります。設計では、entity 列と entityId 列に何でも入れることができ、実際に既存のエンティティに関連する外部キー関係を介して強制することはできません。

DocumentConnection テーブルを使用する唯一の理由は、アプリケーションが新しいタイプの関係を動的に作成する必要がある場合です。エンティティの各タイプには独自のテーブルがあると言ったので、そうではないと思います。

于 2013-04-25T15:59:17.527 に答える