患者の仮想コホートの生理学的特性 (収縮期血圧、トリグリセリド濃度など) のパラメトリック記述を格納するデータベース テーブルを作成する必要があります。
たとえば、ユーザーが SBP の三角分布を指定すると仮定すると、最小値、最大値、最頻値 (および分布タイプ) を保存する必要があります。別の方法として、平均値と標準偏差の保存を必要とする正規分布を指定することもできます。
これらのデータを正規化する正しい方法に苦労しています。現在、次のように多数の 1 対 1 の関係を持つ Cohort テーブルと Distribution テーブルがあります (一部のフィールドは省略されています)。
コホート id (INT、NOT NULL、プライマリ) 名前 (TEXT、NOT NULL) コメント (テキスト) systolic_blood_pressure_dist (Distributions.id を参照する外部キー) triglyceride_dist (Distributions.id を参照する FOREIGN KEY) ...その他の生理学的パラメーター ディストリビューション id (INT、NOT NULL、プライマリ) 配布タイプ (TEXT) 最小 (FLOAT) 最大 (FLOAT) 平均 (FLOAT) モード (FLOAT) sd (フロート) ...その他の分布パラメータ (アルファ、ベータ、形状、スケールなど)
(distribution_type は、分布を説明する文字列を保持します: "Triangular"、"Weibull" など)。
Distributions の各行に NULL フィールドが大量に残っているため、これが最適な方法ではないことは確かです。
私のもう1つの考えは、分布タイプごとに個別のテーブル(三角形用、ガウス用、均一用など)を作成し、中央にid列(コホートの外部キーとして使用される)を持つテーブルを作成することでした。テーブル *_dist 列)、適切な分散テーブルに行の外部キーを格納するための分散型列と id 列。
クエリは、Cohort 列に格納されている ID を使用して、中央のテーブルから分散タイプと行 ID を検索し、ID を使用して適切なテーブルのパラメーターを検索します。ただし、文字列を使用して適切なテーブルを選択し、別の ID を使用して適切な行を選択することは、従来の JOIN とはかけ離れており、あまりクリーンなアプローチとは思えません。
それで、これを最もよく達成する方法(正規化および/またはパフォーマンスの観点から)に関する提案はありますか?
どうもありがとう、リッチ