2011-12-12 87 views
0

我不得不拼成一个酒店连锁访问数据库作为assingment。 我的困境是,这个任务需要多层次的进步,因为你进步了层次。超级嵌套表

有各19家不同数量的不同楼层的酒店每 楼都有不同的领域 每一个领域都遂将 最后每个元素都有与它相关联的项目中它的元素。

想法是你有一个窗体上的多个组合框,您可以选择在下一个cb中给出相应楼层的酒店。选择一个地板并列出给定酒店的该地板的相关区域,直到最后的cb给出这些物品。

我很挣扎,因为表似乎都需要很多关系明智,所以不能看到如何筑巢,或者如果这是最好的选择。

请帮助

+1

待办事项你有任何鳕鱼我们可以看看吗? – bvd

+0

如果你准确解释了你遇到的问题,可能会有所帮助。例如,也许你在对组合框中的变化做出反应时遇到麻烦?或者它可能正在编写一个SQL语句,其中包含多个表或加入多个条件等。 –

+0

我无法知道要将哪些信息放入表中,以便它们可以链接。酒店1拥有1至5层,酒店2拥有1至5层,酒店3拥有1至6层。如果这就是我会很好,但我需要指定每个酒店在每个级别上吃的不同区域。例如,酒店1在1级上有一家餐厅,但其他酒店没有。因此,我需要能够选择酒店1,然后选择1级,然后可以选择餐厅,而如果选择酒店2或3,则不应显示1级餐厅 – Batchy

回答

0

我看不出你有多对多的关系都没有。酒店桌子涉及地板桌子涉及地区桌子涉及元素桌子涉及物品表格。但是,如果你想模拟许多许多关系使用链接表。

所以酒店餐桌上的hotelid作为PK和其他任何你需要的一般关于酒店的indfo。 floorid与floorid和任何其他地板相关的信息。仅包含hotelid和floorid的HotelFloor表。

但是,如果楼层,面积等结构不是唯一的特定酒店,那么您只需要这种结构。

0

我认为你可能会过时地这样做。对我而言,所有这些关系都是一对多的关系。

我认为你的困惑的一部分是,你正在考虑一个酒店楼层只是根据其属性之一,即水平。因此,您认为A酒店有1层楼,B酒店有1层楼层,因此楼层和酒店之间存在多对多关系。如果楼层的唯一财产是其级别,这将是真实的。但正如您已经指出的,每家酒店的每层都有自己的一套区域。因此,每家酒店的1层楼不能用单个记录表示。

没有考虑楼层的层次,而是将每层作为自己的实体。如果你这样做,你意识到一个酒店可能有许多楼层实体,但每个楼层实体可能只属于一个酒店。

一个真实世界的例子,使这个晶莹剔透:

  • 你走进在旅馆A的电梯按3
  • 你的朋友走入酒店B中的电梯并按下3.

如果多对多模型属实,您和您的朋友在您离开电梯时会并排站立。显然情况并非如此,所以一对多的关系是合理的。

出于同样的原因,您示例中的所有关系都是一对多关系。它们可以模拟像这样:

酒店:(PK)HotelID等
地面:(PK)FloorID,(FK)HotelID,液位等
领域:(PK )areaID表示,(FK)FloorID等
元素:(PK)ElementID,(FK)areaID表示,等
项目:(PK)项ID,(FK)ElementID等

+0

我不相信“元素”和“商品” '不是m:n;其他一些关系可能是0..1:m(“零或一对多”)。我喜欢你的真实世界的例子:) – onedaywhen

+0

好点。不知道“元素”和“物品”实际上代表什么,很难肯定地说。 – mwolfe02