我正在设置一个新的Web服务,需要一些帮助来组织我的应用程序中的数据。我的应用程序是用PHP编写的,我计划将所有用户数据存储在使用MySQL数据库中。
我将拥有一大堆用户,每个用户都会拥有一大堆与其帐户相关联的数据。这是一个应用笔记,因此,对于每个用户来说,我需要跟踪笔记的数量和每个笔记的内容。
如何构建这个并将其转换为MySQL表?我知道我必须做一些围绕链接(相关)表的事情,但似乎无法确定它。
我有10x1GB数据库。
答案 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 ;