|
阅读:8055回复:0
【原创】数据库中逗号的灵活使用 — 例:标签的使用
在数据库的设计中,经常会遇到这种情况,如一个课程,它可以标记为多个标签 , 如:一个HTML课程,你可以为这个添加标签,HTML, 前端,Web 等相关的标签,来说明这个课程。
那在数据库设计时,如何去设计 我们都知道,一个课程,可以有多个标签。 一个标签可以标记多个课程。 也就是说课程与标签之间的关系为多对多。这种情况大家也清楚,当两个表之间的关系为多对多时。我们通常会在建立一个表,来说明两个表之间的关系。 上面的做法是没有错,但是为了方便,我们经常也会有违反正常的处理方法。 今天,就给在家推荐一种这样的处理方式。 如上,所说的,一个课程与标签之间的关系,虽然是对多对,但是还是只用了两个表,那数据是如何存储的呢,请看下图: 图片:database.png
将,多个标签的ID,使用逗号连接,然后,进行存在。注,这里的逗号,不只是id之间才有,前后也有哦。 前后,也加逗号的目的是,能够更加准备的找到对应的id; 如,找包括了标签ID为3 的, 我们可以找 tags字段中 查询 ,3, 如果返回的ID大于0 说明包括3 。 而如果前面不加豆号 ,只有3, 那可能33, 或43, 也会被查询出来,就不能达到精确查找了。 最后,还有一个问题,如果根据id集合,查询出对应的标签名,并也用逗号分隔。参考以下mysql代码: SELECT GROUP_CONCAT(TagName) AS Tags FROM Tag WHERE LOCATE (CONCAT(',',Id,','),',33,34,35,')>0 此外用了,三个mysql 的内置方法: CONCAT( ) : 字符串连接 LOCATE( ) : 模糊查询,没有查询到,则返回0 GROUP_CONCAT( ): 行列转换,并用逗号分隔 分享就到这里结束,如果你有更好的方式,欢迎分享 |
|
最新喜欢:
|
