在MySQL中构建用户数据

时间:2014-09-13 05:03:19

标签: php mysql

我正在设置一个新的Web服务,需要一些帮助来组织我的应用程序中的数据。我的应用程序是用PHP编写的,我计划将所有用户数据存储在使用MySQL数据库中。

我将拥有一大堆用户,每个用户都会拥有一大堆与其帐户相关联的数据。这是一个应用笔记,因此,对于每个用户来说,我需要跟踪笔记的数量和每个笔记的内容。

如何构建这个并将其转换为MySQL表?我知道我必须做一些围绕链接(相关)表的事情,但似乎无法确定它。

我有10x1GB数据库。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 ;