2012-07-05 218 views
0

我使用的设计进行验证,我已经添加了一些用户的个人领域这我不知道是正确的方式来继续发展我的应用程序是正确的数据库设计...Ruby on Rails的数据库设计

users CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`email` varchar(255) NOT NULL DEFAULT '', 
`encrypted_password` varchar(255) NOT NULL DEFAULT '', 
`reset_password_token` varchar(255) DEFAULT NULL, 
`reset_password_sent_at` datetime DEFAULT NULL, 
`remember_created_at` datetime DEFAULT NULL, 
`sign_in_count` int(11) DEFAULT '0', 
`current_sign_in_at` datetime DEFAULT NULL, 
`last_sign_in_at` datetime DEFAULT NULL, 
`current_sign_in_ip` varchar(255) DEFAULT NULL, 
`last_sign_in_ip` varchar(255) DEFAULT NULL, 
`created_at` datetime NOT NULL, 
`updated_at` datetime NOT NULL, 
`username` varchar(255) NOT NULL DEFAULT '', 
`twitter` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
`facebook` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
`location` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
`website` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
`bio` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `index_users_on_email` (`email`), 
UNIQUE KEY `username` (`username`), 
UNIQUE KEY `index_users_on_reset_password_token` (`reset_password_token`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 

我应该创建另一个表,并存储该用户的个人领域如

  • 叽叽喳喳
  • 位置
  • 网站
  • 生物

或其罚款,以保持他们,因为他们目前?

回答

1

我会将这些属性抽象到不同的表中。也许创建一个'配置文件'表,你可以保存这样的东西。然后,用户将属于配置文件,并且配置文件has_one用户。

+0

这是我第一次想到的,以及我如何使用php&mysql来完成它,所以我认为这是要走的路!谢谢。 – fxuser

0

您应该检查database normalization。 location,website,name和bio是可以显示冗余数据的列,但是我会冒非正规化的后果,所以您不需要JOIN语句来链接两个表,这比链接它们要快。