
主キーはオートナンバー型のIDを使った方が良いのか、
独自の主キーを作った方がいいのか?
今は
テーブル1
-------------------
IDフィールド(オートナンバー型) 主キー
1
2
3
-------------------
伝票番号フィールド
A001
A001
A002
-------------------
部署フィールド
営業部
システム部
営業部
-------------------
金額フィールド
100
200
300
-------------------
という状態ですが、
新たに主キーフィールドを作り
更新クエリで
UPDATE テーブル1 SET テーブル1.主キー = [テーブル1]![伝票番号] & [テーブル1]![部署] & [テーブル1]![金額];
をして、主キーを独自に作った方がいいのか。
アクセスを作るにおいて、どちらの方が良いのでしょうか?
テーブルのレコードは削除したりする事もあるので、オートナンバー型だと空きができてしまいます。
レコードに空きができないデータベースなら、オートナンバー型、
空きができるデータベースなら、独自に作った主キーにしたほうがいいのでしょうか?
No.3ベストアンサー
- 回答日時:
よい質問です。
この場合は伝票No.を主キーにすると
番号を間違えて入力してレコードが出来てしまえば
主キーの変更はできません。
削除して新規に入力することになります。
主キーは数値、文字列も可能ですがオートナンバー型を勧めます。
ただしフィールド名はIDのままにせずに
伝票IDとユニークなものに変えておきます。
オートナンバーにすると主キーはACCESS側にお任せになるので、
フォーム、レポート上では省略出来るので、番号に空きが出来ても問題ないでしょう
一般的に主キーとは別に伝票No.、商品コード、取引先コードを用意しますが
これはフォーム、レポートでのレコードの抽出条件、表示(リスト)の順番のためです。
良い質問ですかw実はずっと疑問に思ってた事なのです。
オートナンバー型の主キーで、フィールド名は替えた方が良いようですね。
ありがとうございました。
No.4
- 回答日時:
主キー項目は確かに悩みどころですね。
心中、お察しして余りあるところです。
さてさて、今回ご提示のテーブルのサンプルに関してだけを観点にすると
主キーはオートナンバーに限らず、何か別に持つ必要がありますね。
主キーフィールドは重複不可ですから、
重複が発生している[伝票番号]・[部署]は設定できません。
[金額]を主キーにするという愚かしいことはしないでしょう。
よって、何か別の主キーたりえるフィールドが必要、と言うことです。
そこで一番考えやすいのは、オートナンバーによる[ID]付加ですね。
もう一つ、手段として抑えておきたいのは、
「複数フィールドを組み合わせて主キーとする」と言う方法です。
ご提示のサンプルで言えば、[伝票番号]&[部署]くらいの考え方でしょうか。
つまり、"A001営業部"・"A001システム部"となるフィールド、と言う考えです。
サンプルが多くないので難しいですが、「同じ伝票番号に同じ部署は発生しない」なら
このやり方も十分に有効と思います。
テーブルをデザインビューで開き、(エクセルの行指定の要領で)複数フィールドを選択、
主キーに設定すると、例の鍵のマークが複数あらわれます。
これで、複数のフィールドを組み合わせた主キーの設定が出来ます。
レスポンスが多少落ちるようですが、
例えば私の場合、伝票番号&商品番号で処理をしていますが、
約50万件を扱うテーブルでも(私は)気になる範囲ではありません。
とりあえず、ご参考までに。

No.2
- 回答日時:
>レコードに空きができないデータベースなら、オートナンバー型、
>空きができるデータベースなら、独自に作った主キーにしたほうがいいのでしょうか?
空きができるとなにか困ることがあるのでしょうか?
空きができるかどうかはあまりこだわらないほうがいいでしょう。
主キーはユニーク(重複なし)である必要があります。
伝票番号&部署&金額がユニークでないならオートナンバー型にするしかありません。
ユニークになるならどちらでもかまいませんが、わざわざ独自に作るメリットもないでしょう。
ただし、オートナンバー型というのはアクセス独特の型なので、他のデータベースとの互換性を考えるならあまりお勧めできません。
一般的なデータベースの場合は、伝票番号&部署&金額がユニークになるなら3つのフィールドをまとめて主キーとします。
アクセスでもその方法が可能です。
伝票番号&部署&金額がユニークでない場合は、「主キーを設定しない」「ユニークとなるフィールドを捜して主キーとする」「ユニークキーとなるフィールドを独自に作る」のいづれかになります。
>オートナンバー型というのはアクセス独特の型なので、
他のデータベースとの互換性を考えるならあまりお勧めできません。
そうなのですか、知りませんでした。
なるべくオートナンバー型は使わないようにします。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
Accessのオートナンバーについて
Access(アクセス)
-
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
6
ACCESSでオートナンバーを任意の書式で付けたい
Access(アクセス)
-
7
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
アクセスのテーブルを分ける理由に関して質問です。
その他(データベース)
-
10
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
11
「フォームを作成できませんでした」
Access(アクセス)
-
12
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
13
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
14
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
15
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
16
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
17
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
18
アクセスの追加クエリで教えてください。
Access(アクセス)
-
19
Accessで、固定アルファベット+オートナンバーを表示する
Excel(エクセル)
-
20
Accessの日本語フィールド名
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access 昇順・降順で並び替え...
-
INSERT INTO ステートメントに...
-
Accessでテーブルの値をテキス...
-
ExcelのデータをコピーでACCESS...
-
SQLServer2005のSQL文での別名...
-
ACCESSでの改行コード
-
Accessで、固定アルファベット+...
-
Accessのフィールド数が255しか...
-
Accessの最大レコード数制限
-
accessのレポートで元になるテ...
-
ACCESSで400以上のフィールドが...
-
ACCESS検索★ある文字を複数のフ...
-
【Access】フォームで自動計算...
-
アクセス メモ型 255文字...
-
ODBC--リンクテーブル'XXXX'で...
-
Accessで、フィールドにルック...
-
Access VBAにて Betweenの書き方
-
固有レコード識別子の選択とは??
-
ファイルメーカーでCountifの様...
-
アクセス エラーを数値「0」に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
SQLServer2005のSQL文での別名...
-
accessのレポートで元になるテ...
-
Accessのフィールド数が255しか...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
ExcelのデータをコピーでACCESS...
-
ACCESSで和暦を西暦に・・・
-
Accessで、固定アルファベット+...
-
ACCESSでの改行コード
-
ACCESSでテーブルのチェックを...
-
【Access】フォームで自動計算...
-
アクセス メモ型 255文字...
-
ACCESSでオートナンバーを任意...
-
アクセス エラーを数値「0」に...
-
主キーはオートナンバー型のID...
-
固有レコード識別子の選択とは??
-
accessで重複を防ぎたい
-
Access:リンクテーブルマネー...
-
Access 昇順・降順で並び替え...
おすすめ情報