1

この種の質問は以前にも何度か聞かれたことがあると思いますが、さまざまな回答がたくさんあるので、自分の状況に最も適したものを見つけたいと思いました.

心理学者向けのオンラインジャーナルをデザインしています。すべてのユーザー (心理学者) 情報を格納するためにメイン DB に 1 つのテーブルを用意する予定ですが、ユーザーが入力したい患者データ (メモ) をどのように処理すればよいかわかりません。するべきか:

  1. すべてのユーザーの患者とそのメモを格納する同じ DB 内に 1 つのテーブルを用意します。
  2. ユーザーごとに個別のテーブルを用意し、そのテーブルにすべての患者をまとめます。
  3. ユーザーごとに個別の DB を用意し、その DB 内の各患者のテーブルを用意します。

データ サイズに関しては、合計約 1000 人のユーザーがそれぞれ 300 ~ 400 人の患者を持ち、患者ごとに平均 100 のメモ (これはデータのいくつかの段落であり、各メモはカウンセリング セッション全体の内容です) を持っていると想定しています。

SO DB の設計に関するこの質問を見ました。すべての顧客に 1 つの大きな DB を使用するか、多数の小さな DBを使用するか、それが自分の状況にも当てはまるかどうかわかりませんでした。また、おそらくすべての患者とメモを 1 つのテーブルに格納するために、InnoDB をパーティションで使用することについてのさまざまな参照も見ました。これが推奨される場合は、これで見つけた情報が限られており、私には少し複雑すぎるため、いくつかのソースまたはチュートリアルも含めることができます.

4

1 に答える 1

0

このような比較的小さなデータ セットには、InnoDB パーティションのようなものは必要ありません。4 つの InnoDB テーブルを使用することをお勧めします。

1) psychologists: id (auto-increment, primary key), name, address, ...
2) patients: id (auto-increment, primary key), name, address ...
3) psych-patients: id (auto-increment, primary key), psychologist-id (foreign key reference to `psyschologists`.`id`, patient-id (foreign key reference to `patients`.`id), with a unique constraint spanning the columns `psychologist-i` and `patient-id`
4) notes: patient-id, psychologist-id, date, text

これにより、データをきれいに分離できます。3 番目のテーブルは、患者が医師を変更できるようにするために必要です。psychologist-idテーブルに含めた場合patients、そのための新しいレコードを作成する必要があります。(以前のメモへのリンクが失われるため、ID を単純に更新することはできません。)

もちろん、あなたは医療データを扱っているので、これらの個人的なメモを安全に保つためにできる限りのことをする必要があります. ただし、これはデータベース層ではなくアプリケーション層で処理する必要があります。心理学者ごとに異なるデータベースを使用する方が安全な解決策のように思えるかもしれませんが、おそらくそうではありません。さらに、患者がノートを取りながら心理学者を切り替えることをソフトウェアが難しくします。

于 2012-05-01T20:37:58.030 に答える