2014-09-13 55 views
1

我正在設置一個新的Web服務,並且需要一些幫助來組織我的應用程序中的數據。我的應用程序是用PHP編寫的,我計劃使用MySQL數據庫存儲所有用戶數據。在MySQL中構造用戶數據

我會有一羣用戶,每個用戶都會有一堆與他們賬戶綁定的數據。這是一個筆記應用程序,因此,對於每個用戶,我都需要跟蹤筆記的數量以及每個筆記的內容。

我該如何解決這個問題並將其翻譯成MySQL表?我知道我必須做一些圍繞鏈接(相關)表格的事情,但似乎無法查明它。

我有10x1GB數據庫。

+0

那麼什麼這是個問題嗎?如果表格是用正確的「關係」創建的,那麼所有內容都將圍繞適用的查詢行進行彙總。 (以及爲什麼有多個數據庫?) – user2864740 2014-09-13 05:08:56

+0

開始。考慮一下有一個「註釋」表,其中包含與單個筆記相關的所有信息。還有一列'user_id'(或類似的東西),它與用戶表中的用戶相關聯。 – Jon 2014-09-13 05:10:06

+0

在線有許多「SQL/RDBMS設計教程」,應該可能讀一個(或幾個)。 – user2864740 2014-09-13 05:10:49

回答

3

有以下表格(你可以選擇你自己的名字);

tbl_users 
int(4)  userid (PRIMARY) 
varchar(128) firstname 
varchar(128) lastname 

tbl_notes 
int(8)  noteid (PRIMARY) 
int(4)  userid 
text   notecontent 

正如你所看到的,userid是(1對多在這種情況下)兩個表之間的關係。

Database normalization維基百科

2

嘗試下列查詢來創建表:

用戶:

CREATE TABLE IF NOT EXISTS `users` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `username` varchar(32) NOT NULL, 
    `password` varchar(255) DEFAULT NULL, 
    `email_address` varchar(96) NOT NULL, 
    `firstname` varchar(32) NOT NULL, 
    `lastname` varchar(32) NOT NULL, 
    `birth_date` datetime DEFAULT NULL, 
    `gender` char(1) DEFAULT NULL, 
    `street` varchar(16) NOT NULL, 
    `address` varchar(64) NOT NULL, 
    `city` varchar(32) NOT NULL, 
    `state` varchar(32) DEFAULT NULL, 
    `country` int(11) NOT NULL DEFAULT '0', 
    `postcode` varchar(10) NOT NULL, 
    `status` int(1) DEFAULT '0', 
    `created` datetime DEFAULT NULL, 
    `updated` datetime DEFAULT NULL 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

注:

CREATE TABLE IF NOT EXISTS `notes` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `userid` int(11) NOT NULL, 
    `title` varchar(255) NOT NULL, 
    `content` text NOT NULL, 
    `date_added` datetime NOT NULL, 
    `date_sent` datetime DEFAULT NULL, 
    `status` int(1) DEFAULT NULL, 
    `locked` int(1) DEFAULT '0', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;