【发布时间】:2014-05-20 10:19:49
【问题描述】:
我想设计一个包含数值范围的数据库
这个数据库是为生产年份设计的
大多数产品都有一个 [year] 的值,例如 2013
但其中一些包含数字范围
例如:1990 - 2010
我想按生产年份进行高级搜索
例如,用户可以搜索 2010 年至 2014 年生产的产品
但是,
我应该如何保存生产年份(正常或序列化)?
或者我应该有两列名称为 year1 , year2 ?
我不会设计这样的东西
注意:我必须用最有效的方式来设计它,因为很多用户都在使用这个搜索
【问题讨论】:
-
两列开始年份和结束年份将是确保数据类型为日期的最佳方法
-
@Sam D 这样如何运行 sql 查询?
SELECT * FROM table_name WHERE year1 and year2 BETWEEN 1994 and 2000这将是错误的,例如,如果我的产品是在 1995 年到 1997 年间生产的,那它就不行了 -
查询将更像:
$startYear = 1994; $endYear = 2000;SELECT * FROM table_name WHERE year1 <= $endYear and year2 >= $startYear这将捕获与 year1 和 year2 值完全重叠的所有可能行。 -
@JonathanKuhn 非常感谢 :)