我可以添加一个或计数来从DB获取预订号码吗?

时间:2010-10-22 07:59:34

标签: php mysql

我有以下数据库用于健身俱乐部日历和预订系统。我得到了与omc_date,omc_week等相关的omc_courses详细信息。

现在我还要显示每个课程的预订总数。

我认为有两种方法可以做到,我想知道你的意见哪种方式更好,或者有更好的方法可以做到。

我的方法之一。

每当会员预订或取消预订时,在omc_courses.booked中添加或删除一个。

我的方法二。

按course_id计算omc_bookings,groups_by course_id并将此数字添加到omc_courses.booked。

提前致谢。

CREATE TABLE IF NOT EXISTS `omc_bookings` (
  `booking_id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `course_id` int(11) NOT NULL,
  `date_enroll` date NOT NULL,
  PRIMARY KEY (`booking_id`)
) .... ;

    CREATE TABLE IF NOT EXISTS `omc_courses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date_id` int(10) DEFAULT NULL,
  `time` time NOT NULL,
  `course_name` varchar(255) DEFAULT NULL,
  `trainer_id` int(11) DEFAULT NULL,
  `desc` varchar(255) DEFAULT NULL,
  `capacity` int(11) DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
  `order` int(11) DEFAULT NULL,
  `booked` int(5) DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ..... ;

  there are more like omc_date, omc_week etc.

5 个答案:

答案 0 :(得分:0)

我会做两个,因为它允许一个人作为另一个的验证 - 如果两个不匹配那么你在某个地方有一个bug。但如果你只有一个,你可能永远都不会发现这个错误。

答案 1 :(得分:0)

我会使用计数 - 为什么存储可以如此简单计算的值? (并且使用存储的值,您将面临危险,忘记在任何地方增加/减少您的数字,以便存储的数字根本不正确)

答案 2 :(得分:0)

我不会将数据存储在我可以通过查询获得的数据库中,除非在非常具体的情况下。在您的情况下,您无需在任何地方存储预订号码。只需在需要时运行COUNT查询。

答案 3 :(得分:0)

如果您可以在查询中获取信息,那么不要将其作为另一个表中的值添加,这会使您的数据库结构成为真正的关系数据库。

您当前的设置很好,您可以在这里找到课程表和预订表。因此,只需使用COUNT子句中的课程ID和时间进行WHERE查询即可过滤。

答案 4 :(得分:0)

自己回答:你是否需要数据库中的信息,永久性地,数据库运行的每一秒(然后将其存储在数据库中),或者只在一(或两个)特定情况下需要它(然后执行依靠你的结果)?