【问题标题】:Storing items and groups of items存储项目和项目组
【发布时间】:2014-06-12 19:36:38
【问题描述】:
假设我正在存储图像。我有一个数据库中的所有图像,具有自动增量 ID、文件名、大小等。现在我希望能够对图像进行分组。例如,我想要“自然”组中的所有自然图片。
我有一个名为“组”的新表。我应该如何将图像放在“自然”组中?以下是我的一些想法:
1. 有一个新表存储图像 id 和组 id。如果组自然有 5 张图片,那么那里将有 5 个条目指向自然。
2. 将所有文件作为数组存储在组行中。例如,我将在组表中有一个列来放置一组文件。
3. 将组存储在图像表中。我会在 images 表中有一个列,在其中设置它所在的组。
哪个是最佳的行动选择?
【问题讨论】:
标签:
database
database-design
database-schema
【解决方案1】:
让我们从关系开始。
- 一张图片可以属于一个或多个组。
- 一个组可以有一个或多个图像。
所以,现在我们创建域表。
Image
-----
Image ID
File name
Image size
...
Group
-----
Group ID
Group name
Group description
...
现在,我们创建联结表
GroupImage
----------
Group ID
Image ID
Group image time stamp
...
主(集群)键是(组 ID,图像 ID)。您还可以在 (Image ID, Group ID) 上定义一个唯一索引。
基本上,您定义了关系,然后您可以定义关系表。
【解决方案2】:
我会创建一个新的组表,其中包含 groupid 和组(例如自然、人等)作为字段。然后在图像表中添加 groupid 作为字段。图像表中的每个图像都被分配了组表中它所属组的 groupid。