とりあえず最低限のデータベースとしてテーブルを考えてみました。
テーブル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