简单数据库设计问题

一个用户可以上传若干张作品,给每个作品可以制定若干个标签

这种情况下,每个作品的所有标签应该是算作这个作品的一个属性,属性的内容格式应该是:标签A,标签B,标签C

而不是每个标签内容单独保存为一行,否则的话行数就太多了,不现实啊!

这样设计的话 从范式来讲是违反了4NF还是1NF呢?

作者: CainLai   发布时间: 2011-06-15

如果处理成标签A,标签B,标签C为一行,那放在作品表里不就得了!
应该设计个标签表,每个标签一行.
把一个作品的标签都弄到一行里的话,处理起来头大的日子在后头呢.

作者: qianjin036a   发布时间: 2011-06-15

作品表(id,作品id,作品名称,标签)
应该设计个标签表,每个标签一行.
用户表(id,用户id,用户名称,用户作品id)

作者: chuanzhang5687   发布时间: 2011-06-15

那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?

作者: CainLai   发布时间: 2011-06-15

引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

作者: chuanzhang5687   发布时间: 2011-06-15

是练习题吗?要是项目的话,应该会再加几个列吧,方便查询。
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?

作者: chuanzhang5687   发布时间: 2011-06-15

引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

所以说啊,假如网站用户几十万,每个用户上传作品100多张,每张作品最多10个标签,那这标签表的行数…… 那怎么办?一个表里面的行数就夸张了啊

作者: CainLai   发布时间: 2011-06-15

引用 5 楼 chuanzhang5687 的回复:
是练习题吗?要是项目的话,应该会再加几个列吧,方便查询。

引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?

再加几个列 具体是什么意思啊,打个比方?

作者: CainLai   发布时间: 2011-06-15

一个作品一个标签如何,把标签全部显示?要那么多标签干嘛?
引用 6 楼 cainlai 的回复:
引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

所以说啊,假如网站用户几十万,每个用户上传作品100多张,每张作品最多10个标签,那这标签表的行数…… 那怎么办?一个表里面的行数就夸张了啊

作者: chuanzhang5687   发布时间: 2011-06-15

 
  如果可以的话 作品表可以进行分类存放,相应的标签也可以分开对应了。

作者: sekai2011   发布时间: 2011-06-15

引用 8 楼 chuanzhang5687 的回复:
一个作品一个标签如何,把标签全部显示?要那么多标签干嘛?

引用 6 楼 cainlai 的回复:
引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

所以说啊,假如网站用户几十万,每个用户上传作品100多张,每张作品最多10个标签,那……


实际需求不是这样的啊,具体是让用户上传自己的图片设计作品,每个作品肯定有若干个标签了,比如颜色,行业,主题内容,制作软件什么的,而且还要考虑到以后标签的内容还可能会有拓展啊

作者: CainLai   发布时间: 2011-06-15

我能想出的就这么多了,等待高手吧!
引用 10 楼 cainlai 的回复:
引用 8 楼 chuanzhang5687 的回复:
一个作品一个标签如何,把标签全部显示?要那么多标签干嘛?

引用 6 楼 cainlai 的回复:
引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

所以说啊,假如网站用户几十万……

作者: chuanzhang5687   发布时间: 2011-06-15

如果是要实现理论上的这种数据量的话 分表是一种办法 可以降低数据的数量级
  例如标签表 多少个标签分多少张表 颜色表,行业表,主题内容表,制作软件表

  或者你把一张作品的标签分类存成一个xml字段,一个作品对应标签表一条记录这样子

作者: sekai2011   发布时间: 2011-06-15

引用 12 楼 sekai2011 的回复:
如果是要实现理论上的这种数据量的话 分表是一种办法 可以降低数据的数量级
例如标签表 多少个标签分多少张表 颜色表,行业表,主题内容表,制作软件表

或者你把一张作品的标签分类存成一个xml字段,一个作品对应标签表一条记录这样子

最初的想法,所有标签放一个属性里面:标签A,标签B,标签C
这样的形式,处理起来麻烦的情况 会是哪些呢?
标签唯一的作用就是用来被搜索的吧,那搜索的时候直接value like '%搜索关键字%' 不就完了,没什么麻烦的啊

还是更深更具体的问题我没有考虑全面?

作者: CainLai   发布时间: 2011-06-15

引用 10 楼 cainlai 的回复:
引用 8 楼 chuanzhang5687 的回复:
一个作品一个标签如何,把标签全部显示?要那么多标签干嘛?

引用 6 楼 cainlai 的回复:
引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
应该会

所以说啊,假如网站用户几十万……

既然如此,那必须把每个标签作为一行,可以考虑类似单据的主从表的格式,
主表放这个作品的总体属性,明细表存放单据明细标签的数据

作者: cd731107   发布时间: 2011-06-15

引用 14 楼 cd731107 的回复:
引用 10 楼 cainlai 的回复:
引用 8 楼 chuanzhang5687 的回复:
一个作品一个标签如何,把标签全部显示?要那么多标签干嘛?

引用 6 楼 cainlai 的回复:
引用 4 楼 chuanzhang5687 的回复:
引用 3 楼 cainlai 的回复:
那如果一个用户可以传上百张作品,然后给每张作品可以制定最多10个标签的话,那会不会行数太多了?
……

具体什么意思我没看太懂,我觉得现在问题就是在说这个明细表的行数可能会很多啊

作者: CainLai   发布时间: 2011-06-15