ツイート用のテーブルは1つだけにして、ツイートのタイプを識別するカラムを追加すると思います。
こんな感じ↓になりますね。
SQL
1CREATE TABLE IF NOT EXISTS 'tweets' (
2 'id' INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
3 'user_id' INT NOT NULL,
4 'tweet' VARCHAR(140) NOT NULL,
5 'tweet_type' INT NOT NULL, -- 1. 趣味用, 2. 広告用, 3.悪口用
6 'created_at' DATETIME NOT NULL,
7 'updated_at' DATETIME NOT NULL
8);
更に、それぞれのタイプのツイートに必要な付随項目は別のテーブルにします。
SQL
1-- 趣味用ツイートの付随項目
2CREATE TABLE IF NOT EXISTS 'tweet_hobby' (
3 'id' INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
4 'tweet_id' INT NOT NULL, -- tweets.id
5 'hobby_text' VARCHAR(255) NOT NULL,
6 'created_at' DATETIME NOT NULL,
7 'updated_at' DATETIME NOT NULL
8);
9
10-- 広告用ツイートの付随項目
11CREATE TABLE IF NOT EXISTS 'tweet_ad' (
12 'id' INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
13 'tweet_id' INT NOT NULL, -- tweets.id
14 'ad_text' VARCHAR(255) NOT NULL,
15 'created_at' DATETIME NOT NULL,
16 'updated_at' DATETIME NOT NULL
17);
18
19-- 悪口用ツイートの付随項目
20CREATE TABLE IF NOT EXISTS 'tweet_dis' (
21 'id' INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
22 'tweet_id' INT NOT NULL, -- tweets.id
23 'dis_text' VARCHAR(255) NOT NULL,
24 'created_at' DATETIME NOT NULL,
25 'updated_at' DATETIME NOT NULL
26);
JOINした結果に発生するNullはその項目が空であるので問題ないと考えますね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。