質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

791閲覧

ACCESSでの設計について(オートナンバー型?をどのように考えるか)

u_zu

総合スコア50

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/08/27 15:22

編集2019/08/27 15:28

会社の業務ソフト(販売管理のようなもの)で、得意先テーブルがあります。

簡略化して書きます。
フィールドは「得意先ID」(オートナンバー型、主キー)、「得意先コード」(テキスト型)、
「得意先名」(テキスト型) のような構成で

「得意先ID」 1, 「得意先コード」 0001,「得意先名」 A商店
「得意先ID」 2, 「得意先コード」 0005,「得意先名」 D商店
「得意先ID」 3, 「得意先コード」 0010,「得意先名」 R商店
.............................以下続く

のような感じで、「得意先コード」と「得意先名」は従業員が自由に(分かりやすいように)付けています。
中には得意先名が同一資本だったりすることもあるので、得意先コードが重複しているものもあります。
例) B商店とC商店は別法人だが、請求先が同じなので、得意先コードはどちらも0020など。

得意先IDを外部キーとして別のテーブル(売上明細テーブルなど)と紐づけています。

ちょっと考えたのですが、例えばこのACCESSファイルが壊れたとして、得意先テーブルをもう一度作成するとします。
バックアップしようとしますが、得意先IDはもともとオートナンバー型なので、最初に得意先IDを数値型にして
元のオートナンバー型の値をセットしました。バックアップが完了後、数値型をオートナンバー型に戻そうとしても
レコードをセットした後なので、数値型からオートナンバー型に戻せません(参考:添付ファイル)。イメージ説明

他にも、元の得意先テーブルのオートナンバー型が何らかの理由で連番になっていなかったりしていたら
バックアップしようとして新規のテーブルを作成した際に、全く同じように戻せないと思います。
(新規の得意先テーブルの得意先IDフィールドをオートナンバー型にしたら、連番になってしまう)

このような事象の場合、得意先IDを外部キーとしてセットしている関係も崩れてしまいます。

一番最初、このような販売管理を作成するときに上記のような事象が起きないように、
テーブル、というかデータの設計をどのように考えたらよろしいのでしょうか?
知恵をお貸しください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

得意先IDはもともとオートナンバー型なので、最初に得意先IDを数値型にして
元のオートナンバー型の値をセットしました。

元の得意先テーブルのオートナンバー型が何らかの理由で連番になっていなかったりしていたら
バックアップしようとして新規のテーブルを作成した際に、全く同じように戻せないと思います。
(新規の得意先テーブルの得意先IDフィールドをオートナンバー型にしたら、連番になってしまう)

同じ構造のテーブルを用意して、オートナンバーも含めてinsertすれば同じ状態になります。
それはテーブルごとコピーすればオートナンバーも含めて全く同じものが作成できる事と同じです。

投稿2019/08/28 01:28

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2019/08/29 12:19

どうもありがとうございます。
guest

0

テーブル設計の問題じゃなくて適切に全部バックアップをとれば良いだけの話に見えます。(手作業でデータを入れ直そうとしているあたりがよくわからない)

投稿2019/08/27 15:41

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2019/08/29 12:19

どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問