以下の要求を満たすテーブルを作成し、
- User登録に必要な情報は名前、メアド、パスワード
- 友だち追加は一方的にできるが、相手は追加又はブロックできる
- ブロックしたユーザー一覧が見れる(ブロックを外せる)
- 友達一覧が見れる
- 個人チャットでメッセージが遅れる
- グループ作成できる
- グループでもメッセージを送れる
- グループにはユーザーを追加、削除できる
- グループ名を変えられる
=============
lang
create table users ( id int primary key auto_increment, name varchar(50), mail varchar(50), password varchar(50) ); insert into users (id, name) values (1, 'keita'); insert into users (id, name) values (2, 'takeru'); insert into users (id, name) values (3, 'taro'); insert into users (id, name) values (4, 'ken'); create table blockusers( blockuser_id int, blockuser_name varchar(50), id int, foreign key (id) references users (id) ); insert into blockusers (blockuser_id, blockuser_name) values (1, 'yui'); insert into blockusers (blockuser_id, blockuser_name) values (2, 'ayu'); create table friends( friend_id int primary key, friend_name varchar(50), id int, foreign key (id) references users(id) ); insert into friends (friend_id, friend_name) values (1, 'mim'); insert into friends (friend_id, friend_name) values (2, 'erika'); create table groups( group_id int primary key, group_name varchar(50), id int, foreign key (id) references users(id) ); insert into groups (group_id, group_name,id) values (1,'school',1,); insert into groups (group_id, group_name,id) values (2,'school',3,); insert into groups (group_id, group_name,id) values (3,'bestfried',2,); insert into groups (group_id, group_name,id) values (4,'teamA',2,); create table schools ( school_id int primary key, school_message_content text, id int, foreign key (id) references users(id) ); insert into schools (school_id, school_message_content) values (1, 'aaa'); insert into schools (school_id, school_message_content) values (2, 'bbb'); insert into schools (school_id, school_message_content) values (3, 'ccc'); create table messages( message_id int, message_content text, id int, foreign key (id) references users(id), friend_id int, foreign key (friend_id) references friends(friend_id), group_id int, foreign key (group_id) references groups(group_id) ); insert into messages (message_id, message_content) values (1, 'hoge?'); insert into messages (message_id, message_content) values (2, 'hoge!!!'); insert into messages (message_id, message_content) values (3, 'hoge'); insert into messages (message_id, message_content) values (4, 'honcon');
以下の命令を実行するMysql文を出力しました。
(1)ユーザ(id=1)とユーザ(id=2)の会話の履歴
(2)グループ(id=1)に所属しているメンバー一覧
(3)グループ(id=1)の会話履歴
(4)hoge
という文字を含むメッセージ一覧
lang
(1)select messages.message_content from messages inner join users on messages.message_id = users.id inner join friends on messages.message_id = friends.friend_id where users.id = 1 and users.id = 2; (2)select users.name from users inner join groups on users.id = groups.id where group_name = 'school'; (3)select schools.school_message_content from schools; (4)where messages.message_content like '%hoge%';
自分で把握している疑問点は一つあります。
上記のsql文で、グループラインのテーブル(shools)のメッセージ履歴を書いたのですが、
lang
(3)select schools.school_message_content from schools;
下記のように、グループラインごとにテーブルをひとつずつ作成していたら膨大なテーブル数に成ってしまいますよね。
sql
create table schools ( school_id int primary key, school_message_content text, id int, foreign key (id) references users(id) ); insert into schools (school_id, school_message_content) values (1, 'aaa'); insert into schools (school_id, school_message_content) values (2, 'bbb'); insert into schools (school_id, school_message_content) values (3, 'ccc');
グループテーブルの中に、グループラインそれぞれの履歴を格納したいのですが、どのように記入してあげればいいのかが分かりません。
まだ回答がついていません
会員登録して回答してみよう