1

ヘルスケアフォームデータベースを設計しています。さまざまな形式を使用しており、ユーザーIDと年は一意の識別子です。現在、フォームごとに1つのテーブルがあり、それぞれにユーザーIDと主キーの年があります:ex、table health_form_1、pk(user_id、year)さまざまなフォーム固有の列。テーブルhealth_form_2、pk(user_id、year)さまざまなフォーム固有の列。

すべて同じ主キーを持つテーブルのセットを見ると、奇妙に感じます。これを行うためのより良い方法はありますか?

4

2 に答える 2

2

データベース テーブルをフォームにマップしないでください。むしろ、テーブルは、システムがモデリングしている現実世界のエンティティにマップする必要があります。

たとえば、医療費請求システムで作業している場合、次のようなテーブルがあるとします。

  • 忍耐強い
  • 臨床医
  • 請求書

等...

これらの各テーブルには、独自の主キーがあります。

于 2012-06-28T15:25:45.120 に答える
1

このアプローチの問題点は、ビジネス要件が変更された場合 (たとえば、ユーザーが同じフォームを 1 年に複数回作成できる場合など)、主キーを変更しなければならない状況になることです。他の場所で外部キーとしても使用されると問題になります。

代わりに、テーブルごとに代理自動インクリメント主キーを作成し、代わりに UserID 列と Yeart 列に一意のインデックスまたは制約を作成します。

さらに、多くの ORM は 1 つの PK でより適切に機能し、クエリをより簡潔にすることができます。

于 2012-06-28T15:25:17.450 に答える