- ベストアンサー
主キーの値を自動更新することはできますか
Accessで、あるテーブルの主キーとなる列から、一対多の関係で別のテーブルがあります。 テーブル1 主キー a01 あああ a02 いいい a03 ううう … テーブル2 主キー b01 a01 かかか b02 a05 ききき b03 a01 くくく … こういうイメージなのですが、あとから「a01」等を、全部「g01」などのように変えて、なおかつテーブル2のデータを更新することはできるでしょうか。
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>あとから「a01」等を、全部「g01」などのように変えて 変化のある項目は主キーに利用するべきではありませんし、変化する値を主キーに設定すること自体がデータベースの設計を理解していない事になります。 よって、データベースの再構築が必要になります。
関連するQ&A
- 外部参照してるキーを主キーにすることは可能?
DB設計について質問なんですが、テーブル1のA列を主キーとし、テーブル2のA列から外部キーでA列を参照したとします。 この時、テーブル2のA列を主キーとして設定することは可能なんでしょうか。 (テーブル2の方で列Aと列Bを組み合わせて主キーにしたいのです。要は二列でデータがユニークになるように設計したい) 使用しているDBはPostgreSQLです。 以上、宜しくお願い致します。
- 締切済み
- その他(データベース)
- 未定義になるのは主キーじゃないのが原因?
二つのテーブルを一対多のリレーションシップで繋ぐとき、 一になる方は主キーじゃないと、一対多にならなかったり参照整合性はできないのでしょうか? 主キーではないテーブル1のフィールド(一)と、(多)のテーブル2のフィールドでリレーションを組もうと思ってるのですが、 リレーションシップの種類が未定義になってしまいます。 これは、1になる方のテーブル1が主キーじゃないのが原因なのでしょうか? テーブル1のこのフィールドは、重複することはありませんが、空白も入る為、主キーにできないし、 主キーはほかのフィールドで使っています。
- ベストアンサー
- その他MS Office製品
- テーブルA(主キー有り)とテーブルB(主キー有り)をLEFT OUT
テーブルA(主キー有り)とテーブルB(主キー有り)をLEFT OUTER JOINで外部結合したテーブルが 読み取り専用になっていて、データの更新ができないのですが、更新出来る方法が解らずに、困っていま す。この結合したテーブルのデータを更新できるようにするにはどのようにすればよいのでしょうか、お助け 願います。 SQL SERVER 2008 EXEPRESS EDITION をインストールしたPCからSQL 2000 serverのデータベースに アクセスしています。
- 締切済み
- SQL Server
- 主キーの変更
次のようなテーブルが存在します。レコードはあくまで参考の値です。主キーについては必ず一意の値になるようにしています。 代理店sample1がIDを紛失し、再発行を依頼された場合や,その下の顧客店やこきゃくがIDを紛失し、再発行をする場合に既存のデータをそのまま保持したまま主キーだけを変更して関連された他のテーブルに一斉に反映させるにはどうすればよいでしょうか? ここには記載していませんが顧客店IDやこきゃくIDに関連する別テーブルが10ほど存在します。 主キーが存在するレコードと重複していないかをまずチェックしてそこから基礎となるテーブルに書き換えを行いと考えているのですが、思考がそこで止まってしまっています。 よろしければアドバイスをよろしくお願いいたします。 代理店テーブル |代理店ID(主キー) |代理店名| | aaaaa | sample1| | bbbbb | sample2| 顧客店テーブル |代理店ID(主キー) |顧客店ID(主キー)|顧客店名| | aaaaa | a-00001| ○○1店| | aaaaa | a-00002| ○○2店| | bbbbb | b-00001| △△1店| | bbbbb | b-00002| △△2店| 顧客テーブル |顧客店ID(主キー) | こきゃくID(主キー)| こきゃく名| | a-00001| a-20071015-00001| Aさん | | a-00002| a-20071015-00002| Bさん | | b-00001| b-20050915-00001| Cさん | | b-00002| b-20050915-00002| Dさん |
- 締切済み
- Oracle
- accessで複合キーの処理が遅い
あるマスタデータと明細データがありキーとなる列が2つ(2列)あります マスタデータのテーブルのキー列のA列、B列を主キーとして定義し 明細データのテーブルのキー列のA列は重複ありのインデックス B列も重複ありのインデックスとしてそれぞれ設定しています その2つのキーをクエリで結合して更新する更新クエリを作成しているのですが データ量が多くなってくると非常に反応が遅くなります 同じデータ量で 2つのキー列の値をあるひとつの列に結合した値を格納しその結合列で 更新クエリを作成したところ高速に処理が動作しましたので 複合キーだった場合の処理速度が遅いのだと推測しました (※C列にA列 & B列 の結合した値を格納してC列をキーにするという事です) accessで複合キーの更新クエリを作成する場合、高速に動作させるには なにか工夫が必要なのでしょうか? アドバイス下さい 上記のように複数のキーをひとつの列に結合する工夫で早くはなったのですが・・・ 余分なデータを格納する事になるので非常に容量が大きくなってしまう問題があります
- 締切済み
- その他(データベース)
- XMLで主キーを自動的に入力する方法
VB.NET2005で家計簿を作っています。 データの保存はXMLで行いたいと考えています。 DataSetにshishutuテーブルとShopテーブルをつくり、shishutuテーブルにはShopテーブルの主キーのデータを格納することで二つのテーブルを連携したいと考えています。 そこでデータ入力時に自動的に主キーを入力したいと思うのですが、Accessのようにオートナンバー型などがないので、一意のデータをどのように入れたらいいか悩んでいます。 Rows.Countでは、データを削除するとデータが重なるなど不具合も出てくるのではないかと思っています。 そこで 1. いつ、どの時点で 2. どのようなプロパティを参照にして 3. 一意のデータを作ればよいか? についてやもしくは「そもそもXMLでは主キーを自動的に入れることは不向きで別に良い方法がある」などのご意見を伺いたいと思います。 なにか良い知恵がありましたらよろしくお願いします。
- ベストアンサー
- Visual Basic
- 外部キーだけのテーブル(主キーがない?)
データベースのテーブルについておたずねします. 主キーがなくて,そのかわりに外部キー(と主キー以外の列)しか持たない テーブルも可能だと聞きました. テーブルには主キーが必ずあるものだと思っていましたが, どのような使いかたをするのでしょうか. どうやら,最初からデータがあるわけではなく, 追加されるタイミングがわからないデータを格納する場合に作っておく, ということらしいのですが,なんのことかよくわかりません. データベース関連書籍をいくつか調べましたが, 主キーのないテーブルの説明などは見当たりません. また,この悩ましい問題を与えてくれた知り合いに訊ねましたが, テーブル構成などの具体的なことは, 企業内のことなので,教えてもらえませんでした. 何か具体的な例を交えながらご説明いただければと思います.
- ベストアンサー
- その他(データベース)
- Access 主キーについて
Accessでテーブルを作りCSVファイルをテーブルへ読み込みました。その時は主キーを設定しませんでした。1000件あるデータは1000件分読み込めました。 次にテーブルのデータを消して、主キーを2フィールドに設定して、同じように1000件分のデータを読み込んだら950件分しか読み込めませんでした。これは50件は重複するデータがありますよということなのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 主キーが文字型での結合
主キーが文字列型のカラムhoge_idがあります。 (hoge_idは英数字8文字とします) hoge_idで、他のテーブルに結合します。 また、Webからアクセスする必要があり、URLのパラメータで、 ?hoge_id=A1B2C3D4 の様に、主キーを渡す必要もあります。 文字列を主キーにする方法に慣れていないせいか、気持ち悪く感じます。 主キーを別途serial型のカラムidを作成し、 hoge_idには、ユニークキーで設定をし、 結合や、URLのパラメータは主キーのidを使う方法はあまり意味がないでしょうか。 アドバイスを頂けませんでしょうか。 よろしくお願い致します。
- ベストアンサー
- PostgreSQL
お礼
自動更新はできないのですね。ご教示ありがとうございます。 コード名を見直したかったのですが、それでは一旦参照整合性を削除し、再度新しい列を設けて構築し直すことにします。 ありがとうございました。