5

.NET(C#、SQL Server)を使用してN層アプリケーションに取り組んでいます。私はデータベースを設計することから始めました。なぜなら、下から始めるのは良い考えだと思うからです。ここで、データベースを非常に柔軟に構築するための提案が必要です。アプリケーションがプラグインのグループとして構築されることを意図していることを知っています。

このアプリケーションは、さまざまなハードウェアデバイス(自動車、エンジンなど)用のリモートコントロールアプリです。データベーステーブルの一部を次に示します。

  1. デバイステーブル
  2. 人事表
  3. ユーザーテーブル
  4. 役割テーブル

ご覧のとおり、デバイステーブルは、制御しているデバイスを表すテーブルです。各デバイスのプロパティは他のデバイスよりも多かれ少なかれある可能性があるため、各デバイスを別のテーブルにある可能性のあるプロパティにリンクします。可能な限りエレガント。人事表は、デバイスの責任者を対象としています。たとえば、車の運転手(車ごとに複数の運転手がいる場合があります)、エンジンの運転手などです。

ご覧のとおり、ユーザーはアプリケーションユーザーであり、ユーザーと役割を2つの異なるテーブルに分けています。

私が探しているのは、デバイスをそれらのプロパティにリンクする方法です。さらに、アプリケーションでは、各デバイスは接続可能なデバイスのインスタンスです。たとえば、SIMカードをVehicleというデバイスに接続できることを意味します。また、このテーマに関するデザインパターンはありますか?

よろしくお願いします。よくわからない場合はご容赦ください。

4

3 に答える 3

1

データレイヤーをどのように処理するかによっては、このデータベース設計が重要なポイントになる場合があります。コードファーストアプローチでEntityFrameworkを使用する場合は、それを使用して論理エンティティを作成し、モデルからデータベースを生成できます。

ほとんどのORMベースのソリューションは、オブジェクトの関係からデータベースを作成する方法を提供しますが、データベースをすばやく簡単に起動して実行することで、必要なことを正確に実行できますが、スキーマを試してみたい場合は、トラブルが発生しますが、データベースを必要な方法でバックグラウンドで作成するために、かなり多くの推論を行うことができます。

これがグリーンフィールドプロジェクトであり、レガシーデータベースシステムに対応する必要がない場合は、今のところデータベースについて心配するのをやめ、論理モデルを作成してそれらの関係を定義し、データストレージの問題に対処させます。

于 2012-09-20T10:51:55.363 に答える
1

ここでの実際の設計上の決定は、デバイステーブルとプロパティテーブルに関するものです。他はかなり標準的です。

デバイスをオプションで1つまたは複数のプロパティに関連付ける場合、実際に必要なのは、プロパティテーブルのnull許容外部キーだけです。しかし、これは1つの非常に重要な質問を提起します。特定のデバイスが非常に特定のプロパティのセットを持つ必要があるのでしょうか。アプリケーションは、「Car」デバイスの「Model」プロパティを期待しますか? この種の設計でデータベースの整合性をどのように確保しますか?

これは、データベースで定義された制約を介して行うことができます。しかし、「Car」デバイスには「Model」プロパティが必要であることをどのように知っておく必要がありますか?おそらく、各デバイスのテンプレート定義(DeviceTypeテーブルとPropertyTypeテーブル)が必要です。このようにして、レコードを更新/挿入するときに、制約は常にどのプロパティが期待されるかを認識します。また、これにより、アプリケーションでデータを簡単に操作できるようになります。

于 2012-09-20T10:35:10.247 に答える
0

理想的なデータベース設計はありません。操作している情報に応じてすばやく変更できます。

簡単な方法の1つは、デザイン内のすべてのクラスを一覧表示してから、データを繰り返さずにそれらのクラスを可能な限り低いレベルに分割することです。

各デバイスにはさまざまなプロパティがありますが、デバイスをそれぞれのグループに分類することができ、グループにはほとんど同様のプロパティがあります。そのグループのすべてのプロパティを含むプロパティテーブルを作成できます。あなたが言ったように、あなたはdeviceIDとpropertyIDで別のテーブルにそれらを接続することができます。同じことが人とデバイスにも当てはまります。持っている属性に応じて、人物テーブルを細かく分割できます。

多数のテーブルがデータ抽出の観点からクラスターを形成している場合は、中央にファクトテーブル(実数)があり、その周囲に関連データがあるソリューションのスタースキーマを検討できます。

幸運を!

于 2012-09-20T14:18:56.573 に答える