MySQL中具有两个以上维度的表

时间:2015-11-22 22:26:16

标签: php mysql arrays

我是初级到中级的程序员,我正在尝试为某人重新设计一个MySQL数据库。它具有以下属性:

  • 显示区域内酒精销售的开始和结束时间
  • 时间因星期几而异
  • 啤酒和葡萄酒的时间因所有类型的酒精(酒也是如此)而异。
  • 时间因场外(即:酒类商店)与室内(即:酒吧)而异。

我试过研究这个但是找不到明确的答案。目前他是一张巨大的桌子。示例列是:

  • offwedbwstart(场外,周三,仅限啤酒和葡萄酒,开始时间)
  • onfriallend(内部,周五,所有酒类,结束时间)

我想知道是否有更好的方法来使用数组作为条目或使用多个表来组织此表。有没有人有任何想法?或者这只是一个偏好问题?我也担心使用多个表的效率。

谢谢!

对评论的回复(更详细的解释):

这是原始表格的字段,我负责修改。这是一张大桌子:

id BIGINT(9)NOT NULL, - 主键
state TINYTEXT NULL, -    完整州名称county TINYTEXT NULL, - 全县名称
   place TINYTEXT空, - 完整地方名称placetype TINYINT(2)    NULL DEFAULT NULL, - 放置县,城市等。format    TINYINT(1)NULL DEFAULT NULL, - 不确定
multname TINYINT(1)    NULL DEFAULT NULL, - 这个地方有多个名字
   multcounty TINYINT(1)NULL DEFAULT NULL, - 地点是否交叉    多个县
population INT(8)NULL DEFAULT NULL, -    人口
offsunallstart SMALLINT(4)NULL DEFAULT NULL, -    Off-Premsies(便利店,酒类商店等),周日,全部    酒类(包括酒类),开始时间(军事时间)    整数,小时和分钟过午夜)
offsunallend    SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Sunday,所有类型的    酒精,结束时间(军事时间整数,小时和分钟过去    午夜)
offsunbwstart SMALLINT(4)NULL DEFAULT NULL, -    场外,周日,仅限啤酒和葡萄酒,开始时间为offsunbwend    SMALLINT(4)NULL DEFAULT NULL, - 场外,周日,啤酒和葡萄酒    only,结束时间
offmonallstart SMALLINT(4)NULL DEFAULT NULL, -    周一,场外,所有类型的酒精,开始时间
   offmonallend SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Monday,    所有类型的酒精,结束时间
offmonbwstart SMALLINT(4)NULL    DEFAULT NULL, - Off-Premises,Monday,Beer and Wine only,Start    时间
offmonbwend SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,    周一,仅限啤酒和葡萄酒,结束时间为offtueallstart SMALLINT(4)    NULL DEFAULT NULL, - Off-Premises,Tuesday,所有类型的酒精,    开始时间
offtueallend SMALLINT(4)NULL DEFAULT NULL, -    场外,周二,所有类型的酒精,结束时间
   offtuebwstart SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,    星期二,仅啤酒和葡萄酒,开始时间
offtuebwend SMALLINT(4)    NULL DEFAULT NULL, - Off-Premises,Tuesday,Beer and Wine only,End    时间
offwedallstart SMALLINT(4)NULL DEFAULT NULL, -    场外,周三,所有类型的酒精,开始时间
   offwedallend SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,    星期三,所有类型的酒精,结束时间
offwedbwstart    SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Wednesday,Beer and    仅限葡萄酒,开始时间
offwedbwend SMALLINT(4)NULL DEFAULT NULL,     - 场外,周三,仅限啤酒和葡萄酒,结束时间为offthuallstart SMALLINT(4)NULL DEFAULT NULL, - 场外,    星期四,所有类型的酒精,开始时间
offthuallend    SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Thursday,All types of    酒精,结束时间
offthubwstart SMALLINT(4)NULL DEFAULT NULL,     - 场外,周四,仅限啤酒和葡萄酒,开始时间为offthubwend SMALLINT(4)NULL默认为空, - 场外,    周四,仅限啤酒和葡萄酒,结束时间为offfriallstart    SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Friday,所有类型的    酒精,开始时间
offfriallend SMALLINT(4)NULL DEFAULT NULL,     - 场外,周五,所有类型的酒精,结束时间
offfribwstart SMALLINT(4)NULL DEFAULT NULL, - 场外,    周五,仅限啤酒和葡萄酒,开始时间
offfribwend SMALLINT(4)    NULL DEFAULT NULL, - Off-Premises,Friday,Beer and Wine only,End    时间
offsatallstart SMALLINT(4)NULL DEFAULT NULL, -    场外,周六,所有类型的酒精,开始时间
   offsatallend SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,    星期六,所有类型的酒精,结束时间
