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

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

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

You are not logged in.

Announcement

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


#1 2022-05-17 16:35:00

便乗マン
Guest

CSVなどのデータを1対多にインポートする一般的手法について

便乗で質問していましたが、新たに質問するようアドバイスをいただきましたので
質問させていただきます

例えばタイムカードのデータなどはcsvで出力されますよね
それをデータベースにインポートするとき、一般的にはどのようにインポートするのでしょうか?
多分一般的な勤怠管理システムだと、日付やなんらかの項目と、出退勤時間などは別テーブルになっていると思いますが
勤怠管理でなくともエクセルや別システムから吐き出される売上データなどには、
元データに、1対多にするためのデータベースの照合キーがない場合はよくありますよね

基本的にはファイルメーカーもしくはデータベースソフトで直接入力するけど、
支店はエクセルで簡易的にデータを蓄積していたり、一部外部ソフトからの取り込み、ということはよくあることだと思います

当方で使っているのはFM19とWIN10環境ですが、一般論としてお聞きしました

#2 2022-05-17 17:03:52

Shin
Member

Re: CSVなどのデータを1対多にインポートする一般的手法について

> 元データに、1対多にするためのデータベースの照合キーがない場合はよくありますよね
照合キー の捉え方次第でしょう。
タイムカードでしたら、日付と個人IDの組み合わせで、照合キーーになるのでは。

Offline

#3 2022-05-17 18:46:10

便乗マン
Guest

Re: CSVなどのデータを1対多にインポートする一般的手法について

リレーションする主キーを複合キーにしたり意味のあるものにするのはタブーではなかったでしょうか?

ちなみにみんなどうやっているんだろう、と疑問なのは
ファイルメーカーで作ったシステムがすでにあり(主キーはファイルメーカー側で自動で加算されるシリアル値にしている場合)、
それにインポートする必要がでてきたときの対処方法として一般的なものが知りたいです

他社からのCSVファイルやエクセル、はたまたタイムカードなど、1行1レコードとされているのは多くありますよね

#4 2022-05-18 00:56:07

通りすがりマン
Guest

Re: CSVなどのデータを1対多にインポートする一般的手法について

エクセルのデータも2つとして考えて
日付のみシートを用意してそれぞれにシリアル値をつける
詳細の同じ日付のものに同じにシリアルナンバーをつける
それをそれぞれのテーブルにインポートすればすんなりいくかと

ファイルメーカーにあるレコードの最期のシリアルナンバーをみてその月の数からやれば
整合性も保てると思います
ただファイルメーカーのシリアルナンバーを人が確認したり
エクセルでの作業でも人がやる必要がありそうな気はします(VBA書くほうが大変だしバグがありそう)
オートナンバーにしているならそこにインポートできるのかどうかやったことないですけど

なんとなくで回答してみましたが間違ってるとこあったら指摘お願いします

#5 2022-05-18 08:54:42

Shin
Member

Re: CSVなどのデータを1対多にインポートする一般的手法について

> リレーションする主キーを複合キーにしたり意味のあるものにするのはタブーではなかったでしょうか?
そうですか。例えば、商品の単価履歴を持たせたテーブルへのリレーションは、商品ID と日付の複合キーでないとリレーションが成立せず、マスターで管理する意味がなくなります。

https://fm-aid.com/bbs2/viewtopic.php?pid=76970#p76970
の手順を踏めば、正規化されていない1列のデータを、正規化して2テーブルへインポートすることができます。従前のリレーションとの整合を考えて、私がよく使う方法です。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 508.84 KiB (Peak: 514.74 KiB) ]