首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组存储在字符串中(数据库专家提出问题)

将数组存储在字符串中(数据库专家提出问题)
EN

Stack Overflow用户
提问于 2009-07-18 07:26:52
回答 3查看 1.1K关注 0票数 2

我有一个有100000种产品的产品表,还有一个有5000条记录的用户表。假设用户可以对这些产品的任何组合给我们反馈。假设他选择比较产品1,3100,200,400,500等等。(他可以给我们寄另一份关于其他产品的反馈)

所以这是我的问题,我只想知道一个专业的数据库设计师会怎么看待这种产品和用户数量很大的情况。存储此收视率的一种方法是一个字符串,如: 1#5 3#4 100#5 .x#y意味着他给y星以x的id作为产品,例如,我可以在我的php脚本中加载这个vote_string并提取它的细节。

因此,评级表可能具有这样的结构: id、user_id、vote_string

另一种方法是将反馈信息存储在此结构中:

选票表: id,user_id,date

vote_details表: vote_id,product_id,==> ( vote_id,products_id)作为主键,vote_id是外键。

(或者可以将这两个表压缩到一个表中,如id、user_id、product_id、投票id、user_id、product_id作为主键)

因此,我想在第二个设计中查询非常容易,但是每次查询都会消耗更多的空间和时间,而且在产品删除的情况下,使用第二个设计更好。你怎么做?

任何想法都是见仁见智的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-18 07:35:34

您几乎从来不想在数据库域中使用连接字符串的方式。这样做只会让查询变得非常痛苦--而且也不会像DB设计的那样处理数据。

你想要你的第二种方法。您需要考虑主键之类的东西,{即同一个人可以为一个产品投票两次吗?}

票数 6
EN

Stack Overflow用户

发布于 2009-07-18 07:41:46

通过将其存储为字符串(如1#5 3#4 100#5 ),您将使以后更难创建报表。您还必须在每次需要使用数据时执行一些字符串操作。对于这样简单的结构,我看不出有什么好处。

我会选择一个表(id、userid、productid、抽签),但我确信两个也可以。

票数 2
EN

Stack Overflow用户

发布于 2009-07-18 08:08:10

伊山

通过连接,您刚刚扼杀了db所具有的强制完整性或使用索引有效搜索某个特定产品的能力。

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

https://stackoverflow.com/questions/1146931

复制
相关文章

相似问题

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