sql >> データベース >  >> RDS >> Mysql

MySqlテーブル内にチャットメッセージを保存する

    より良いdbスキーマが必要です-よりリレーショナルです。そうすることで、他のいくつかの改善も得られます(パスワードで保護されたチャットとマルチユーザーチャットでカップルを挙げます)

    これがあなたのデータベースのERDに関する1つの見解です。

    2016年5月6日編集フィールドタイプと名前が(うまくいけば)改善されたDDLの追加

    CREATE TABLE user
    (
        user_id CHAR(32),
        user_login VARCHAR(255),
        user_password CHAR(64),
        user_email VARCHAR(400),
        PRIMARY KEY (user_id)
    );
    
    CREATE TABLE message
    (
        message_id CHAR(32),
        message_datetime DATETIME,
        message_text TEXT,
        message_chat_id CHAR(32),
        message_user_id CHAR(32),
        PRIMARY KEY (message_id)
    );
    
    CREATE TABLE user_chat
    (
        user_chat_chat_id CHAR(32),
        user_chat_user_id CHAR(32),
        PRIMARY KEY (user_chat_chat_id,user_chat_user_id)
    );
    
    CREATE TABLE chat
    (
        chat_id CHAR(32),
        chat_topic VARCHAR(32),
        chat_password CHAR(64),
        user_chat_user_id CHAR(32),
        PRIMARY KEY (chat_id)
    );
    
    CREATE INDEX user_login_idx ON user (user_login);
    ALTER TABLE message ADD FOREIGN KEY message_chat_id_idxfk (message_chat_id) REFERENCES chat (chat_id);
    
    ALTER TABLE message ADD FOREIGN KEY message_user_id_idxfk (message_user_id) REFERENCES user (user_id);
    
    ALTER TABLE user_chat ADD FOREIGN KEY user_chat_user_id_idxfk (user_chat_user_id) REFERENCES user (user_id);
    
    ALTER TABLE chat ADD FOREIGN KEY chat_id_idxfk (chat_id,user_chat_user_id) REFERENCES user_chat (user_chat_chat_id,user_chat_user_id);
    


    1. GROUP_CONCAT ORDER BY

    2. インデックスが配列の範囲外だった

    3. 地理距離MySQL

    4. MySQLを使用してAWSEC2でLaravel5の環境変数を設定する方法