2014-09-13 49 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 ;