限定しりとり

リレーションシップとクエリ内部結合の違いについて
リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか?

データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか?
任意の番号に指定しようすると、オートナンバー型のIDフィールドに連結されているため編集できません となります。

A 回答 (9件)

リレーションシップと結合とは全く異なるものです


リレーションシップはテーブルの関係を定義するもの
クエリの結合は複数のレコードセット(テーブルと限りませんクエリでもOK)から
どのようにデータを引き出してくるかの結びつきを定義します

SQLでいえばリレーションシップはテーブル定義のREFERENCES句で定義され
結合はSELECTステートメントのJOIN操作になります

オートナンバーはレコードの入力順を表すユニークな(重複の無い)
番号を振ることが目的のものですから抜けが生じてもなんら差し支えの無いものです
連続していないと気持ちが悪く感じるのは人間だけで
コンピュータにとっては何の問題もありません

どうしても埋めたければ追加クエリで埋めることができます
ただしその操作でユニーク性が失われては元も子もありませんけどね

この回答への補足

定形の物の集まり(社名テーブル)があり、それを必要としている複数のテーブルがそのデータを参照する場合などはリレーションシップし、複数から参照されるが決算期などの個々の企業によって時期が異なるもはクエリの結合をしようする?(テーブル定義のリレーションシップを使用しない・・・)
と言う考えでよいのでしょうか?
分かり難くてすみません。
参考:http://up.mugitya.com/img/Lv.1_up43438.jpg.html
(時間帯によって見れない場合があります。)
決算期データが三年分ありそれぞれ項目があるのですが
店マスタに入力してもいいのですがその場合、一つのテーブルデータが
膨大になってしまうので分割してあります。
上の画像で決算期はクエリの結合で問題ないですよね?

補足日時:2007/12/14 15:47
    • good
    • 0

また気を悪くされるかも分かりませんが


このまま進めるには無理がありますね
そちらの基礎知識が無さ過ぎます

せめて入門書の1冊ぐらい最後まで読んでから質問されたほうがいいですね

質問ボードだから何でも聞いていいというものではありませんよ
どの入門書にも書いてあるようなことは本を買って勉強してください

本を読むに当たっての注意ですが
どの本でも最初のほうにテーブルの作り方が書いてあります
初心者はこの辺を軽く流してしまいがちですが
非常に重要な点ですから、十分注意して読んでください

この回答への補足

総合編の解説書を全て読みました。
どの辺が理解できていないか良く分りませんが、
暇な時にもう一度読み直してみます。

質問ボードだから分らない事を質問したのですが
ここで質問した内容を理解している時間がないので諦めます。

>また気を悪くされるかも分かりませんが
全然分ってないようですね。
残念です。

補足日時:2007/12/17 19:45
    • good
    • 0

>年後とにデータを蓄積していく場合、年が変わるに連動してフォームの参照位置が変更、


>その年度用のレコードの追加されるような機能はあるのでしょうか?
こういうふうに考えずに最近3年分を表示とすれば
年度が変われば自動的に表示される範囲も替わります

>前年比を出すために18/11月の売上を参照する
クエリですね、それもかなり難しいクエリを組む必要があります

>(以下がテーブルの一部です。)
>ID番号 決算期 総売上 売上 利益 前年比 利益率

前年比や利益率はテーブルには持ちません
計算で求まるものはクエリ等で求めます

この回答への補足

>こういうふうに考えずに最近3年分を表示とすれば
>年度が変われば自動的に表示される範囲も替わります
クエリの抽出条件でしょうか?
そのような事が可能なのですか?
>クエリですね、それもかなり難しいクエリを組む必要があります
どう言う事でしょうか?

>前年比や利益率はテーブルには持ちません
>計算で求まるものはクエリ等で求めます
テーブルに計算したデータを保持しないのですか・・・
知りませんでした^^;

補足日時:2007/12/17 16:59
    • good
    • 0

>言葉使いに少し気を使われたほうがいいかもしれません。


お気を悪くされたのなら謝ります
何とかしてあげようという気持ちで、提示されたリレーションシップウィンドウを見たとき
正直言ってこれは大変だぞという印象を強く受けたので
それが言葉の端はしに出たのでしょう、修行が足りないのかな?

