【发布时间】:2011-02-17 21:00:19
【问题描述】:
我和其他同学在一个小组中设计软件,该软件允许用户上传有关某个区域的历史数据,然后根据其他列信息过滤该数据。每组数据的列信息可以完全不同。例如,我们有一个大型 CSV,其中包含有关 1700 年代后期生活在费城的人们的信息,包括以下列:
职业、寡妇、非洲人、地址、评论
地址是集合中唯一的共同属性。
我认为我们应该为每个数据集创建一个新表,因为我们不知道未来会有哪些列或会有多少列。明天有人可以上传文件,将有关养鸡场的信息,以及类似的列
有鸡配棕色鸡蛋、小麦、地址、苹果
我只知道我自学过的东西,但后来其他同学告诉我,每组新桌子在哲学意义上是脏。唯一的竞争设计是具有多个通用“属性”列的单个表,这些列与元信息/描述属性的另一个表按集合分隔。
我很难看到为每组创建一个新表的缺点,但我对我对 MySQL 的街头教育没有足够的信心来为它提供一个强有力的案例——尤其如此 如果有更好的方法可以做到这一点。我只被告知它是反数据库的(虽然不是这样 - 我的队友很棒,我只是想了解。)
似乎使用单独的表可以让我们选择特定的数据类型(varchar、datetime 等),并在运行实际语句之前将查询限制在相关数据中。 另外,如果我们得到一个包含许多列的数据集,替代解决方案将需要新的通用列,即使以前/未来的集合不再需要它。我(部分)理解他们的推理,并认为它会起作用 - 但我无法看到看似更多工作的好处。
是否有“正确”的方式来做到这一点?
编辑: 过滤最终用于使用 Google 的 Maps API 在地图上绘制点。对地址进行地理编码的代码大部分已经完成。
【问题讨论】:
标签: mysql database-design