- ベストアンサー
テーブルの分け方を教えてください
- 大学で行った実験をデータベース化する際のテーブル分け方について教えてください。
- 実験のタイトル、解説、実験方法、特徴、材料、加工機などの情報が文書データとして存在します。
- 実験条件や誤差条件の値は一つの条件に何個入るかまちまちであり、実験条件名や誤差名は一度しか出てこない特徴があります。どのようにテーブルを分けるべきでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 データベースの設計の場合には、運用方法やシステム寿命、開発負荷、設計者の経験などで、同じテーマに対して全く異なったデータベースが出来あがると思います。 質問の内容で疑問な部分ありますが、あえて独自に判断して、このような場合には、私であればこんなデータベースを作るだろと言う思い込みで書かせて頂きます。 まず実験をするからには、何らかの結果を求めていると思いますので、その結果がデータベースの最小の単位(レコード)となります。 文章であらわしますと以下のような内容をデータベース化してみます。 (内容が外れていましたら済みません。) (1)あるタイトルの実験を、実験条件1(実験名A)の中からデータ32.1をもちい、誤差条件は誤差条件1(誤差名E)の集合の中からデータ35を使ってテストを行い、その結果を判断する。 (2)ただし、この文章からは別の読み方もできます。 あるタイトルの実験を、複数のデータから成る実験条件1(実験名A)をもちい、誤差条件は複数のデータから成る誤差条件1(誤差名E)を使ってテストを行い、その結果を判断する。 (1)(2)では、結果に対して必要な情報が全く違ってきますので、データベースの構造も違う可能が大きいです。ここでは(1)を使って作成してみます。 材料としては大きく5テーブル+1項目に分けることが出来ます。(1対多の関連で大体は決まってきます) a:実験タイトル(タイトル) テーブル b:条件名称 テーブル c:条件データ テーブル d:誤差名称 テーブル e:誤差データ テーブル f:結果の項目 次に関連付けを作成。(キー値は全てユニークキーとします。) (a作成) 実験タイトルに付属する項目は、タイトル:解説は1対1になります。その他の実験方法・特徴・・も同じく1対1で、1レコードに項目を配置します。加工機・材料などはマスター化して、別テーブルとする可能も高いですが・・・・。 キー項目はタイトルになります。 (b作成) 実験条件に対して条件名称は1対1ですので、同じレコードに項目を配置します。 aに対してbは1対多になり、関連付けでタイトルの項目を追加します。 キーは実験条件です。(=ただし実験条件はユニークであること。) (c作成) bに対してcは1対多になりますので、実験条件を項目として追加して関連付けをします。 キーは実験条件+条件データです。(=条件データはユニークではない。この場合はデータのため不可能と思うので。) (d作成) 条件データに対して、誤差条件が複数ありますので、1対多の関係になります。 誤差条件と誤差データは1対1の関係です。 cとの関連付けを行うため、誤差条件、誤差データの項目を追加する必要があります。 キーは誤差条件。(=ただし誤差条件はユニークであること。) (e作成) 誤差条件に対して、誤差データが複数有るため、1対多の関係。 dとの関連付けをを行うため、誤差条件を追加します。 キー項目は誤差条件+誤差データ。 (f作成) eテーブルが最小の明細レコードとなるため、このデーブルに対して結果の項目を入れます。 以上で下記テーブルが出来あがります。@マークはキー項目。 a⇒@タイトル、解説、実験方法、 特徴、材料、加工機 b⇒@実験条件、条件名、タイトル c⇒@実験条件、@条件データ d⇒@誤差条件、誤差名、実験条件、条件データ e⇒@誤差条件、@誤差データ、結果の項目 これをsql(クエリー)でテーブルを関連付けて表示させると項目の並びは以下となります。 タイトル、解説、実験方法、 特徴、材料、加工機、実験条件、条件名、条件データ、誤差条件、誤差名、誤差データ、結果の項目 と言うクエリが作られます。 具体的にデータを入れた一覧は以下の様になります。(途中の項目は省略) タイトルXXX、条件A,、32.1、誤差E、35、結果=良好 タイトルXXX、条件A,、32.1、誤差E、64、結果=不良 タイトルXXX、条件A,、32.1、誤差F、45、結果=不良 タイトルXXX、条件A,、32.1、誤差F、65、結果=良好 タイトルXXX、条件A,、32.1、誤差F、38、結果=不良 タイトルXXX、条件A,、32.1、誤差F、21、結果=不良 ・・・・・ 一例としてあげて見ましたが如何でしょか? キー項目に付いては、項目内容ではなくテーブル単位に識別キーを設定する方が、使いやすいかと思います。 また、プログラムの作成能力が低い場合には、<多>の項目をテーブルにしないでレコードの項目として扱う必要が出てきます。 色々な状況があるため、決まったデータ構造は断定できないと思います。経験が大切な分野なんですよね。 長文&速記のため誤字・ミス記入の部分あるかもしれませんが、修正してお読みください。
その他の回答 (2)
- tosi0000
- ベストアンサー率28% (8/28)
すみません。 間違えました。 テーブルは以下でないと出ないと思います。 a⇒@タイトル、解説、実験方法、 特徴、材料、加工機 b⇒@実験条件、条件名、タイトル c⇒@実験条件、@条件データ d⇒@誤差条件、誤差名、@実験条件、@条件データ e⇒@誤差条件、@誤差データ、@実験条件、@条件データ、結果の項目 c、eが多対多の関係になりそうですので、aとeのテーブルだけでも良いかも知れません。
お礼
詳細を教えていただきありがとうございます。 やはり経験が大切なものなんですねーー。 これを参考にしてもっと勉強してみようと思います。 ありがとうございました。