0

私は全国レベルの病院管理アプリケーションに取り組んでいます。つまり、私の国のすべての病院がそれを使用する予定です。

そのため、データベースをどのように設計すればよいかを知る必要があります。

ここで最も懸念されるのは病院と患者です。これら 2 つのものを mysql データベースにどのように配置すればよいですか。つまり、すべての病院の患者を 1 つのテーブルに、病院を別のテーブルに格納し、それらを外部キーでリンクするのは良いことです。

以下のこれらの画像を確認してください 病院のテーブル

患者テーブル

// Save Patient - Personal Details
$sql = "INSERT INTO ". TABLE_PATIENTS_PERSONAL ."";
$sql .= "(hospital_id, title, first_name, middle_name, last_name, date_of_birth, age, sex, occupation, marital_status, religion, tribe, preferred_language, datecreated, datemodified) VALUES";
$sql .= "($hospital_id, '$title', '$first_name', '$middle_name', '$last_name', '$date_of_birth', $age, '$sex', '$occupation', '$marital_status', '$religion', '$tribe', '$preferred_language', now(), now())";
$query = $mysql->query($sql);

ここまではやっていますが、記録が増えたらどんな問題が出てくるのか心配です。

アプリケーションが稼働すると、患者テーブルは数百万になるはずです。それで、大量のレコードやその他の一般的なデータベースの問題などを処理する問題がないように、どのように理想的に設計する必要があるかについての提案が必要ですか?

4

2 に答える 2

0
  1. 必要なすべてのインデックスが配置されている必要があります
  2. RDBMS の正規化と非正規化の概念に戻って、どのレベルの正規化が役立つかを判断してください。
  3. 十分なフィールド サイズがあることを確認してください - 特定のフィールドが長すぎたり短すぎたりすることがわかりました
  4. 冗長なフィールドを持たない (例 - 年齢と生年月日)
  5. 多くのフィールドが null になる可能性があります。そうしないと、最初のレコード自体が失敗することを確認してください
  6. その他の問題は、DB のサイジング、機能などの DBA 関連です。それについては DBA に確認してください。
于 2012-11-01T12:44:22.273 に答える
0

私はmysqlの経験がほとんどありませんが、優れたリレーショナルdbシステムでは数百万のレコードが問題になることはありません。

あるテーブルに患者が、別のテーブルにホスピタルが含まれているのは私には良さそうに見えますが、データベース内の変更を監視するアーカイブ テーブルも必要であり、このテーブルは非常に大きくなります。トリガーを使用してすべての変更をすべてのレコードに保存します(ただし、Oracleの経験があり、非常に大きなテーブルに慣れています)。

また、検索に使用されるフィールドが NULL であってはならないことを確認してください (Oracle では、NULL 値に対してインデックスは使用されません)。

于 2012-11-01T12:47:10.090 に答える