为照片设计(简单)关系数据库?

时间:2012-11-04 20:30:31

标签: database database-design relational-database

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

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

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

然后我对我实际上想要通过加入课程实现的目标感到困惑。幻灯片可以包含许多照片,照片可以出现在许多幻灯片中。

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

事实上,再看一遍,我的图表更没意义......幻灯片视图只能包含一个幻灯片,但幻灯片可以是多个幻灯片视图的一部分吗?问题是,如果我一对一地建立这种关系,那不会使SlideshowView变得多余吗?

当我从编程角度思考这个问题时,我只想让用户选择一个包含许多照片的幻灯片,在这种情况下,幻灯片和幻灯片视图有什么区别?我是不是太复杂了?这真的是“扭曲我的甜瓜”!我们将非常感激地收到有关如何处理此事的任何建议。

1 个答案:

答案 0 :(得分:1)

对于多对多的关系,你的左手关系是错误的。一张照片可以出现在许多幻灯片中,但你已经反过来了 - 实际上,你已经用一个不必要的中间表模拟了一对多,这就是为什么你似乎不对的原因。幻灯片放映和幻灯片放映确实与绘制图表的方式非常相似。

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

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