数据库设计查询

时间:2010-03-18 15:03:27

标签: database database-design

我正在尝试制定一个合理的方法来设计一个数据库,我需要存储各种不断变化的宠物信息。数据类别可以分解为例如行为,疾病等。数据将定期提交与这些类别相关的数据,因此我需要找到一种设计数据库以便有效适应这种情况的好方法。一种简单的方法就是在每个相关表中为每个宠物存储多个记录 - 例如,行为表将存储行为数据,并且只是为每个记录添加时间戳以及该宠物的标识符。查询数据库时,使用时间戳查询带有pet id的一个表是很简单的,可以输出正确的提交历史记录。是否有一种更明智的方法或者这有意义吗?

2 个答案:

答案 0 :(得分:3)

我会使用查找表的组合,强烈使用外键。我认为你的建议非常普遍。例如,在这个数据范围内,让我知道所有报告的特定宠物的疾病看起来像:

Select *
  from table_illness
 where table_illness.pet_id = <value>
   and date between table_illness.start_date and table_illness.finish_date

您可以为任何表格执行此操作。查找表将是例如table_illness.illness_type和illness_types.illness_type之间的链接。您可以在illness_types表中存储有关疾病类型的详细信息。

答案 1 :(得分:2)

在设计数据库时,您应该构建表来模仿现实生活中的对象或概念。所以从这个意义上说,你建议的设计是有道理的。每只宠物应该在宠物餐桌上有自己的记录,不会改变。然后应将更改的信息放入具有宠物ID的相应表格中。你建议的时间戳方法可能就是我要做的 - 除非当然这是针对兽医或其他什么的。然后我会创建一个带日期的约会表,并将疾病或行为与约会联系起来。