0

私は1つのテーブルを持っています:

horse
    ->id
    ->course
    ->date

別のもの:

course
    ->title
    ->trackstyle

そして3つ目

trackstyle
    ->id
    ->style

コースのスタイルは複数になる可能性があるため、フィールドを作成して値をカンマで区切って保存すると考えました。

すなわち:

trackstyle
id:1
style:galloping

id:2
style:flat

course
title:ascot
trackstyle:1,2    (as it's galloping and flat)

title=beverley
trackstyle:1      (as it's just flat)

ここで、3 つのテーブルすべてをクエリするリクエストを作成するのに問題があります...

データベースを構築する正しい方法ですか? または、コース テーブルに新しい列を追加して、トラックスタイルを「ハード」に設定する必要があります。

course
title: ascot
trackstyle: galloping, flat

title: beverley
trackstyle: flat
4

2 に答える 2

0

いいえ、これはデータベースを構築するための良い方法ではありません。代わりに、次のようなことをする必要があります

course
    ->title

trackstyle
    ->id
    ->style

そして1つの結合テーブル

 course_trackstyles
       ->course_id
       ->trackstyle_id

クエリは次のようになります

SELECT c.title, GROUP_CONCAT(t.style) 
FROM course c JOIN course_trackstyles ct ON ct.course_id = c.id
              JOIN trackstyles t ON ct.trackstyle_id = t.id
GROUP BY c.title
于 2012-08-17T10:32:13.287 に答える
0

1つのコースに多くのトラックスタイルを含めることができるため、これは1対多の関係です。

course
title: ascot
trackstyle: 1
title: ascot
trackstyle: 2
title: beverley
trackstyle: 2

trackstyle
id: 1
style: galloping
id: 2
style: flat
于 2012-08-17T10:32:22.637 に答える