• ベストアンサー

MS Access 何となく不安なんですが。。

noname#1296の回答

noname#1296
noname#1296
回答No.2

 見積テーブルの「見積CD」だけで主キーになっていて明細テーブルが「見積CD」と「行番号(?)」だけで主キーになっていれば、「見積CD」だけで1対多のリレーションになりませんか?「見積CD」がユニークなら、これでも大丈夫なはずです。  数百~数千程度のデータ件数なら、OSのクラッシュ・ディスククラッシュ・LAN環境(HUBの故障)などAccess以外の要因で壊れることは何度か経験しましたが、Accessの仕様で壊れることはまずないでしょう。またこのくらいの件数だとインデックスなどそれほどシビアにならなくても、パフォーマンスにも大して影響しないかと思われます。  数万件以上になると、パフォーマンスの面からインデックスなど考慮していやる必要がありますし、いつ壊れても大丈夫なように、こまめにバックアップを取る必要があるでしょう。  自分の場合、検索に使用する項目には全てインデックスを作成しています。書籍などには「インデックスを多用すると検索は早くなるがレコードの更新に時間がかかるため十分検討して使用するように」みたいにかかれていますが、バッチ処理が多くない限り、全体的なパフォーマンスはよくなるためです。

whitemark
質問者

お礼

ご回答ありがとうございました! 実は明細テーブルの方には「見積CD」「仮番CD」さらに「行番号」があるのです。 何とか減らしたかったのですが、どうしても3段階の番号振りが必要になるんです。。。 やっぱり主キー、リレーションに対しての理解が浅い為、このような事ですぐに混乱してしまうのだと思います。 まったく応用が利かない自分が本当に情けない。。 やっぱりまた大型書店へ行って、主キー関係のことが詳しく書かれている本を探してみようと思います。 ところでアクセスの使用で壊れることはないとの事、とても安心できました。 他業種の仕事に関わった事がないため、数千という数字だけでも膨大な数に感じてしまい、壊してしまったらもう終わりだと感じておりました。 そういえば皆さん何万レコードと言う数をアクセスで振り回しているんですよね。掲示板とうでよく見かけていたのにうっかりしていました。 おふたかたのご回答を頂いて、自信が持てるまでバックアップはこまめに取り、また本を読んで改善策を見つけながら、壊れたら仕方ないと腹をくくりテスト運用してみようと思いました。 他の質問を見ますと、僕のだけものすごーくレベルが低い内容にも関わらず回答して頂いてありがとうございました。がんばりまっす!

