0

次の列を持つ2つのカテゴリAとBがあります。

カテゴリーA

_id | name

カテゴリーB

_id | tableA_id |name

アイテムリスト

_id | name | tableB_id

tableA_idおよびtableB_idは外部キーであり、_id列は主キーです。

カテゴリBはAのサブカテゴリです。

name列は一意です(各テーブルには1つのカテゴリのみがあります)

カテゴリAとBのアイテムをそれぞれ5つ挿入したいと思います。

アイテム1:

name: item1
category A: Movie
Category B: Action

アイテム2:

name: item2
category A: Movie
Category B: Drama

アイテム3:

name: item3
category A: Movie
Category B: Comedy

アイテム4:

name: item4
category A: Music
Category B: Pop

アイテム5:

name: item5
category A: Music
Category B: Rock

対応するプライマリのIDを照会せずに、外部キーを設定するにはどうすればよいですか?

それとも、DB設計の重要な部分が欠けていますか?

4

3 に答える 3

1

データベースの設計が「正しい」場合、破損を防ぐために、親キーなしで子レコードを挿入することはできません。

再クエリを実行せずに親キーを取得するには、次の優れた投稿をお読みください。

http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record

于 2012-08-23T12:44:36.860 に答える
1

対応するプライマリの ID を照会せずに外部キーを設定するにはどうすればよいですか?

あなたの質問を正しく理解していれば、テーブルに新しいレコードを挿入するときにList、Rock の ID をクエリせずに外部キーを入力することはできません。

select _id,  tableA_id
from Category_B
where name = 'Rock'
于 2012-08-23T12:45:07.750 に答える
1

最初に CATEGORY_A と CATEGORY_B を設定します。

次に、CATEGORY_B.ID を知っている ITEM_LIST に挿入します。

于 2012-08-23T12:51:50.523 に答える