0

私は2つのテーブルを持っています。
テーブルムービー
- id (PK)
- タイトル
- タイプ

テーブルエピソード
- id (PK)
- エピソード (PK)
- タイトル

各ムービーにはいくつかのエピソードがあります。

映画

---------------------------------
| id | title       | type       |
|----|-------------|------------|
| 1  | movie1      | 3 episodes |
| 2  | movie2      | 2 episodes |
---------------------------------


エピソード

----------------------------------------
| id | episode     | title             |
|----|-------------|-------------------|
| 1  | 1           | movie1 episode 1  |
| 1  | 2           | movie1 episode 2  |
| 1  | 3           | movie1 episode 3  |
| 2  | 1           | movie2 episode 1  |
| 2  | 2           | movie2 episode 2  |
----------------------------------------


(両方のテーブルで) レコード id="1" を更新する場合、よく使用します:
Table Movie :

Update Movie set title='...', type='...' where id=1;

テーブルエピソード

Delete from Episode where id=1;
Insert into Episode(id, episode, title) values('...', '...', '...');

テーブル エピソードを更新するのはばかげた方法だと思います。ユーザーがテーブルのレコードを変更、追加、または削除し、すべての変更をデータベースに保存する可能性があることを考慮して、レコードを更新する別の方法は考えられません。

誰にも別の解決策がありますか?

編集:

元。ユーザーがテーブル エピソードに何らかの変更を加える (id=1 のみ)
エピソード

----------------------------------------
| id | episode     | title             |
|----|-------------|-------------------|
| 1  | 1           | movie1 episode 1  |
| 1  | 2           | movie1 episode 1a |
| 1  | 3           | movie1 episode 2  |
| 1  | 4           | movie1 episode 3a |
| 1  | 5           | movie1 episode 3b |
----------------------------------------

そのすべての変更をデータベースに保存するにはどうすればよいですか?

4

2 に答える 2

0

このクエリで問題を解決できると思います:

update Movie m inner join Episode e on m.id = e.id and m.id = 1 set m.title = 'your_value', e.title = 'your value'

データベース: MYSQL 5.5

于 2012-12-15T08:54:24.570 に答える
0

テーブル構造を少し変更することをお勧めします。そうすれば、すべての更新は必要ありません。

つまり、Movie.Type は、エピソード (ムービー ID) で SELECT COUNT(*) を実行することによって計算できます。Movie.Type を格納する必要がある理由がわかりません。Episode.Title も計算できます。ムービー タイトル + エピソード タイトルではなく、エピソード テーブルにエピソード タイトルを格納するだけで済みます。そうすれば、冗長なデータを保存して更新方法を心配する代わりに、クエリでタイトルを計算するだけで済みます。

于 2012-12-15T09:03:48.747 に答える