2016-08-26 68 views
0

我需要创建输入自己的位置,并得到结果的日期, 的想法是,某些星座只能被看作是可以由用户进行查询观星活动数据的基础上在某些月份的北半球城镇,我想我可以通过举办一个半球场和一个可以观看月球的赛场的表格来连接他们。还有一个可以与事件表链接的半球场地位置表。 我目前刨下面的表格,在MySQL中创建一个表事件

event table (event id, event_name, event_type, event_description,  event_month, hemisphere) 

Location table (local_id, city, country, hemisphere) 

这将需要event_month场举行多个月,这可能还是有完成这个更合适的方法是什么? 我想如果这会工作使用的查询,那么我可以简单地再查询像

SELECT * 
FROM event inner join location 
on event.event.hemispher = location.hemispher 
WHERE city LIKE (city entered) 
AND month LIKE (month entered) 
+0

这些活动是否遵守严格的“月”时间表?或者“开始日期”和“结束日期”更适用?如果你确实想存储“月”,那么在“事件”和“月”之间有一个月表和多对多的关系似乎更合理。 – David

+0

这些事件可能会持续几个月,即某个星座将在几个月内可见,如果我创建了一个月表,该事件表如何引用? –

回答

0

我看到了几个选择...

如果数据可以粒状就足够了,这样你就可以从事件的“开始日期”和“结束日期”获得更多的准确性。事情是这样的:

event 
---------- 
id, 
name, 
type, 
description, 
start_date, 
end_date 
hemisphere 

这将允许你在查询执行日期运算(或在应用程序代码),这可能是稍微复杂一些(但可以很容易地封装的),虽然会产生更准确的结果。

然而,如果数据不粒状和“月”是具体,因为它得到...

2.创建一个“月”表,并将其连接到“事件“表通过多对多的关系。事情是这样的:

event 
---------- 
id, 
name, 
type, 
description, 
hemisphere 

month 
---------- 
id 
name 

event_month 
---------- 
event_id 
month_id 

这分离开来事件本身事件的发生。如果您曾经遇到事件从一个月到下一个月更改的情况,则可以将该数据放入event_month表中。但更重要的是,这允许多个事件连接到多个月。

+0

感谢大卫,是的,我将与合作的事件是可视每年设定个月,例如,如果我有一个可以在一行中可以看出3个月的活动,请问event_month表只是有几个month_id的一个事项标识连接, 那可能吗 ? –

+0

@ConorMackel:这不仅是可能的,这是表存在的原因。您将有一个具有多个event_month记录的事件记录。 – David

+0

好吧,只要我可以让我的头在这附近,然后我会有这个event_month行像这样例如(代表一个事件,可在1月和2月查看)--event_id - 1,month_id - 1然后event_id 1 month_id 2,所以在理论上会有多行具有相同的event_id和多个具有相同month_id的多行,您是否会对此建议的设置有示例查询 –