2017-10-07 4 views
-1

メッセージ自体を含むmessageテーブルがあります。私はこれらの2つを分けるべきかどうか、もしあれば利益があるかどうかは分かりません。MySQLのチャットメッセージテーブルにTEXTメッセージ自体が含まれているか、または別のテーブルに入れておくべきですか?

CREATE TABLE message (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    from_id INT UNSIGNED NOT NULL, 
    to_id INT UNSIGNED NOT NULL, 
    thread_id INT UNSIGNED NOT NULL, 
    message TEXT NOT NULL, 
    is_viewed BOOL NOT NULL 
); 

これをさらに標準化すべきですか?

CREATE TABLE user_sent_message (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    message_id INT UNSIGNED NOT NULL, 
    from_id INT UNSIGNED NOT NULL, 
    to_id INT UNSIGNED NOT NULL, 
    thread_id INT UNSIGNED NOT NULL, 
    is_viewed BOOL NOT NULL 
); 

CREATE TABLE message (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    message TEXT NOT NULL 
); 

クエリが複雑になるわけではありませんか?何か利点がある場合、これを行うメリットは何ですか?私は、第1の選択肢のテーブルサイズが第2の選択肢では2つのテーブルに比べてずっと少なく、分散されることを理解している。クエリやメモリ使用時にパフォーマンスに影響を与えますか?

答えて

0

あなたは1対1の関係がある場合、どのようにでも正規化します。これが意味をなさせる唯一の場所は、2つ以上の異なるテーブルがメッセージへのアクセスを必要としていたとしても、単にテーブルのプライマリIDを使用するだけです。

1つのテーブルに貼り付けるのが簡単で、より速く、より優れています。

0

最初のケースでは、1つのテーブルに6つのカラムがあり、2番目のケースでは1つのテーブル6カラムと追加のテーブルがあります。私はあなたがテーブルを分割することで得られるものは何も見ません。私はこれを参照してくださいMySQL: multiple tables or one table with many columns? この場合、データベースに必要なオーバーヘッドの数を減らすため、テーブルに2つのシーケンスがあります。

関連する問題