初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-06-13 22:56:32

脱初心者目指すもの
Guest

各テーブルのシリアルIDはテキストタイプ?数字タイプ?

各テーブルのシリアルID(リレーション等に利用する値)について皆さんのご意見を頂けますと助かります。

私の場合、テーブルの想定されるレコード数によって桁数は違うのですが
大体、以下のような形でリレーション元になるシリアルIDを振っています。

--商品テーブル--
ID : 数字タイプ:000001 等(リレーションにはこちらを利用)
商品ID : テキストタイプ(数字以外が入る場合)を別途用意。

--社員テーブル--
ID:数字:01

★そこでお聞きしたいのですが、
1:リレーションで利用するIDは、数字タイプ?テキストタイプ?どちらをよく利用されますでしょうか?
  また理由をお聞かせ頂けますと助かります。

2;上記のように私の場合、レコード数を想定した桁数を用意してるのですが
  Get(UUID)でユニークIDを利用したほうがいい、もしくはメリットがあるのでしょうか?

他にいい方法があれば、アドバイス頂けますと助かります。

#2 2014-06-14 00:04:08

Moz
Member

Re: 各テーブルのシリアルIDはテキストタイプ?数字タイプ?

基本的にはテキストで Get ( UUID ) を利用することが多いですね。
原則として重複しないことが必須なので可能性を排除しています。

ソリューション(お客様)によっては Get ( UUID ) を利用できない場合があるので、
UniqueID などといったカスタム関数を登録しておき、主キーフィールドにはそちらを利用しています。
万が一変更になった場合もカスタム関数を変更すれば全テーブルへの反映が完了します。

Offline

#3 2014-06-14 10:17:00

Shin
Member

Re: 各テーブルのシリアルIDはテキストタイプ?数字タイプ?

何がユニークになるか、を考えれば良いのでは。
商品マスターの様に、人の管理下にあるものは、商品IDがユニークでしたらそれで十分だと思います。ユニークでない可能性があるのでしたら、単なるシリアル番号でも良いでしょう。
たのシステムから自動的に吸い込まれる、などの条件でしたら、私は、シリアル番号を振っていきます。UUIDでもいいのですが、これは桁数が非常に多いため、レコード数が膨大になった場合に索引ファイルが非常に大きくなってしまう傾向に有ります。
複数の端末で新規レコードが発生し、それをインポート等でまとめていく、という作業が発生するのでしたら、UUIDしかないでしょうね。

Offline

#4 2014-06-14 13:03:54

脱初心者目指すもの
Guest

Re: 各テーブルのシリアルIDはテキストタイプ?数字タイプ?

Moz様、ありがとうございます。

>>
ソリューション(お客様)によっては Get ( UUID ) を利用できない場合があるので、
UniqueID などといったカスタム関数を登録しておき、主キーフィールドにはそちらを利用しています。
万が一変更になった場合もカスタム関数を変更すれば全テーブルへの反映が完了します。
>>

UUIDは確実にユニークなIDになるので被らない前提ということですね。。
実は、UUIDを利用して以前、UUIDのフィールド内容を間違って消してしまい・・・元のUUIDが分からなくなり止めた敬意がありました。

勉強がてらお教え頂きたいのですが、上記のカスタム関数を利用すればという部分が、難しく理解できませんでした。
もしよろしければ、カスタム関数側での処理、テーブル側での処理を具体的にお教え頂けますと助かります。


Shin様、ありがとうございます。

>>複数の端末で新規レコードが発生し、それをインポート等でまとめていく、という作業が発生するのでしたら、UUIDしかないでしょうね。

非常に分かりやすかったです。
iPad等でオフラインで在庫入出庫等をして、後からサーバー側とインポートさせる再にUUID等を利用するという感じでしょうか?

こういう初歩的?な事かもしれませんが、一人でやってると何がベストか分からないので、皆さんのご意見参考になります。

#5 2014-06-14 13:21:53

Moz
Member

Re: 各テーブルのシリアルIDはテキストタイプ?数字タイプ?

UniqueID というカスタム関数を定義します。引数はナシ、計算式は Get ( UUID )
各テーブルのプライマリキーのフィールドで[入力値の自動化][計算値]に UniqueID と設定します。

これで各テーブルのプライマリキーは UniqueID というカスタム関数に設定した計算式に統一されます。
この場合は Get ( UUID ) です。

入力値の自動化の計算値に直接計算式を書いていると、万一の変更の際に全テーブル見直しになりますが、
この方法を使えば UniqueID というカスタム関数の定義を弄るだけで済みます。

キーフィールドの名前ひとつ取っても ID だったり PK だったり KP だったりしますし、
何がベストプラクティスなのか?という正解はないと思いますね。
自分のが一番だと思っている方同士だと平行線になってしまいますし(笑)
知識の引き出しの中にいろいろな方法や考え方を入れておくことが大切だと思います。

余談ですが Get ( UUID ) は100億レコードぐらい作っても重複することはなかったようですよ。

Last edited by Moz (2014-06-14 13:22:32)

Offline

#6 2014-06-14 23:44:29

脱初心者目指すもの
Guest

Re: 各テーブルのシリアルIDはテキストタイプ?数字タイプ?

Moz様、ありがとうございます。
カスタム関数自体利用したことなかったんですが、こういう使い方出来るのですね!
勉強になりました。

再度の詳しいご説明、ありがとうございました。
今後ともよろしくお願い致します。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 517.09 KiB (Peak: 521.63 KiB) ]