関連するQ&A

  • リレーションシップで一対多となる条件

    今Access2000を使っているのですが、 リレーションを組む際に、一対一と一対多になる違いを教えてください。 リレーションを組みたいのは、 主テーブルの主キー[登録CD]テキスト型 リレーションテーブル [登録CD]テキスト型 このテーブルの主キーはオートナンバーで[NO]としています いつも通りに作ってハズなのですが、 リレーションを組むと自動的に一対一になってしまいます。 リレーションテーブルになるためにフィールド数の制限などがあるのでしょうか? 宜しくお願いします。

  • 2つのaccessテーブルのレコード数を合わせたい

    一つは200レコードあるリンクテーブルです。 このリンクテーブルとあるテーブル(Bテーブル)を合体させたいと思いました。 そのあるテーブルは主キーであるIDとチェックボックスの2つのフィールドだけです。 このB]テーブルの主キーとリンクテーブルの主キーとリレーションでつなげました。 しかし、そのBテーブルはレコードが全く無いのでチェックボックスが出て来ません。 リンクテーブルのレコード数分、手動で作成したらチェックボックスと組み合わさります。 これでは、毎回毎回リンクテーブルのレコード数を数えて同じ分だけBテーブルでレコードを作成しなくてはいけません。 自動で同じだけのレコードを作ることはできますでしょうか? VBAでレコード数を数えて・・・・とかするのでしょうか?

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Access2002 参照整合性について

    テーブル間にリレーションシップを設定する場合、リレーションテーブル側に主テーブルにないレコードがあると参照整合性を設定できないにも関わらず、「結合の種類」で「3」(リレーションテーブル側の全レコードと主テーブル側の同じ結合フィールドのレコードだけを含める)を選べるのは何故でしょうか。 参照整合性を設定できた時点で、リレーションテーブル側には主テーブルにないレコードは無いということだと思うのですが・・・。 よくわからなくなってしまいました。 お答え、よろしくお願いいたします。

  • 一対一のテーブル分割(ACCESS2003)

    ACCESS2003にて、フィールド数が上限の255、レコード数がおよそ1万件の商品マスタテーブルを作ったとします。入力必須フィールドは主キーである商品ID、あと商品名ぐらいで、あとは商品によって入力したりしなかったりするフィールドで、テーブルを開くと空欄が非常に多く目立ついわゆるスカスカの状態になっているとします。そこで商品マスタテーブルを数個に分割(商品の価格情報、商品の品質情報等々)し、商品IDを主キーにもたせ一対一の外部結合でつなげて、密度の濃い(?)テーブルを複数作ったほうが、ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか?(一対一の結合はあまり使用しないのが一般的なようですが、このような場合使用すべきでしょうか?)教えて頂きたくお願いいたします。

  • アクセスについて教えてください。

    アクセス2002 XP使用 Aテーブル ID 氏名 電話番号 住所  などの個人情報入力 Bテーブル ID (リレーションするためのID主キー) 管理ID 購入商品 上記のように今作っているのですが、AテーブルIDとBテーブルは1対多でのリレーションしてます。 フォームで帳票形式で見たとき、 管理NOの数だけレコード表示されるのはいいのですが、 AテーブルID 1に対し、管理IDが111と三件分あるとして、(勿論BテーブルIDには123となってます) AテーブルID1にひとつ、受付NOを追加して、   ID  受付NO  管理ID   1   1    1   1   2    1   1   3    1   2   1    2   2   2    2   3   1    3 見たいに受付NOがIDごとに123。。。と自動入力されル洋にしたいのですがどのようにすればできますか?素人なので説明もうまくできなくわけが変わらないかもしれませんがおしえてください。よろしくお願いします。

  • ACCESSのリレーションが切れてしまいました

    素人で甚だ恐縮ではございますが、社内システムのACCESS2003のデータベースでリレーション定義が無くなってしまい、アプリで削除していないにも拘わらず主たるテーブルのレコードの各項目に"deleted"或いは"#deleted"が入ってしまいました。 リカバリーは、「データベースの最適化/修復」を行い、リレーションを定義していた先のテーブル内のレコードを削除し、再度リレーション定義し再登録にて回復しました。 リレーションが切れる(無くなってしまう)原因がわかりません。 どういったケースで発生しうるかご教示頂ければと存じます。

  • 未定義になるのは主キーじゃないのが原因?

    二つのテーブルを一対多のリレーションシップで繋ぐとき、 一になる方は主キーじゃないと、一対多にならなかったり参照整合性はできないのでしょうか? 主キーではないテーブル1のフィールド(一)と、(多)のテーブル2のフィールドでリレーションを組もうと思ってるのですが、 リレーションシップの種類が未定義になってしまいます。 これは、1になる方のテーブル1が主キーじゃないのが原因なのでしょうか? テーブル1のこのフィールドは、重複することはありませんが、空白も入る為、主キーにできないし、 主キーはほかのフィールドで使っています。

  • Access 一対一リレーションの編集

    こんにちは 現在、Accessと他のソフトとの連携をするために奮闘しています。。。知恵をお貸下さい。 Accessには元々受注テーブルがあります。 主キーID:オートナンバー 受注日:日付型 納期:日付型 図番:テキスト型 数量:数値 単価:数値 とあり、データがすでに存在しています。他のソフトへエクスポートを継続的に行うにあたって 新規にテーブルを作成し、一対一リレーションをしようとしています。 新規テーブルは 主キーID:オートナンバー 取引先コード:テキスト型 担当者コート:テキスト型 区分コード:テキスト型 実出荷日:日付型 エクスポート状況:数値 そして、受注テーブルと新規テーブルのIDを一対一でリレーションしクエリを作成し、エクスポートしようと思っています。 その際、新規テーブルの方はデータが空なのでクエリ結果が得られないと思うのですが。。。 どうやって既存の受注テーブルと一つ一つのレコードを繋げる事が出来ますか❓ 編集方法をどなたか教えて下さい。 素人ですみません。

  • Access フォームで複数テーブルの同時入力

    フィールド項目が多い為に複数のテーブルに分けて 同じフィールド名 [品番] で1対1でリレーションを組んでいます。 フォームの新規レコードで品番を入力の時に 各テーブルの品番に入力するのにはどうしたらいいでしょうか? 後々のことを考えると1つのテーブルにまとめたほうがいのでしょうか? フィールドが300ぐらいあるのでテーブルに分けたほうがわかりやすいので 現在は10テーブルに分けています。 よろしくお願いします。