55691


**最終的にやりたいこと**  
・「登録した任意ユーザ」がブログへ記事を投稿  
・ブログ記事の一部を有料化  
・「該当記事へ対して課金したユーザのみ」が「該当記事」を閲覧できるようにしたい

**現状のテーブル構成**  
・ブログ記事テーブルb。u_idカラムあり  
・ユーザテーブルu  
※1対多

* * *

**分からないこと。判定フラグのDB格納**  
「該当記事へアクセスしてきたユーザ」が、「該当記事へ課金したユーザ」かどうかの判定。  
このような判定フラグをDBへ格納することは可能ですか？

**分からないこと。テーブル構成**  
「該当記事へ課金したユーザ」であることをDBへINSERTするにはどうすれば良い？

  * 案1.ブログ記事テーブルbにユーザ課金カラムを新規作成して、課金したユーザテーブルu_idを、「,」か何かで区切って複数格納していく

  * 案2.ユーザテーブルuの1カラムに、課金したブログ記事テーブルb_idを、「,」か何かで区切って複数格納していく

  * 案3.「課金テーブルk」を新規作成して、「ブログ記事テーブルb_id」と「ユーザテーブルu_id」を格納していく  
※この時の三者の関係性は、「ブログ記事テーブルb」と「ユーザテーブルu」と「課金テーブルk」がそれぞれ「多対多」？

その他の案は何かありますか？

**補足**  
ブログはWordPressなどの一般的なものではありません


CC BY-SA 4.0
2019-06-11T01:23:01.123
55690
2019-06-11T02:31:03.880
2019-06-11T01:52:46.313
3060
7886
question
php mysql データベース設計
「該当記事へ課金したユーザのみ」が「該当記事を閲覧できる」ようにしたい時のDBテーブル構成について


mysqlのタグがあるのでRDBMSとすれば、案1・案2は基本的に避けて、案3を選択してください。

> ※この時の三者の関係性は、「ブログ記事テーブルb」と「ユーザテーブルu」と「課金テーブルk」がそれぞれ「多対多」？

いいえ。

`ブログ記事`と`ユーザ`の関係が多対多であり、それを実現するのが`課金テーブルk`です。  
これを「中間テーブル」と言ったりします。

> ・このような判定フラグをDBへ格納することは可能ですか？

に対する回答としては、`課金テーブルk`のレコード有無で判断すれば良いでしょう。  
要件によっては有効期限を持たせたり、無効化するフラグを持つ設計もアリだと思います。


CC BY-SA 4.0
2019-06-11T01:36:32.530
55691
2019-06-11T02:31:03.880
2019-06-11T02:31:03.880
2238
2238
55690
answer