2010-10-30 61 views
1

继承人的情况。我有一个称为映射表协调架构是象下面这样:需要根据多个表格中的记录进行选择

map_coordinates: 
item | item_id | latitude | longitude 

的想法是,这表包含不同项目的坐标列表,可以把它们记,一个公告后,事件等。我希望能够设置它,所以我有一个结果集如下:

item | name of item | latitude | longitude 

考虑到所有事件,分类和注释都在单独的表中。我怎么能够设置这一点,因为我需要显示在谷歌地图上的所有坐标以及元素的名称,即如果其分类 - 广告的标题,事件的标题等,而不必做很多SQL查询。

我的代码,以显示它在地图上 - 我只需要抓住的细节本身。或者我必须在这里重做我的数据库设计?

========================

编辑

其实我在我的数据库中的多个表,如笔记,分类和事件等。关键在于maps_coordinates表中的项目指的是元素的类型,即它是一个音符还是事件,而item_id是该事件的实际ID。我不想在这里使用连接,因为这会涉及到很多表。除此之外,我只需要在标题中获取基本信息以帮助填充地图,因此当我将鼠标悬停在单个标记上时,我不必为了显示标记中元素的基本信息而进行ajax调用。

的其它表都有自己的定义,但他们都有一个相似的标题字段,它是这个标题字段我希望在同一个元组的坐标来显示。或者我应该在这里对表格进行非规范化处理,并为map_coordinates标题中的重复条目?

+0

在对@ Georgi笔记的评论中,您提到了一个包含笔记名称的NOTES表。请编辑您的原始文章以包含所有其他表格的描述 - 否则没有太多的人可以给你的建议。 – 2010-10-30 11:35:42

回答

1

您可以通过创建一个视图来组合每个独立表中的每个常用元素。在你的榜样笔记,分类后,事件等

CREATE VIEW viewCommonElements 
AS 

SELECT 
100  as DataType, 
NoteId as ElementId, 
NoteName as ElementName 
FROM Notes 

UNION 

SELECT 
200    as DataType, 
Classified_Post_Id as ElementId, 
Post_Description as ElementName 
FROM Classified_Posts 

UNION 

SELECT 
300    as DataType, 
EventId   as ElementId, 
EventName   as ElementName 
FROM Events 

只需添加一个新的数据类型必须要包含在您的共同要素的每个表。您现在可以设置一个连接到viewCommonElements视图的查询。

如果稍后创建新元素,只需修改视图并添加一个联合选择块,然后给它一个唯一数据类型。您可以使用DataType来区分不同的公共元素。

我已经多次使用这种方法来协调不相似但共同的数据。

+0

+1作为一个经验法则,我会去建立一个规范化的数据库,但在视图中保留这些类型的需求。您不想通过拥有太多表将您的写入复杂到数据库中。 科德角上面的答案是一个观点的好起点。 – 2010-11-06 04:27:54

+0

@raja - 更多的时候,我们遇到了一个现有的数据库设计工作(不是很好,但工作)。然后,新的要求出现,并要求我们对一个并非真正为此设计的数据库执行奇迹。 – 2010-11-06 11:12:59

0

是的,基本上你的数据库设计不好。试试像这样:

map_coordinates: 
item | item_id | item_type | item_name | latitude | longitude 

并使用item_types的查找表。

+0

实际项目是项目类型例如:一个笔记有一个entery作为项目:note,itemID:笔记的ID ..但我需要一种方法从注释表中获取注释的标题,坐标... – Ali 2010-10-30 09:49:35

0

你说“我们的想法是,该表中包含不同项目的坐标列表,他们可能是一个音符,一个公告后,事件等”。这是否意味着不同物品有不同的表格?如果是这样,一个包含所有查找信息的非规范化表格可能是您最好的选择。如果没有,这只是加入两个表的问题。

+0

作为一个后续行动,正常使用时,非规范化不是一件坏事。如果正确优化,任何具有显着范围的项目都将使用规范化和非规范化的数据结构。 – ajacian81 2010-10-30 11:38:12

+0

是的,它到底是怎么回事 - 针对不同元素的不同表格 - 您能否展示一个模式,以便在此处使用哪种非规格化表格? – Ali 2010-10-31 08:23:28

相关问题