LoginSignup
10
13

More than 5 years have passed since last update.

SNSをつくるときのテーブル設計

Last updated at Posted at 2018-12-30

とりあえず最低限のデータベースとしてテーブルを考えてみました。

テーブルuser

  • user_id (ユーザーを識別するための一意の文字列)
  • user_name (表示用の名前)
  • encrypted_password (復号できない暗号化された文字列)
  • description (自己紹介の文字列)
  • mail_address (アカウント作成時やプロモーションメール送信などで利用するメールアドレス)
  • profile_picture_path (アイコン画像のパス)
  • num_data (投稿数)
  • num_following (フォロー数)
  • num_followed (フォロワー数)
  • num_favorite (いいね数)
  • num_list (作成したor保存したリスト数)
  • created_at (アカウントを作成した日時)
  • updated_at (アカウントを更新した日時)
CREATE TABLE  `hryshtk_sns`.`user` (
`user_id` BIGINT UNSIGNED NOT NULL ,
`user_name` TEXT NOT NULL ,
`encrypted_password` TEXT NOT NULL ,
`description` TEXT NULL ,
`mail_address` TEXT NOT NULL ,
`profile_picture_path` TEXT NOT NULL ,
`num_data` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`num_following` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`num_followed` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`num_favorite` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`num_list` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`created_at` DATETIME NOT NULL ,
`updated_at` DATETIME NOT NULL ,
PRIMARY KEY (  `user_id` )
) ENGINE = MYISAM

テーブルdata

  • data_id (投稿を一意に識別する数字)
  • user_id (ユーザーを識別するための一意の文字列)
  • message (投稿内容)
  • media_type (メディアの種類。画像や動画など)
  • media_path_01 (メディアのパス)
  • media_path_02 (メディアのパス)
  • media_path_03 (メディアのパス)
  • media_path_04 (メディアのパス)
  • reply_count (リプライ数)
  • retweet_count (シェア数)
  • favorite_count (いいね数)
  • source (ブラウザ情報)
  • remote_address (投稿元のIPアドレス)
  • created_at (投稿を作成した日時)
  • updated_at (投稿を更新した日時)
CREATE TABLE  `hryshtk_sns`.`data` (
`data_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` BIGINT UNSIGNED NOT NULL ,
`message` TEXT NOT NULL ,
`media_type` TEXT NULL ,
`media_path_01` TEXT NULL ,
`media_path_02` TEXT NULL ,
`media_path_03` TEXT NULL ,
`media_path_04` TEXT NULL ,
`reply_count` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`retweet_count` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`favorite_count` BIGINT UNSIGNED NOT NULL DEFAULT  '0',
`source` TEXT NOT NULL ,
`remote_address` TEXT NOT NULL ,
`created_at` DATETIME NOT NULL ,
`updated_at` DATETIME NOT NULL
) ENGINE = MYISAM
10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13