3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FileMaker の「レコード ID」の取り扱いは難しい

Posted at

「レコード ID」の公式リファレンスの定義

「レコード ID」とは何か。「レコード ID」を取得する関数であるGet (レコード ID)について、公式リファレンスには以下のような記載があります。

返されたこの番号は、レコードの作成時に FileMaker Pro によって生成された 10 進法の値 (整数) です。この値が変更されることはありません。

すなわち「主キー」である

上記の定義より、「レコード ID」はいわゆる「主キー」であることが分かります。FileMaker では「主キー」が存在しなくてもデータベースを運用できます(ように見える)が、主キーに相当する部分が裏側では用意されていることになります1

しかし「レコード ID」の取り扱いは難しい

しかしながら、この「レコード ID」はなかなかにその取り扱いが難しいです。その理由は、「レコード ID」はフィールドとして存在していないからです。

このため、「レコード ID」は範囲を指定して検索することができません2。また、リレーションシップに組み込むこともできません。

ではどう扱えばいいか

となるとこの「レコード ID」はどう利用すればよいのでしょうか。

だいたい感づいているとは思いますが、そう、「レコード ID」がそのまま入るフィールドを作ればよいのです。そしてそれをテーブルの主キーにしてしまえばいいでしょう。「レコード ID」は未来永劫ユニークで、かつ NOT NULL であることが保証されていて、さらに「意味を持たない」「数値」を取るため、主キーとしてはもってこいです。

予め用意されていることが確定しているので、「サロゲートキーの要・不要議論」などに振り回されること無く「利用してやれ」の一択でしょう。

補足

  1. テーブルの主キーを誤って設定してしまった場合(当初設定した主キーが、主キーの要件を満たさなくなりそうな場合)にも、「レコード ID」の値が入るフィールドを作ってあげればそこで主キーの要件が満たされ、助かることでしょう3

  2. 同種の値に「レコード編集回数」というのもあり、こちらの値もフィールドとして外に出してあげてよいかと思います4

  1. そうでないとレコードの一意性が保証されなくなってしまいます

  2. 一つ一つ値をを決め打ちして検索することはできる

  3. 「最後の砦」になり得る

  4. 使いどころが難しいですが

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?