Mysql入门系列:选择MYSQL列的类型
2006-12-31 10:47:37 来源:WEB开发网如果需要存储日期信息,需要包括时间吗?即,它们永远都需要包括时间吗? MySQL不提供具有可选时间部分的日期类型: DATE 可不包含时间,而DATETIME 必须包含时间。如果时间确实是可选的,那么可用一个DATE 列记录日期,一个TIME 列记录时间。允许TIME 列为NULL 并解释为“无时间”:
在用基于日期信息的主-细目关系连接两个表时,决定是否需要时间值特别重要。假如您正在进行一项研究,包括一些对进入您的办公室的人进行测试的题目。在一个标准的初步测试集之后,您可能会在同一天进行几个额外的测试,测试的选择视初步测试结果而定。您可能会利用一个主-细目关系来表示这些信息,其中题目的标识信息和标准的初步测试存储在一个主记录中,而其他测试保存为辅助细目表的行。然后基于题目ID 与进行测试的日期将这两个表连接到一起。
在这种情况下必须回答的问题是,是否可以只用日期,或者是否需要既使用日期又使用时间。这个问题依赖于一个题目是否可以在同一天投入测试过程不止一次。如果是这样,那么应该记录时间(比方说,记录测试过程开始的时间),或者用DATETIME 列,或者分别用
DATE 和TIME 列(两者都必须填写)。如果一个题目一天测试了两次,没有时间值就不能将该题目的细目记录与适当的主记录进行关联。
我曾经听过有人声称“我不需要时间;我从不在同一天把一道题测试两次”。有时他们是对的,但是我也看到过这些人后来在录入同一天测试多次的题目的数据后,反过来考虑怎样防止细目记录与错误的主记录相混。很抱歉,这时已经太迟了!有时可以在表中增加TIME 列来处理这个问题,不幸的是,除非有某些独立的数据源,如原书面记录,否则很难整理现有记录。此外,没办法消除细目记录的歧义,以便将它们关联到合适的主记录上。即使有独立的信息源,这样做也是非常乱的,很可能使已经编写来利用表的应用程序出问题。最好是向表的拥有者说明问题并保证在创建他们的表之前进行很好的描述。
更多精彩
赞助商链接