对于相册,我看到大多数人使用3个表:
相册照片PhtoAlbums。
然而,如果我看一个像facebook这样的网站,这个模式不会工作(如果我理解正确的话),因为我可能在我的个人资料相册和一般相册中有一张照片,但我可以给同一张照片不同的描述,不同的标签,等等。所以我的猜测是,每当用户创建一张照片的副本时,它都会被视为一张全新的照片,因此我们只需要两个表: Albums和Photos (它有FK到相册)
其他选项是拥有只有1列的照片表(photo_id),并将所有照片详细信息放在PhotoAlbum表中,这样我就可以为每个相册提供唯一的属性。
我在这个设计中是有效的吗?
发布于 2011-01-07 06:35:43
Photo <- Photo_Album -> Album。是关系,所以将各种有效负载(描述、标签等)放在Photo_Album表(以及照片本身)上,这样当照片在数据库中时,相册中的照片的每个实例也会被标记/描述。
然后,您可以巧妙地处理如何合并/显示这些数据给用户。
另外,别忘了Facebook不是一个关系模型。由于可伸缩性的原因,它是一个“NoSQL”的-style数据库,其工作方式非常不同。你可以在谷歌上搜索"NOSQL“来了解更多关于这个思路的信息。
发布于 2011-01-07 06:55:08
在关系数据库中,照片/照片_相册/相册是存储数据的常规方式。原则是您只存储一张照片(或单个实体)一次,但使用其他机制来提供所需的最终用户功能。
实际上,您不需要在照片的数据库中创建一个“副本”来对其应用不同的元数据。您可以将元数据(不同的标记、描述等)放在与包含该元数据的Photo_Album表相关的表中,而不是将其保存在Photo表中。这样,对于照片和相册的每个组合,您将拥有不同的元数据。
通过使用这三个(从技术上讲是四个)表相关的方法,您可以获得关于一张照片或一张相册的元数据,或者这两者的组合。
这一切都归结于您的最终状态和潜在的未来需求,当然,此设计模式的要点是将您的数据库视为一个单独的、经济的和优化的数据存储系统。然后使用SQL/TSQL和许多其他“中间”机制为GUI提供接口。
发布于 2014-08-02 22:38:30
在关系数据库中,照片/照片_相册/相册是存储数据的常规方式。原则是您只存储一张照片(或单个实体)一次,但使用其他机制来提供所需的最终用户功能。
实际上,您不需要在照片的数据库中创建一个“副本”来对其应用不同的元数据。您可以将元数据(不同的标记、描述等)放在与包含该元数据的Photo_Album表相关的表中,而不是将其保存在Photo表中。这样,对于照片和相册的每个组合,您将拥有不同的元数据。
通过使用这三个(从技术上讲是四个)表相关的方法,您可以获得关于一张照片或一张相册的元数据,或者这两者的组合。
这一切都归结于您的最终状态和潜在的未来需求,当然,此设计模式的要点是将您的数据库视为一个单独的、经济的和优化的数据存储系统。然后你可以使用SQL/TSQL和许多其他的“中间”机制来为你的GUI.You提供接口,可以在http://www.albumkart.com创建最好的相册设计和制作服务。
https://stackoverflow.com/questions/4620675
复制相似问题