ホームページ >データベース >mysql チュートリアル >関連データのリストをリレーショナル データベースに保存するにはどうすればよいですか?

関連データのリストをリレーショナル データベースに保存するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 01:12:10313ブラウズ

How Should I Store Lists of Related Data in a Relational Database?

データベース列へのリストの保存: 正規化されたリレーショナル データベース設計のガイド

リストなどの階層データをデータベース列に保存するのは難しい場合があります。フルーツのリストを含むオブジェクト FOO を保存し、フルーツが別のテーブルに保存されるシナリオを考えてみましょう。

正規化されたリレーショナル データベースでは、リストを直接保存することはお勧めできません。コラムで。これにより、データの整合性の問題が発生し、データの効率的な維持とクエリの実行が困難になります。代わりに、FOO オブジェクトをフルーツに関連付ける ジャンクション テーブル を作成する必要があります。

データベース スキーマの設計

次のテーブルを作成します。

  • FOO: FOO オブジェクトの整数列属性。
  • Fruits: フルーツ ID の整数列とフルーツ名の文字列。
  • FOOFruits: このジャンクション テーブルは、FOO オブジェクトをフルーツに関連付けます。これには、FruitID と FooID の 2 つの列が含まれています。

スキーマの例:

CREATE TABLE FOO (
  id int primary key not null,
  int1 int,
  int2 int,
  int3 int
);

CREATE TABLE Fruits (
  id int primary key not null,
  name varchar(30)
);

CREATE TABLE FOOFruits (
  FruitID int references Fruits (ID),
  FooID int references FOO(id),
  constraint pk_FooFruits primary key (FruitID, FooID)
);

データの入力

FOO オブジェクトのリストにフルーツを追加するには、FOOFruits に行を挿入します。表:

INSERT FOOFruits(FooID, FruitID)
SELECT 5, ID FROM Fruits WHERE name = 'Apple';

正規化設計の利点

  • リスト内の結果が有効であることを保証することで、データの整合性を維持します。
  • データを関連する小さなデータに分割することで、データのクエリと管理が容易になります。テーブル。
  • データ構造の将来の変更に対する柔軟性を提供します。

以上が関連データのリストをリレーショナル データベースに保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。