web-dev-qa-db-ja.com

(MySQL)ユーザーテーブルとプロファイルは別ですか、それとも同じテーブルですか?

私は、誰でも登録して作者になることができるブログサイトを作成しています。私はそれぞれの著者に自分の公開プロフィールを持たせたいです。私の主な質問は;プロファイルページのみに固有のフィールドを含む個別のプロファイルテーブルを用意することをお勧めします。または、次の例に示すように、これらのプロファイルフィールドを一般ユーザーテーブルに追加するだけです。

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(255) NOT NULL,
 `first_name` varchar(255) NOT NULL,
 `last_name` varchar(255) NOT NULL,
 `email` varchar(255) NOT NULL,
 `password` varchar(32) NOT NULL,
 `sign_up_date` date NOT NULL,
 `activated` enum('0','1') NOT NULL,
 `admin` int(1) 0 ,
 `bio` text NOT NULL,
 `profile_pic` text NOT NULL,
 PRIMARY KEY (`id`)
)

この場合、bioとprofile_picはどちらもプロファイルフィールドです。これも単なる例であり、一般ユーザー向けのフィールドを増やす予定ですが、パブリックプロファイルのフィールドを増やす予定はありませんが、開発に進むにつれ、状況が変わる可能性があります。

これが意見であり、ベストプラクティスの質問ではない場合は、申し訳ありません。データベースアーキテクチャは初めてです。

3
user3325126

それらを一緒に保管してください。 vertical partitioning を説明しているが、これは通常、テーブルがreally幅(数十または数百のフィールド)を取得しているときにのみ使用される。それまで、それらを分離する説得力のある理由がない限り(たとえば、1人のブロガーが、異なるブログ、オーディエンス、または言語に対して複数のプロファイルを持つことができる)、スキーマを複雑にする必要はありません。

3