でもあれを保存しておいて何ヶ月か先に見てみればあなたにも私の気持ちが分かるのじゃないかな

業者に頼むとしても仕様はあなたが作成しなければなりません
全く知らないよりは知識があったほうが業者との打ち合わせもスムーズに行きますから
勉強は続けてくださいね

業者に頼んだときの費用についてはWEB上にも無料で見積をしてくれるようなところが
いくつかあるようですからそういうのを利用するのもいいかも

この回答への補足

先日は書きませんでしたが質問の核心を書かせていただきます。
問題解決の方法は分かったのですが・・・これは聞いた方がいいと思いまして、
新たなスレッドを立てた方が良いのかも知れませんが掲示板を汚すのも失礼かと思いまして・・。
手間をかけて申し訳ないです。

年後とにデータを蓄積していく場合、年が変わるに連動してフォームの参照位置が変更、
その年度用のレコードの追加されるような機能はあるのでしょうか?

   総売上 売上 利益 前年比 利益率
17年度1500  530  480
18年度2000  550  500
19年度1000  600  550

年度が替わると・・・

   総売上 売上 利益 前年比 利益率
18年度2000  550  500
19年度 前年度の表示が上にあがり、20年を追加
20年度←データの蓄積先を新たに追加されたレコードに変更
-------
(上は入力フォームの一部です。)

(以下がテーブルの一部です。)
ID番号 決算期 総売上 売上 利益 前年比 利益率
12   17/11 
12   18/11 2000  550  500
12   19/11 1000  600  500
12   20/11 1200  610  550 ←新たに追加されたレコードに20年のデータが蓄積される
12   17/12            
11   18/12 ・・・・
11   19/12
(集計の時期は19年1月~12月ではなく、19年7月~20年6月です。)
(実際に使用するのは4年分です。それ以降のものは使用していません。)

計算方法について
関数だとおもいますが、例えば今年(19/11)のデータを入力した場合、前年比を出すために18/11月の売上を参照する
と言う事は出来ると思うのですがどうでしょか?。
(フォームから入力、新たな年度のレコードにデータが追加される。同じIDの去年の売上データを参照、今年の前年比を出す)
参考:http://up.mugitya.com/img/Lv.1_up43805.jpg

年が開けるごとに自動追加されるような機能が無いと、手動で直さなければならないですよね・・・。
今年、去年、去々年と分割してもいいのですが、一年立つと結局のところ直さないとだめなんですよね。今年の去年は、去年の今年。

補足日時:2007/12/17 14:35
    • good
    • 0
この回答へのお礼

お気持ちはすごく分かります。
熟練者から見ると初心者の発言や勘違いは「はぁ?」と思われるのはしごく当然の事だと思います。

わざわざお気遣いありがとうございます。

お礼日時:2007/12/17 10:06

>外部委託はどれほどかかるのでしょうか


正直に申し上げてピンキリと言わざるを得ません。
業者の規模にもよりますから。
あくまで参考ですが、一人日(一人で一日分の仕事)で単価5万だと安い方です。高いと単価10万くらいします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2007/12/17 09:59

回答1の者です。



参考として受け取ってください。
おそらくシステム構築を担当されている方でも、経験のある方でもないように見受けられます。
今の状態ではどれだけの時間を要するか大変気になります。
ここは、外部委託をされた方が宜しいと思いますが、いかがでしょうか。
多少の費用はかかっても、あなた方が費やす時間を他のお仕事にまわすことで全くの損にはならないと思います。

この回答への補足

同意見です。
私は全くの素人で・・・といいますか今は単なるバイト生です。
一応一月に正社員になる予定です。

Accessなんて使ったこともなく、データベースなんてやってこともなく
高校時代にExcelとWordの基礎をちょっとやった程度の者です。

社長はパソコンに関して殆ど知識がなく、メールとHP観覧方法しか分からないような人です。(ファイルのコピーの仕方すら知りませんでした。)

二日間、16時間を使ってAccessの解説書を読み
同じく二日間で今あるデータベースの構造を理解したところです。

本来の話と少しはずれますが、外部委託はどれほどかかるのでしょうか?

