3

カスタムフィールドを使用してDVDデータベース(MySQL)を作成したいのですが、これは、ユーザーが自分のDVDをカタログ化するために独自の情報フィールドを追加できる必要があることを意味します。たとえば、必要な属性を指定するだけです。

 - ID
 - Title

ユーザーは、次のように自分で使用するためのフィールドを追加できます。

- Actors
- Year
- Genre
- Plot
- etc

さて、この課題のベストプラクティスは何ですか?私はいくつかのアイデアを持っています:

  1. テーブルを変更し、属性を追加します(データ損失の可能性があります)
  2. 一時テーブルを使用する(パフォーマンスが低い)

より良いアイデアはありますか?

4

3 に答える 3

3

dvd_id、field_name、valueを含む別のテーブルを使用し、そこにすべてのカスタムフィールドを格納します。これにより、新しいフィールドが追加または削除されるたびにテーブルを変更する必要がなくなります。

于 2012-08-11T23:59:45.960 に答える
0

私がそのタスクを実行する場合、私は次のようなレイアウトを作成します

映画move_id| タイトル

movie_has_attribute movie_id | attribute_id

属性attribute_id| 名前| 価値

このように、joinステートメントを使用してmovie_idによってすべての属性と値を取得できます。私はあなたの質問が正しかったことを願っています。

于 2012-08-12T00:16:04.657 に答える
0

MySQL5.7とそのJSONデータ型を試してみてください。

これを使用して、ユーザー定義属性の半構造化コレクションを定義できます。

CREATE TABLE Dvd (
  id SERIAL PRIMARY KEY,
  title text NOT NULL,
  attr JSON NOT NULL
);

INSERT INTO Dvd
SET title = 'Wonder Woman', 
    attr = '{"Actors": ["Gal Godot", "Chris Pine"],
             "Year": "2017",
             "Genre": "Action",
             "Plot": "See Captain America: The First Avenger"
            }';
于 2017-07-03T20:14:00.280 に答える