• ベストアンサー

プライマリキー

インターネットでプライマリキーを調べると、「行を一意に識別する列」という風に書いてあって、プライマリキーはテーブルに一つで、一意でなければならないというふうに書いてあるんですが、 例えば、複数拠点を持つ販売店があるとして、販売店のコードと拠点のコードの2つで、レコードを識別する際は、販売店コードと拠点コードはプライマリキーになるのでしょうか?

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 とりあえず、Access(2000)では、2つで主キー(プライマリキー)を設定出来ます。 この場合は、両方とも同じでなければ登録出来ます。

mikmik_a
質問者

お礼

ありがとうございます。じゃあ、テーブルに1つってのは、あんまり気にせずに2つで登録すればいいってことですね。

その他の回答 (1)

回答No.1

売店コードと拠点コードでプライマリ(一意)ということになりますね。

関連するQ&A

  • SQLの抽出方法について

    あるテーブルに以下のカラムがあります。 店舗コード,売上日,金種コード,履歴番号,売上金額 プライマリキー(店舗コード~履歴番号) このテーブルには、店舗、売上日、金種コードごとの売上金額が履歴で管理されています。 ・データイメージ 0001,2004/04/01,01,0,1000 ・・・1行目 0001,2004/04/01,01,1,1100 ・・・2行目 0002,2004/04/01,02,0,500 ・・・3行目 0003,2004/04/01,03,0,2000 ・・・4行目 0003,2004/04/01,03,1,2010 ・・・5行目 0003,2004/04/01,03,2,1500 ・・・6行目 0001,2004/04/02,01,0,800 ・・・7行目      ・      ・ このデータから、売上日を指定して、 全店舗の金種ごとの履歴番号が最大のレコード(2,3,6行) を取得したいのですが、いいSQLが思いつかないので、ご存知の方教えてください。

  • 複数のレコードの値を取り出すには

    初心者です。あるカラムから複数のレコードの値を取り出すにはどのように書けばよいかどなたか教えていただけますでしょうか。 下記のコードではcalendartblというテーブルから1レコードのみ取り出せます。 テーブル:calendartbl holiday(カラム名) 2016/9/12(レコード1行目) 2016/9/14(レコード2行目) 2016/9/20(レコード3行目) 2016/9/26(レコード4行目) 2016/9/28(レコード5行目) コード: $sql = "SELECT calendartbl.holiday FROM calendartbl"; $ret = f_db_select($sql); foreach ($ret as $h){ $holiday = $h['holiday']; } 結果=2016/9/12 では複数のレコード、つまり「2016/9/12、2016/9/14、2016/9/20、2016/9/26、2016/9/28」を取り出して、上記の$holidayに代入させるにはどのように書けばよいでしょうか。 どなたか教えて頂けたら幸いです。 よろしくお願い致します。

    • 締切済み
    • PHP
  • ManagementStudioからのデータ削除

    初めてSQL Server 2008 Expressを入れて使用しているのですが、 作成したテーブルに同一データをいれて、 SQL Server Management Studio から上位200行編集を選択し その入れたデータを削除すると、エラーが発生して削除できません。 エラー内容は、 エラーメッセージ:行の値が更新または削除された為、行が一意になりません。または複数の行が更新されます。 特にプライマリキーの設定やインデックスなどは使用していないのですが、何か設定が必要なのでしょうか。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。

  • WHERE句内でプライマリキーの検査ができない

    こんにちは。mySQL初心者です。 例えば、「sample」というDBに以下の3つのフィールドのあるテーブル「text」があるとします。 (実際には、DATETIME型のフィールドも含めて20列あります) key => 整数型で、プライマリキー&オートインクリメントを設定 status => テキスト型(UTF-8) note => テキスト型(UTF-8) ここで、「SELECT * FROM text WHERE key=1」というSQLで1つ目のレコードを取得しようとすると、「#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key=1 LIMIT 0, 30' at line 1」というエラーが出てしまいます。 「SELECT * FROM text WHERE status='sample_01'」や「SELECT * FROM text WHERE note='test entry'」というSQL文ならちゃんとデータを取得できるのですが、「WHERE key=1」のようにプライマリキーで検索しようとするとエラーになるのは何故でしょうか。 どなたか見当が付くかたがいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いします。 <環境> XAMPP Ver.1.7.4で、mySQLは Ver. 5.5.8です。

    • ベストアンサー
    • MySQL
  • COUNTIFSの逆の働きを関数で実現したい

    COUNTIFSでは複数条件で該当のセルをカウントできますが、その逆で数値分を対象のフィールド名に置き換える方法を、関数のみで実現したいと思っています。 詳細は図もご覧頂きたいのですが、右のテーブル→左のテーブルをCOUNTIFS等で実現するのは容易です。 しかしながら、左のテーブル→右のテーブルを実現する方法がなかなか思い浮かびません…… 何か、実現する手立てはありませんでしょうか? なお、左のテーブルにおいて、行のフィールド:1,2,3…… は特に連番ではありませんが、一意の文字列です。 右のテーブルにおいて、この部分は手入力を行います。 同様に、列のフィールド:A,B,C…… も特に連番ではありませんが、一意の文字列です。 右のテーブルにおいて、行のフィールドからその個数分表示したく思います。 以上、お手数ではございますが、お知恵をお貸し頂ければ幸いです。

  • データベーススペシャリスト午後II問題 問2

    平成23年春期データベーススペシャリスト午後II問題 問2設問番号なし(2)の問題について (設問数が1問のため設問番号はありません。) 概念データモデルを完成させる問題ですが、ひとつどうしても納得のいかない箇所があります。 「部門」と「生産現場」「倉庫」の関係と、「取引先」と「部材メーカ」の関係です。 解答では、「部門」がスーパータイプ、「生産現場」と「倉庫」がサブタイプで、 「取引先」がスーパータイプ、「部材メーカ」がサブタイプとなっています。 (画像の赤丸の部分です。) どう考えてもこの2つそれぞれの関係は、スーパータイプサブタイプではなく、外部キーでマスタを参照する1対1又は1対多の関係だと思うのですが・・。 各テーブル構造は以下です。 部門〔部門コード(主キー)、部門名、部門種類〕 生産現場〔生産現場拠点コード(主キー)、部門コード(外部キー)、現場区分〕 倉庫〔倉庫拠点コード(主キー)、部門コード(外部キー)、倉庫区分〕 取引先〔取引先コード(主キー)、取引先名、取引先種類〕 部材メーカ〔部材メーカ拠点コード(主キー)、取引先コード(外部キー)、物流費負担率〕 ※テーブル構造は問題と解答から引用しています。 問題文で関係する箇所を引用します。 --------------------------------------------------------------------- ・部門は、部門コードで一意に識別される。部門には、いくつかの種類がありその分類は、部門種類によって識別される。 ・取引先は、取引先コードで一意に識別される。取引先には、いくつかの種類があり、その分類は、取引先種類によって識別される。 ・在庫把握やものの移動の管理を必要とする場所を拠点と呼ぶ。 ・拠点は、Y社の一部の部門又は一部の取引先からなら在庫管理業務上の組織の呼称であり、拠点コードで一意に識別される。 ・ある拠点が、Y社の部門である場合は、Y社のどの部門に相当するかを識別するために、Y社の部門コードが与えられている。 ・拠点は、生産現場、倉庫、部材メーカの3つに大別され、拠点区分によって識別される。 --------------------------------------------------------------------- すみませんが誰かわかる方教えてください。 問題 http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_db_pm2_qs.pdf 解答 http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_db_pm2_ans.pdf

  • 多側のない1側レコードに多を入力するには

    こんにちは、いつもお世話になっています。 ウィンドウズ7 Access2010 質問なのですが、 1対多でリレーションされたテーブルレコードに、 1の中に多が一つもないレコードに対し、共通のレコードを追加することができますか? 以下例 1側テーブル  行コード(オートナンバー):1  行:あいうえお  行コード(オートナンバー):2  行:かきくけこ  行コード(オートナンバー):3  行:さしすせそ     中略  コード:10 行:わをん 多側テーブル  分類コード(オートナンバー):1  行コード:1  分類:母音  分類コード(オートナンバー):2  行コード:3  分類:子音  分類コード(オートナンバー):3  行コード:7  分類:子音 この場合、 1側テーブルの行コードが2、4~6、8~10の多側が入力されていません。 この未入力の多側テーブルに共通のレコードを入力したいのです。 ただし、共通と言っても、分類コードはオートナンバーで、 行コードは1側のテーブルに対応した数字を入力してほしいです。 おそらく、クエリで多側のない1側を抽出することはできると思います。 しかし、多側のない1側に一斉に?楽に入力するには何かいい方法がないでしょうか。 説明不足でしたらすみません、補足いたします。 すみませんが、どなたかご教授お願いいたします。

  • Accessの固有レコード識別子の選択

    Accessでリンクテーブルを作る際に行う、固有レコード識別子の選択はなんのためにするものなのでしょうか?

  • Access2003 VBAのDELETEについて

    AccessでOracleとODBC接続してデータを操作するアプリを作成しています。 処理をする際に毎回ワークテーブルを全件削除し、取り込んで本テーブルにインサートする という処理にて、ワークテーブルのデリート文でなぜか10件しかレコードが削除されません。 固有レコードの問題を解消するためにDB側ではID列をPKとして一意に決まるように振っています。 ODBCのリンクテーブルという形で登録しています。 テーブル:TEST_WORK カラム:ID(PK)、コード、名称 CurrentDb.Execute "DELETE FROM TEST_WORK" 上記記述にてなぜか全削除されません。 感じとしては一回目のdeleteでIDが1~9までが削除され、次にdeleteした際は10~99までが削除され・・・というように桁数で変化している気がします。 全て消すにはどのようにすればよいでしょうか?

  • 関係データベースについて(ITパスポート)

    ITパスポートの勉強をしているのですが、その中で関係データベースについて参考書やネットで検索をしてもまったく理解ができません。 下記の2点の問題についてですが、回答の解説を読んでも理解が全くできず、なぜこの答えが正しいのかがわかりません。 できるかぎり詳しく解説をして頂ければと存じます。 (1) 問)関係データベースにおいて主キーを指定する目的はどれか? 答)主キーに指定した属性(列)で、レコード(行)を一意に識別できるようにする (2) 問)関係データベースを利用する際に、データの正規化を行う目的として、適切なものはどれか? 答)データが重複したり、データの更新の際に矛盾が生じたりしないようにする。