2012-07-05 171 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語句來鏈接兩個表,這比鏈接它們要快。