繁体   English   中英

SQL不同的表或存储为同一表中的文本

[英]SQL different table or store as text in same table

我有一个两难境地,我似乎无法平息。

在页面上,我有一个对象列表。 这些对象中的每一个都是滑块-像aribnb- https: //www.airbnb.com/s/London--United-Kingdom ? source = ds

我在想我在数据库中存储有关该对象的信息(除幻灯片以外还有其他信息),将所有幻灯片的URL存储为文本块是最简单的。

URL       | other_field
-----------------------
url1,url2 | other stuff 

然后通过将它们转换为数组等从前端或后端从那里进行处理。

第二种方法是创建一个单独的表,在其中将每个URL和该URL所属的对象的ID存储在单独的行中

URL  | obj_ID
-------------
url1 | id1
url2 | id1
url3 | id2
.............

我会做一个group_concat( distinct X) ,它将以文本块的形式返回给我。 然后,我将它们拆分成相同的内容。

长话短说,我将它们存储为初始表中的字段还是单独的表中的每个字段? 两种方法的优缺点是什么? 在我看来,将它们作为文本放在同一个表中似乎比较容易,但是我对此没有经验,所以我需要一些建议。

编辑:最终可用格式将是JSON,幻灯片可以是数组,也可以是在适当的时候拆分为数组的文本。

答案是……这取决于。 如果您认为URLS只是一段文本中的注释,那么将它们存储在一个字段中可能是有意义的。 确保将字段长度设置为足够大。

但是,如果您认为自己可能需要将URL视为关系实体,那么您需要采取第二种方法。 那是什么意思 好吧,如果将来您需要添加一个要求,不仅要存储URL,还要存储它的简短描述,该怎么办? 也许您需要添加一个有效日期以告知上次该URL有效期的检查时间。 也许您希望能够找到共享公共URL的对象。 我并不是说这些应该是您的要求; 我是说您不知道将来的要求是什么。 如果您非常确定这只是一个文本块,并且始终只是一个文本块,那么请确保...将其放在VARCHAR(MAX)字段中。 尽管随着需求的不断增加,您会很想尝试将更多内容入侵该文本块,这会使事情变得更加困难。

有时,为了加快速度或简化操作,打破常规形式是适当的,但是您要谨慎地做,并在将来尽可能多地考虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM