11576


ユーザーが質問を投稿でき、それに回答できるというiOSアプリケーションを製作中です。

トップには質問一覧が表示されていて、  
１つの質問をタップすると、それに対する回答の一覧が表示させる予定です。(図1)

MySQLで質問一覧のテーブルとそれぞれに対する回答のテーブルを作成しましたが、(図2)  
質問テーブルと、回答テーブルと結びつける手法がわかりません。  
MySQLははじめて触れるため、見当違いな質問をしているかもしれません。  
今回のように、あるテーブルともう一方のテーブルを結びつけるためには、  
どのような手法があるでしょうか?  
そもそも、このようなことができるのでしょうか?  
関連するキーワードなどをご教示ください。

![画像の説明をここに入力](https://i.stack.imgur.com/bA980.png)  
![画像の説明をここに入力](https://i.stack.imgur.com/utJNM.png)


CC BY-SA 3.0
2015-06-21T11:59:11.737
11574
2015-06-22T01:15:13.563
2020-06-17T08:14:45.997
-1
7699
question
php mysql sql
MySQLで、２つのテーブルを結びつける手法がわかりません。


前提として **主キー** と呼ばれる列が必要です。具体的に言うと下の表の`id`列のように各レコードで異なる値を持つ列を追加してやります。

[code]

    id user datetime content
     1 田中 yy/mm/dd 地球は…
     2 太郎 yy/mm/dd ダンゴムシ…
     3 美咲 yy/mm/dd 数学の…
    
[/code]

子テーブル側には親レコードの主キーを **外部キー** として登録します。

[code]

    id 質問 user datetime content
     1    1 裕也 yy/mm/dd 海が…
     2    1 美咲 yy/mm/dd 太陽の…
    
[/code]

こうしてやれば質問の主キーに回答一覧を関連付けることが出来ます。

上記の設計はデータベースの機能としてサポートされています。特に主キーは必ず指定するべきです。またMySQLであれば`AUTO_INCREMENT`という主キーを自動生成する機能もあります。


CC BY-SA 3.0
2015-06-21T12:22:04.003
11575
2015-06-21T12:22:04.003
5750
11574
answer


関連テーブル、一対多関係、joins、データベース正規化、データベース基本関連、などで調べられることをオススメします。  
データベースの基本概念ですので、どれを読んでもそう外れないと思います。

例えば、下記のようなテーブル構成なら、

users: table  
- user_id: integer  
- user_name: varchar(100)

questions: table  
- question_id: integer  
- user_id: integer  
- created_at: datetime  
- content: text

answers: table  
- answer_id: integer  
- user_id: integer  
- created_at: datetime  
- content: text

questions_answers:table  
- question_id: integer  
- answer_id: integer

質問ID 1 の質問に紐付く回答は、

[code]

    SELECT * FROM answers AS a 
    INNER JOIN questions_answers AS qa ON a.answer_id = qa.answer_id
    WHERE qa.question_id = 1
    
[/code]

で求められるはずです


CC BY-SA 3.0
2015-06-21T12:25:08.107
11576
2015-06-21T12:25:08.107
7471
11574
answer