2012-11-04 25 views
1

我相信我是一本关于数据库设计(Fred Rolland的数据库本质)的好书,我也读过这个网站; http://goo.gl/TxDq4。这两种资源都很棒,但它们使用非常结构化的例子,涉及客户和公司的互动。为照片设计(简单)关系数据库?

我想创建一个数据库,其中将包含对数百张照片的引用。作为我正在研究的项目的一部分,我希望允许用户创建幻灯片。如果我理解正确的理论,这代表了“多对多”的关系,我需要打破“连接表”。

我无法得到我的头是什么这个连接表应该看起来像什么或它实际执行的功能。我的感觉是,我尝试创建的加入课程比拥有“订单行”或类似内容更加模糊。我的第一份草稿,加入类,看起来像这样:http://img28.imageshack.us/img28/2756/photodb2.png

然后我只是困惑我实际上试图实现与加入类。幻灯片可以包含许多照片,并且照片可以出现在许多幻灯片中。

通过加入类SlideshowView,我想我创建了一个幻灯片的“实例”,其中该特定的幻灯片只能包含任何一张照片的一个实例。在这种情况下,我对SlideshowView和幻灯片放映之间的关系感到困惑!

事实上,再看一遍,我的图表更没有意义...... SlideshowView只能包含一个幻灯片,但幻灯片可以是多个SlideshowView的一部分?麻烦的是,如果我一对一地建立关系,是不是会让SlideshowView变得多余?

当我从编程的角度思考这个问题时,我只是要求用户选择一个包含许多照片的幻灯片,在这种情况下,Slideshow和SlideshowView有什么不同?我是否过分复杂化了这个?这真的是“扭曲我的瓜”!任何有关如何继续进行这方面的建议都会受到感谢。

回答

1

对于多对多的关系,您的左手关系是错误的方式。一张照片可以出现在许多幻灯片中,但是您已经用相反的方式绘制了这张照片 - 实际上,您已经用不必要的中间表对一对多进行建模,这就是为什么它看起来错了。 Slideshow和SlideshowView确实与您绘制图表的方式完全相同。

用户永远不会“看到”中间的链接表。 (S)他会为幻灯片选择多张照片;对于其中的每一个,一行将进入链接表,将这些照片链接到新的幻灯片,而不排除它们也出现在其他幻灯片中。对于最终用户来说,只有照片和幻灯片才是可见的。我会亲自调用链接表SlideshowPhotograph。以下是三张照片和两张幻灯片的ID值,显示两张幻灯片中出现的照片109。

Photograph | Link      | Slideshow 
ID   | PhotographID SlideshowID | ID 
107   | 107   23    | 23 
108   | 109   23    | 24 
109   | 109   24    | 
+0

当然!答案很简单,我现在感到很尴尬的问这个问题!非常感谢您提供清晰简洁的解释。 –