SQLデータベース設計:リストの保存を回避する方法は?

スラクネーション

したがって、次のように各ルーチンの演習のリストを格納する必要があるデータベーステーブルがあります。 ここに画像の説明を入力してください

SQLデータベースにリストを使用することになっていないことは知っていますが、正直なところ、他にどのように使用するかわかりません。何か案は?

FXD

これを行うための標準的なSQLの方法は、2つのテーブルを使用することです。

create table routine (
    id serial primary key,
    name text
);

create table exercises (
    routine_id integer references routine(id) on delete cascade /*optional*/,
    exercise text
);

Postgresは、1回の演習でルーチンを作成するための優れた構文(100%標準ではありませんが)を提供します。

with new_routine_id as (
    insert into routine(name)
    values ('Chest')
    returning id
)
insert into exercises
select id, unnest(array['Bench Press', 'Skull Crusher', 'Incline Bench Press'])
from new_routine_id

選択はあなたが期待する通りです:

select id, name, array_agg(exercise order by exercise /*it could be ordered using an additional field*/) as exercises
from routine
join exercises on id = routine_id
group by id, name

編集@klinは、演習用の配列を直接含む1つのテーブルを使用した代替ソリューションを投稿しました。この解決策は完全に有効であり、いくつかの点で私のものよりも単純です(結局、最初のコメントでこの解決策についてすぐに言及しました)。

私見ですが、ソリューションが他のソリューションよりも「優れている」理由は1つあります。誰もが配列の処理方法を知っているチームで働いていますか?

  • はい:@klinのソリューションを選択してください
  • いいえ:上記の解決策を選択してください。必要なことはすべてJOIN、配列なしで通常の​​方法で実行できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リストをSQLデータベースに保存する方法は?

分類Dev

データベース設計で1つの列テーブルを回避する方法

分類Dev

「デフォルト」アイテムを保存するためにデータベースを設計する方法

分類Dev

プレデータベースの設計方法を理解する

分類Dev

このリレーショナルデータベースの設計臭を回避するにはどうすればよいですか?

分類Dev

MYSQLデータベース設計:すべてのユーザーの3次元データを保存する方法は?

分類Dev

毎週の出席を保存するためのリレーショナルデータベースの設計

分類Dev

画像のURLを保存するためのデータベース設計

分類Dev

食品レシピを保存するためのデータベースの設計

分類Dev

複数の条件で値を計算する方法とデータベースを設計する方法は?

分類Dev

日付をSQLデータベースに保存する方法は?

分類Dev

Firebaseデータベース:ユーザーごとに友達のリストを保存する方法は?

分類Dev

データストアデータベースの関係を設計する方法

分類Dev

データベース設計-支払いゲートウェイの応答を保存するための提案

分類Dev

辞書のリストを保存するデータベース

分類Dev

カスタムレポート設定をSQLデータベースに保存するために推奨されるスキーマ/データベース設計は何ですか?

分類Dev

リストされた値をデータベースからAnylogic8.7.1の変数に保存する方法は?

分類Dev

データベースアイテムのリストをHTMLで保存する方法は?

分類Dev

ドミニオンカードを保持するためのデータベースを設計する方法は?

分類Dev

製品バリエーションのデータベースを設計するための最良の方法

分類Dev

簡単なデータベースを設計する方法

分類Dev

データベースを設計する正しい方法

分類Dev

MicrosoftAzureのSQLデータベースにデータを保存する方法

分類Dev

リストにツリーデータを保存する方法は?

分類Dev

集計結果を別のデータベースに保存する方法。[Mongodb]

分類Dev

Firebaseデータベースのデータのリストをtrueに設定する方法

分類Dev

ブログシステムのデータベースを設計する方法は?

分類Dev

医療製品のデータベースを設計する方法

分類Dev

データベースの負の値を回避するための計算

Related 関連記事

  1. 1

    リストをSQLデータベースに保存する方法は?

  2. 2

    データベース設計で1つの列テーブルを回避する方法

  3. 3

    「デフォルト」アイテムを保存するためにデータベースを設計する方法

  4. 4

    プレデータベースの設計方法を理解する

  5. 5

    このリレーショナルデータベースの設計臭を回避するにはどうすればよいですか?

  6. 6

    MYSQLデータベース設計:すべてのユーザーの3次元データを保存する方法は?

  7. 7

    毎週の出席を保存するためのリレーショナルデータベースの設計

  8. 8

    画像のURLを保存するためのデータベース設計

  9. 9

    食品レシピを保存するためのデータベースの設計

  10. 10

    複数の条件で値を計算する方法とデータベースを設計する方法は?

  11. 11

    日付をSQLデータベースに保存する方法は?

  12. 12

    Firebaseデータベース:ユーザーごとに友達のリストを保存する方法は?

  13. 13

    データストアデータベースの関係を設計する方法

  14. 14

    データベース設計-支払いゲートウェイの応答を保存するための提案

  15. 15

    辞書のリストを保存するデータベース

  16. 16

    カスタムレポート設定をSQLデータベースに保存するために推奨されるスキーマ/データベース設計は何ですか?

  17. 17

    リストされた値をデータベースからAnylogic8.7.1の変数に保存する方法は?

  18. 18

    データベースアイテムのリストをHTMLで保存する方法は?

  19. 19

    ドミニオンカードを保持するためのデータベースを設計する方法は?

  20. 20

    製品バリエーションのデータベースを設計するための最良の方法

  21. 21

    簡単なデータベースを設計する方法

  22. 22

    データベースを設計する正しい方法

  23. 23

    MicrosoftAzureのSQLデータベースにデータを保存する方法

  24. 24

    リストにツリーデータを保存する方法は?

  25. 25

    集計結果を別のデータベースに保存する方法。[Mongodb]

  26. 26

    Firebaseデータベースのデータのリストをtrueに設定する方法

  27. 27

    ブログシステムのデータベースを設計する方法は?

  28. 28

    医療製品のデータベースを設計する方法

  29. 29

    データベースの負の値を回避するための計算

ホットタグ

アーカイブ