• ベストアンサー

自動採番について

お世話になります。 データベースのシーケンスによるシリアル型について質問があります。 例えば下記のような商品テーブルがあるとします。 ・商品コード ・商品名 ・価格 ・備考 ※商品コードは重複しない値(一意)を格納。 このようなマスタを作成する際にシーケンスによるシリアル型による自動採番のフィールドを指定した方がいいのでしょうか。またシーケンスによるシリアル型をどのような場合に使うのが一般的なのでしょうか。 大変、お手数をお掛けしますが説明していただけませんでしょうか。 くだらない質問ですみませんが宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

例示されている商品テーブルの場合、商品コードが一意な値と言う事なのでシリアル型のカラムは不要でしょう。 一般的にシーケンスを使ったシリアル値は、1つのレコードを容易に特定する一意な情報が無い場合に使用します。 集合としてデータを抽出する場合はいいですが、1つのレコードを特定する一意な情報が無いと特定のレコードを更新したり削除したりと言った操作が煩雑になってしまいます。 例えば、顧客からの注文情報を扱う場合、注文データテーブルには注文1件毎の注文番号や顧客情報、注文日等の情報を記録し、注文明細テーブルに注文データテーブルのキーと商品コード、注文数、販売単価等を記録すると思います。 注文データテーブルでは注文番号をシリアル型にすると、人が採番する事なく自動的にユニーク値を割り当てられて重複した値を割り当てると言ったミスを無くせますし、注文明細テーブルだと明細一件毎にレコードを特定するキーが作れて、明細の内容を修正したい時などはDB操作がしやすくなり、誤ったデータ修正が発生しなくなります。

nanchatte_se
質問者

お礼

コメントありがとうございます。 なるほど。説明ありがとうございました。 では、失礼します。

その他の回答 (2)

  • tknkk7
  • ベストアンサー率11% (378/3310)
回答No.3

Microsoft Access & Data Bace

nanchatte_se
質問者

お礼

???

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.1

例えば、登録してある商品在庫を出すとき、日付も商品コードも同じものがあって 別にどちらから出してもいいのだけど、画面のプログラム上どちらかを先に表示し、 もう一方は次の画面とした時、次画面をどこから表示したらよいかでプログラム できないのですよ。何は一意に決まっているコードがあればいいのになぁ、と いう時くらいですね。

nanchatte_se
質問者

お礼

コメントありがとうございます。

関連するQ&A