2012-08-07 100 views
2
讀取SQL消息

任務:可以通過指定的用戶

目前,該數據庫識別兩種類型的消息:

  1. 消息,用戶的帖子,並且是公開的,任何人,每個人都讀
  2. 用戶發佈並且非公開的消息。

這些消息只能由發佈用戶標記爲朋友的用戶閱讀。 在這一步中,您應該添加第三種類型的消息。該第三種類型的消息只能由指定的收件人閱讀。

這意味着數據庫需要提供以下內容:

  • 三種類型的消息之間進行區分的方法。這涉及對消息表的更改。
  • 一種指定特定消息的收件人是誰的方式。這可能需要額外的表格。

您的工作是執行必要的更改和額外的表爲此目的和任何鍵和外鍵 所需的關係。

這裏有兩個現有的女巫與任務相關(從我的數據庫副本)。

用戶表

CREATE TABLE IF NOT EXISTS `User` (
    `user_id` int(10) unsigned NOT NULL auto_increment, 
    `given_name` varchar(60) default NULL, 
    `surname` varchar(60) default NULL, 
    `address` varchar(255) default NULL, 
    `city_id` int(10) unsigned NOT NULL, 
    `date_of_birth` datetime default NULL, 
    `email` varchar(80) default NULL, 
    PRIMARY KEY (`user_id`), 
    KEY `ix_user_surname` (`surname`), 
    KEY `ix_user_given_name` (`given_name`), 
    KEY `ix_user_name` (`given_name`,`surname`), 
    KEY `ix_user_date_of_birth` (`date_of_birth`), 
    KEY `ix_user_email` (`email`), 
    KEY `ix_user_city_id` (`city_id`) 
) ENGINE=InnoDB 

消息表

CREATE TABLE IF NOT EXISTS `Message` (
    `message_id` int(10) unsigned NOT NULL auto_increment, 
    `owner_id` int(10) unsigned default NULL, 
    `subject` varchar(255) default NULL, 
    `body` text, 
    `posted` datetime default NULL, 
    `is_public` tinyint(4) default '0', 
    PRIMARY KEY (`message_id`), 
    KEY `ix_message_owner_id` (`owner_id`) 
) ENGINE=InnoDB 
+0

以及它的任務。只需要在英文 – Rennos 2012-08-07 11:44:37

+0

嗯...說明是非常具體的簡短的解釋。到目前爲止向我們展示您的表格,並告訴我們您正在努力的步驟,我們會盡力讓您走。 – jeff 2012-08-07 12:11:25

+0

好吧,我真的沒有看到如何區分消息的類型......並且,收件人可以通過user_id指定,在另一個表中女巫也會存儲私人消息,如果我錯了,請糾正我。 – Rennos 2012-08-07 12:33:59

回答

1

確定,所以is_public給你兩個類型之間進行區分的能力(例如is_public = '0' 表示不公開,並且is_public =「1 '意味着公開)。但是現在你有了一個指定收據的新概念,所以yes/no模型不再適用於你有三種類型的b/c。通常在這種情況下,您可以切換到標誌或類型列。

所以也許做一個message_type列是'公共','私人','SPECIFIED'或類似的東西之一。

之後,它聽起來像你至少需要兩個表。用戶必須能夠指定朋友,並且用戶必須能夠指定用戶接收特定的消息。

+0

好的,謝謝,現在它使一點點意義 – Rennos 2012-08-08 08:36:10

相關問題