データベースの作り方

DB Browserでは、まずデータベースを作成します(トレーニング資料を参照してください)。 データベース構造」タブで、「テーブルの作成」を選択します。 まず、テーブルの名前を「Cohort」とします。 さらに下の「フィールド」で、「フィールドの追加」をクリックします。 ここでは、フィールド名にテーブル名を含めるという命名規則に従っています(このテーブルのすべてのフィールドは cohort_ で始まります)。 これは、フィールド名の重複を防ぐためです。 最初のフィールドは常に、そのレコードの一意な識別子になります。 ここでは cohort_id と呼びます。 上の比較表で、SQLiteが扱えるデータ型は限られていることがおわかりいただけると思います。 この場合、ドロップダウンメニューからテキストを選択することになります。 これは「主キー」で「Not NULL」、つまり一意であり、追加する各レコードに常に存在することになります。 この後、cohort_cross_date、cohort_parent_1、cohort_parent_2というフィールドを追加し、3つともテキストで指定します。 次に、”cohort_location “というフィールドを、テキストのバリデーション付きで追加します。 これは、このフィールドが限られた数の選択肢しか受け付けないことを意味します。 理想的には、すべてのテキスト・フィールドがこのように設計されるでしょう。 DB Browerでこれを実現する方法は、入力データがあらかじめ与えた選択肢のいずれかであるかどうかをチェックするようにプログラムすることです。 右側にスクロールして、「チェック」列を探します。 cohort_location==”tank_1″ OR cohort_location==”tank_2″と入力します。 基本的には、cohort_locationの許容値をブール演算のORでつなぎ合わせていることになります。 また、二重の等号を使用する必要があることに注意してください。 この構文は、field_name == “option” OR field_name==”some_other_option” で、OR を追加し続けることができます。

個人テーブルも同様の方法で作成しますが、ここでは cohort テーブルへの外部キーを導入しています。 つまり、コホートテーブルとリンクさせ、作成されたコホートのIDのみをこのテーブルに入力できるようにするのです。 これにより、データがきれいに保たれ、将来行うかもしれないテーブル結合の速度も向上します。 まず、”individual_id” フィールドを TEXT データ型、プライマリキー、Not NULL、一意として作成します。 次に、「ind_cohort_id」をTEXTデータ型として作成したら、カラムForeign Keyにスクロールします。 該当するフィールドをクリックすると、ドロップダウンメニューが表示されます。 最初のドロップダウンメニューでテーブル(この場合はcohort)を、次のドロップダウンメニューでフィールド(”cohort_id”)を選択します。 テキスト・ボックスには、「ON DELETE SET NULL ON UPDATE CASCADE」と入力します。 コホート・レコードそのものが削除されても、個々のテーブルでコホートへの参照を維持したい場合は、「NO ACTION」を選択することも可能です。 下のSQLスクリプト・ウィンドウをご覧ください。 FOREIGN KEY(`ind_cohort_id`) REFERENCES `cohort`(`cohort_id`) と表示されるはずです。 この行が表示されない場合は、PK、U、NNフィールドのクリックを解除して、クリックし直します。 また、テーブルを作成する際に外部キーを設定する必要があります。 これはDB Browserの癖です(バグかもしれません)。 最後に、「場所」をTEXTデータ型にして終了します。

最後に、「物理」テーブルをセットアップしてください。 新しいデータ型があることに気がつくと思います。 まず、physical_idは整数(INT)であり、またオートインクリメンタル(AI)である。 これにより、あなたが行うすべての測定が一意なものとして扱われることが保証されます。 カウントのように整数で来るデータを扱うときは、必ずデータを検証して整数であることを確認してください。 physical_cohort_or_ind」フィールドは、測定した生物が個体として追跡されているのか、それともコホートの一部としてのみ追跡されているのか(小さすぎてタグ付けできず、コホートの他のメンバーから区別できないため)を確認するためのものです。 このデータ型はTEXTで、Check (physical_cohort_or_ind==’cohort’ OR physical_cohort_or_ind==’ind’) である。 最後に、体重と体長の測定値は、NUMERICデータ型である。 測定単位はフィールド名でエンコードされていることに注意してください。 異なる機器や異なるスケールで作業することが予想される場合は、単位を表す別のフィールドを用意することもできます。 重要なのは、単位を数値測定から分離しておくことで、データを整頓し、変換や分析に対応できるようにすることです。

コメントを残す

メールアドレスが公開されることはありません。