首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的mysql表设计选择

复杂的mysql表设计选择
EN

Stack Overflow用户
提问于 2013-11-12 18:50:28
回答 2查看 101关注 0票数 1

我正在设计一个相当复杂的数据库,并且在一个方面很难做出选择。会员可以上传视频,照片和故事,一些免费,一些其他成员将支付。这些照片需要能够用一个名字组合成一组。

我已经决定在成员数据库中增加代表“免费照片集的数量”、“付费照片集的数量”的栏;视频和故事也是如此。

我正在苦苦挣扎的决定是存储集合名称、每组中的数字以及集合的类型。

请记住,如果一组照片中有6,我将需要显示相关的6。同样的视频等。

文件将与编码的标题保存-免费照片,用户标识2,集3,图片4将保存为FP020304.jpg (纯一个例子),这是我将如何知道哪些要回忆。

选择1:为每个成员增加一张表,列如下(代表):

示例条目是:

代码语言:javascript
复制
SET-ID | SetType    | SetName  | NumberInSet    
1      | freephotos | holiday  | 10
2      | paidphotos | birthday | 6

选择2:相同,但仅为所有成员添加"MemberID“的一个表

选择3:每种类型一张桌子,每个成员一张桌子,一张免费照片的桌子,另一张付费的,等等。

选择4:与3相同,但添加了成员id列。(仅6张表格)

考虑到目前为止:选择3似乎最容易做查询,但我不确定我是否喜欢为每个新成员添加6个表的想法。选择4似乎是最符合逻辑的,因为只有6个表,但提取相关信息将更加棘手。选择1和2会减少每个成员的新表,但也似乎更难获得结果。

我不反对更棘手的解决方案,但我只是无法决定什么是最好的方案-实际上,我相信还有其他的方式,我还没有想到。

如有建议,将不胜感激。

(nb -第一篇文章-我希望这是可读的)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-12 19:13:53

选择3是可怕的,现在抹去它。我还建议不要将'number in set‘作为数据库中的一个值。每次插入新照片时,都必须更新相应的编号集值。解决方案不是在数据库中存储聚合值,而是使用脚本中的聚合返回此计数。

我将使用一个“成员”或“用户”表,一个将照片/视频集与您的用户相关联的“set”表(这里包括免费/付费栏)。然后创建一个照片/文件表,将照片与“set”表相关联。每组照片/照片的数量可由

代码语言:javascript
复制
 select set_id , count(1) from mediatable group by set_id

这将在设定的值中给出这个数字,您将不必担心像这样更新“count”列。

票数 1
EN

Stack Overflow用户

发布于 2013-11-12 19:08:57

不要为每个用户创建新的表,您只需要一个。此外,我不会用编码的标题命名文件,这使得机器人或其他用户很容易在知道方案的情况下逐步遍历文件,而只是保存文件的路径,然后使用随机生成的名称或散列。记住设置Foreign KeysIndexes以加速JOINS和任何搜索。

SetTypeTBL - SetTypeID, SetTypeName

SetTBL - SetID, SetTypeID, MemberID, SetName

MediaTypeTBL - MediaTypeID, MediaTypeName

MediaTBL - MediaID, MediaTypeID, SetID, MemberID, MediaName, MediaFilePath

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19937492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档