補足日時:2007/12/16 23:43
    • good
    • 0

>同じデータを参照する複数のデータがある場合、テーブルを分ける。


>これをすることで作業の軽減、データ量の軽減ができる。
>このような理解で制作を行っていたのですが、
>他に参照しないのであればフィールド数が膨大になろうが、
>一つのテーブルにまとめるのが普通なのですね。

テーブルの分割は正規化規則に則って分割します
フィールドの数ではないですね

リレーショナルデータベースではフィールド数はあまり多くならず
むしろテーブル数が多くなるという傾向があります
フィールド数が多いというのは正規化が出来ていない可能性大ですね
ひとつのテーブルにはひとつの事象あるいはものに関するものだけを入れるようにするのですよ

それに前のお返事では
>一つのテーブルデータが膨大になってしまうので分割してあります。
こう書かれていたのでレコード数かと思いました
レコード数が多い場合には階層構造を導入してたどりやすくする工夫などをしますが
その場合でも末端のテーブルのレコード数は減りはしません

この回答への補足

はじめの質問から二日たっており質問の意図を忘れていました^^;
質問以前に私が重大な勘違い?(考え違い?)をしていたようで・・・。
その内容を記述すると話が分かりにくくなるので避けますが、
問題解決できそうです。

>フィールド数が多いというのは正規化が出来ていない可能性大ですね
これがヒントになりました。ありがとうございます。

>一つのテーブルデータが膨大になってしまうので分割してあります。
レコードと勘違いされたようで、私の記述が悪かったです。
データという言葉のとらえ方にも色々ありますからね・・・。

それと、これは質問内容と関係ありませんが言葉使いに少し気を使われたほうがいいかもしれません。
はじめてNO3.の回答を見たとき、率直な感想として私の補足に対して煽ってるのかと思い少しイラッとしました。
しかし、そのような意図が見られないので何も言いませんでしたが、勘違いされる方もいると思いますので。

補足日時:2007/12/16 23:16
    • good
    • 0

突っ込みどころいっぱいのシステムですね


これで動いてます?

>定形の物の集まり(社名テーブル)があり、
>それを必要としている複数のテーブルがそのデータを参照する場合などはリレーションシップし、
>複数から参照されるが決算期などの個々の企業によって時期が異なるもはクエリの結合をしようする?
どこをどう直せばいいのか分からないぐらい見当はずれです

>一つのテーブルデータが膨大になってしまうので分割してあります。
テーブルとはこのような理由で分割するものではありません

>上の画像で決算期はクエリの結合で問題ないですよね?
さあ?
あのシステムをここのような掲示板で作りかえるのは無理でしょうね
身近によく知っている人はいないのですか

この回答への補足

>突っ込みどころいっぱいのシステムですね
企業コードに連結しなければならない所を企業IDに連結していました。
と言いますか今思えば補足事項が足りなすぎて理解できませんね。

>これで動いてます?
制作段階でまだ動かしてはないです。
現在関数や個々に必要な機能も入れていません。

>見当はずれです
そうですか・・・
その見当はずれが理解できればいいのですが・・・。

同じデータを参照する複数のデータがある場合、テーブルを分ける。
これをすることで作業の軽減、データ量の軽減ができる。
このような理解で制作を行っていたのですが、他に参照しないのであればフィールド数が膨大になろうが、
一つのテーブルにまとめるのが普通なのですね。

>身近によく知っている人はいないのですか
いません。もともとAccessではない独自のデータベースプログラムがあり、
それをAccessで使用する形に移行するために制作しています。
元あったデータベースプログラムも私が作ったものではありませんし、
Accessを作るのも初めてで、さらに言うならばデータベースの知識もありませんでした。
データベースを利用している人にどのような利用のされ方をしているかを聞き、
最近になってそのデータベースプログラムの構造をようやく理解したところです。

ほとんど自己解決に近いですが、回答ありがとうございました。

補足日時:2007/12/16 19:04
    • good
    • 0

>リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか


そんな感じだと思いますが、私は必ずリレーションシップを作成してから使うので気にしたことがありません。

>データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか
使えないと思います。
任意の番号にしたいなら別のデータ型にしましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!