offsatbwstart    SMALLINT(4)NULL DEFAULT NULL, - Off-Premises,Saturday,Beer和    仅限葡萄酒,开始时间
offsatbwend SMALLINT(4)NULL DEFAULT NULL,     - 场外,周六,仅限啤酒和葡萄酒,结束时间为onsunallstart SMALLINT(4)NULL DEFAULT NULL, - On-Premsies(酒吧,    周日,所有类型的酒精,开始时间    onsunallend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Sunday,    所有类型的酒精,结束时间
onsunbwstart SMALLINT(4)NULL    DEFAULT NULL, - On-Premsies,Sunday,Beer and Wine only,Start    时间
onsunbwend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    周日,仅限啤酒和葡萄酒,结束时间为onmonallstart SMALLINT(4)    NULL DEFAULT NULL, - On-Premsies,Monday,所有类型的酒精,开始    时间
onmonallend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    星期一,所有类型的酒精,结束时间
onmonbwstart SMALLINT(4)    NULL DEFAULT NULL, - On-Premsies,Monday,Beer and Wine only,Start    时间
onmonbwend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    周一,仅限啤酒和葡萄酒,结束时间为ontueallstart SMALLINT(4)    NULL DEFAULT NULL, - On-Premsies,Tuesday,所有类型的酒精,    开始时间
ontueallend SMALLINT(4)NULL DEFAULT NULL, -    On-Premsies,星期二,所有类型的酒精,结束时间
   ontuebwstart SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Tuesday,    仅啤酒和葡萄酒,开始时间
ontuebwend SMALLINT(4)NULL    DEFAULT NULL, - On-Premsies,Tuesday,Beer and Wine only,End Time
   onwedallstart SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    星期三,所有类型的酒精,开始时间
onwedallend    SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Wednesday,所有类型的    酒精,结束时间
onwedbwstart SMALLINT(4)NULL DEFAULT NULL, -    On-Premsies,周三,仅啤酒和葡萄酒,开始时间
   onwedbwend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Wednesday,    仅啤酒和葡萄酒,结束时间
onthuallstart SMALLINT(4)NULL    DEFAULT NULL, - On-Premsies,星期四,所有类型的酒精,开始    时间
onthuallend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    星期四,所有类型的酒精,结束时间
onthubwstart    SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Thursday,Beer and Wine    only,Start Time
onthubwend SMALLINT(4)NULL DEFAULT NULL, -    On-Premsies,周四,仅限啤酒和葡萄酒,结束时间
   onfriallstart SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Friday,    所有类型的酒精,开始时间为onfriallend SMALLINT(4)NULL    DEFAULT NULL, - On-Premsies,Friday,所有类型的酒精,结束    时间
onfribwstart SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    周五,仅限啤酒和葡萄酒,开始时间
onfribwend SMALLINT(4)    NULL DEFAULT NULL, - On-Premsies,Friday,Beer and Wine only,End    时间
onsatallstart SMALLINT(4)NULL DEFAULT NULL, -    On-Premsies,星期六,所有类型的酒精,开始时间
   onsatallend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,Saturday,    所有类型的酒精,结束时间
onsatbwstart SMALLINT(4)NULL    DEFAULT NULL, - On-Premsies,Saturday,Beer and Wine only,Start    时间
onsatbwend SMALLINT(4)NULL DEFAULT NULL, - On-Premsies,    周六,仅限啤酒和葡萄酒,结束时间为offexceptions TEXT NULL,     - 作为备注的异地异常
onexceptions TEXT NULL, - 内部异常作为非source TEXT NULL, - 哪里做了    此信息来自?
sourcelink TINYTEXT NULL, - Link    for information information timezone TINYTEXT NULL, - TimeZone(EST,for    例子)
notes TEXT NULL - 其他杂项注释

正如您所看到的,这是一种数据噩梦。我一直在阅读如何更好地组织这个问题,并且出现的一些问题正在跨越午夜进行销售,并且还存在另一个问题,即一周中的多天具有相同的开始和结束时间,我认为我可以创建一个只有字段的表:

  • 开始日(工作日,整数表示)
  • 结束日(工作日,整数表示)
  • 开始时间(当天早晨午夜时间,整数表示)
  • 结束时间(当天早晨午夜时间,整数表示)

请随意为架构提出任何建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用多个表是使用关系数据库的主要优势之一。否则,请继续使用电子表格程序。 :-0

我在该数据库结构中看到的一个缺陷是,例如,查找星期四的信息需要知道四个字段的特定字段名称。最好是字段名称是通用的 - 在它们中没有星期几 - 并且为一周中的某一天添加​​一个字段。这减少了几乎七倍的字段数:28个字段减少到5个。

可能会对地理区域进行一些进一步的数据规范化,但如果不了解更多有关如何使用的信息,则很难知道。如果与字段名称有很多接口,那么您已经有一堆工作只是为了减少它在一周中的某一天。尝试修改模式只是为了那么多,你可能已经足够了解是否需要做更多的工作,或者它是否会比它的价值更多。