※ ChatGPTを利用し、要約された質問です(原文:mysqlのデータベース設計(1テーブルで管理))
【質問】MySQLのデータベース設計について
このQ&Aのポイント
会員がログインしてブログ管理できるシステムのためのMySQLのデータベース設計について質問です。
現在、一般的にはユーザー情報テーブルとブログ記事テーブルを別々に作成しますが、私はこれを1つのテーブルで管理することを考えています。
一つのテーブルですべてをまとめて管理することで、わかりやすさと処理速度の向上を図りたいのですが、デメリットはあるのでしょうか?
お世話になります。
現在、会員がログインしてブログ管理できる(記事を作成・編集できるシステム)を考えています。
そこでデータベース設計について質問があります。
一般的には、
・ユーザー情報に関するテーブル
・ブログ記事に関するテーブル
この2つを以下のような感じで設計すると思うのですが↓
■usersテーブル
・id
・ユーザー名
・パスワード
■articleテーブル
・id
・user_id(記事投稿者のid)
・contents(ブログタイトル、ブログ本文)
・created
・modified
私は、この2つを1つのテーブルですべてまとめて管理することを考えているのですが、
何かデメリットはあるのでしょうか?↓
■usersテーブル(このテーブル1つですべてまとめて管理)
・id
・ユーザー名
・パスワード
・contents(ブログタイトル|ブログ本文|記事投稿日|記事編集日)
・created
・modified
ちなみにブログ記事は、区切り文字で分けながらcontentsにどんどん詰め込んでいき(updateする)、
取り出すときは区切り文字をexplodeしていく形を考えています。
実際にはもっと項目が多くなるのですが、1ユーザーの情報をすべて1つのテーブルで管理することで個人的に非常にわかりやすい、さらに単純なのでこちらのほうが速度も速いのではないかと思っているのですが、良くないのでしょうか?(あまり見かけないので)
どなたか教えていただけると幸いです。
よろしくお願い致します。
お礼
ご回答いただきありがとうございます。 >特定の記事を消すときはどうするか。 >特定の月だけを表示するときどうするか。 >区切り文字を利用することで本文中の文字に制限がかかる。 これらはすべて、 記事no|投稿月|記事タイトル|記事本文|投稿日|更新日||(1件目) 記事no|投稿月|記事タイトル|記事本文|投稿日|更新日||(2件目) のように区切り文字を含めて保存し、表示や削除処理はexplodeとifでやっていこうと考えていましたが、おっしゃるとおりです。逆に複雑になってしまい、データベースの利点が活かせていないですね; テーブルは複数に分けて管理していきたいと思います。 この度はわかりやすくご助言いただきありがとうございました。