现在想做一个小项目,下面是其中一个表需要建立的字段。但是有些拿不准各个字段应该用什么类型的,长度多少为好?有经验的麻烦大家给点意见。id;//自动编号(主要是长度设多少为好)
username;//用户名
password;//密码
mail;//邮箱
sex;//性别   (整型存01还是varchar存男女  好些)
birthday;//生日    Date型还是varchar
city;//城市        想做省市联动,需要再设置一个“省”的字段吗
favor;//爱好       
question;//密码提示问题     (整型存0123还是varchar存游泳,唱歌  好些)
String answer;//密码提示问题答案
Date registDate;//注册时间    Date型?
CREATE TABLE `person` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `sex` varchar(255) NOT NULL,
  `birthday` varchar(255) NOT NULL,
  `mail` varchar(255) NOT NULL,
  `favor` varchar(255) NOT NULL,
  `city` varchar(255) NOT NULL,
  `question` varchar(255) NOT NULL,
  `answer` varchar(255) NOT NULL,
  `registDate` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk

解决方案 »

  1.   

    `sex` varchar(255)要这么长干吗
    `birthday` datetime
      

  2.   


    CREATE TABLE `person` (
      `id` int(11) NOT NULL auto_increment,
      `username` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `sex` ENUM('男','女'),
      `birthday` datetime NOT NULL,
      `mail` varchar(255) NOT NULL,
      `favor` varchar(255) NOT NULL,
      `city` int NOT NULL,
      `question` varchar(255) NOT NULL,
      `answer` varchar(255) NOT NULL,
      `registDate` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk
      

  3.   

    username;//用户名
    password;//密码
    mail;//邮箱
    sex;//性别   (整型存01还是varchar存男女  好些)   -- 都可以,MYSQL中你可以有三种选择。 INT, CHAR,ENUM 各有优缺点(不需要用VARCHAR)
    birthday;//生日    Date型还是varchar   -- DATE
    city;//城市        想做省市联动,需要再设置一个“省”的字段吗  -- 一般是另外设计一张表存储省市的代码。在中国市的名字会有重复的。不同的省会有相同的市名。
    favor;//爱好      
    question;//密码提示问题     (整型存0123还是varchar存游泳,唱歌  好些) -- INT
    String answer;//密码提示问题答案
    Date registDate;//注册时间    Date型?        -- DATE