3

私は現在、紙ベースのシステムを新しいWebポータルに変換しています。会社(診療所)が新しい患者を登録するとき、患者が現在記入している特定のフォームがあります。このフォームには28の質問が含まれており、質問ごとに最大20の異なるyes/noオプションがあります。

私の質問は、多くの列(おそらく300もの多く、ほとんどがBITフィールドを含む)を持つ1つのテーブルを作成する必要があるのか​​、それとも何らかの方法で正規化する必要があるのか​​ということです。

すべてのフィールドは単一のエンティティに関連付けられています。患者がここにいる理由。

私のデータベース設計の経験では、100以上の列を持つ巨大なテーブルは一般的に眉をひそめていますが、コミュニティがこの例についてどう思っているかを確認したいと思います。

4

1 に答える 1

2

多くの boolean ( ) フィールドを使用する場合、ビットごとの合計であるBIT単一のフィールドを使用する方がよい場合があります。INTこれにより、ストレージとテーブルの定義が簡素化されますが、コードがより複雑になります。テーブル「Patients」と、さまざまな意味を持ついくつかの数値があるとします: 薬を飲んでいる、パラセタモールでアレルギーがある、糖尿病などです。チェックされたフィールドを挿入すると、対応する数値が単純に合計されます。select ステートメントを実行するときは、bitwise-and 比較を少し行います: TotalValue & Value = Value. ここに少しのコードがあります:

CREATE TABLE #Patients(Id INT, PatientName VARCHAR(50), MiscIssues INT)

DECLARE @IsOnMedication TINYINT = 2
DECLARE @IsParacetamolAllergic TINYINT = 4
DECLARE @IsDiabetic TINYINT = 8

INSERT INTO #Patients
VALUES
    (1, 'A', @IsDiabetic + @IsOnMedication)
    , (2, 'B', @IsDiabetic + @IsOnMedication + @IsParacetamolAllergic)

SELECT * FROM #Patients WHERE MiscIssues & @IsDiabetic = @IsDiabetic

DROP TABLE #Patients

もう 1 つのオプションは、カスタム フィールドを使用することですが、私の経験では、大量のレコードがある場合、このアプローチはうまく機能しません。

于 2012-07-09T00:08:35.560 に答える