Mysql入门系列:选择MYSQL列的类型
2006-12-31 10:47:37 来源:WEB开发网串类型没有数值列那样的“取值范围”,但它们有长度,需要知道该串可使用的列最大长度。如果串短于2 5 6个字符,可使用CHAR、VARCHAR、TINYTEXT 或TINYBLOB 等类型。如果想要更长的串,可使用TEXT 或BLOB 类型,而CHAR 和VARCHAR 不再是
选项。对于用来表示某个固定值集合的串列,可以考虑使用ENUM 或SET 列类型。它们可能是很好的选项,因为它们在内部是用数来表示的。这两个类型上的运算是数值化的,因此,比其他的串类型效率更高。它们还比其他串类型紧凑、节省空间。在描述必须处理的值的范围时,最好的术语是“总是”和“决不”(如“总是小于10 0 0”或“决不为负”),因为它们能更准确地约束列类型的选择。但在未确证之前,要慎用这两个术语。特别是与其他人谈他们的数据,而他们开始乱用这两个术语时要注意。在有人说“总是”或“决不”时,一定要搞清他们说的确实是这个含义。有时人们说自己的数据总是有某种特定的性质,而其真正的含义是“几乎总是”。
例如,假如您为某些人设计一个表,而他们告诉您,“我们的测试学分总是0 到10 0”。根据这个描述,您选择了TINYINT 类型并使它为UNSIGNED 的,因为值总是非负的。然而,您发现编码录入数据库的人有时用- 1来表示“学生因病缺席”。呀,他们没告诉您这事。可能可以用NULL 来表示-1,但如果不能,必须记录- 1,这样就不能用UNSIGNED 列了(只好用ALTER TABLE 来补救!)。有时关于这些情形的讨论可通过提一些简单的问题来简化,如问:曾经有过例外吗?如果曾经有过例外情况,即使是只有一次,也必须考虑。您会发现,和您讨论数据库设计的人总是认为,如果例外不经常发生,那么就没什么关系。然而在创建数据库时,就不能这样想了。需要提的问题并不是例外出现有多频繁,而是有没有例外?如果有,必须考虑进去。
更多精彩
赞助商链接