Mat*_*oos 3 php mysql types sqldatatypes
我试着寻找这个,因为我觉得这是一个常见的初学者的问题,但我只能找到几乎可以回答它的东西.
我们有一个小型的PHP应用程序,最多由5个人使用(总计,有史以来),可能同时使用2个,因此可扩展性不是问题.
但是,我仍然喜欢以最佳实践方式做事,否则坏习惯会形成永久性的坏习惯,并且会溢出到你写的面对超过5人的代码中.
鉴于这种情况,我的问题是:是否有任何强有力的理由在MySQL中使用除VARCHAR(250+)以外的任何东西来获得不断发展/变化的小型PHP应用程序?如果我选择了INT,但后来需要包含字符,那么当我可以进行未来验证并将其作为VARCHAR开始时,必须返回并更改它将会很烦人.换句话说,选择具有大字符数的VARCHAR以外的任何东西对于小应用程序来说似乎是毫无意义的限制.它是否正确?
感谢阅读和可能的回答!
Ric*_*mes 10
如果你有数字1到12 VARCHAR,并且你需要数字顺序,你得到1,10,11,12,2,3,4,5,6,7,8,9.这可以吗?那么,你可以通过说,在SQL中修复它ORDER BY col+0.你喜欢那个kludge吗?
其中一个主要缺点是您必须在代码中添加一致性检查.对于一个小型的私有数据库,没问题.但对于较大的项目......
使用正确的类型将自动进行大量检查.例如,值中是否有任何错误的字符; 是有效的日期......
作为奖励,在使用正确的类型时很容易添加额外的约束; 年龄小于110岁; 是开始日期小于结束日期; 是索引另一个表中的现有值?
我更喜欢使类型尽可能具体.虽然服务器错误可能很糟糕且难以调试,但它比使数据库不一致更好.