查询语句-建模竞赛题第2赛季第24轮解答

题目:

假设我们针对“邓丽君的领域建模”(https://mp.weixin.qq.com/s/gO0IoFjEkVMS4yAM55Pvfw)一题,给出答案如下:

(1)以下描述所包含的信息将作为某些类的对象的属性值存在,请把它们标到类图上相应位置。(1分)《月亮代表我的心》,演唱者“邓丽君”,演唱年份1977,作曲“汤尼”,本名“翁清溪”。

(2)请用一句查询语句描述以下查询,可以用SQL或类SQL(如LINQ……)语法表达(1分):查找与ID为1的歌曲同曲的其他歌曲。

(3)请用一句查询语句描述以下查询,可以用SQL或类SQL(如LINQ……)语法表达(2分):查找本名为“翁清溪”的人以“汤尼”笔名署名的歌曲。

(4)如果系统也要维护歌词、乐谱、音乐、海报的URL链接信息,应该如何修改类图。(1分)


得分:

Alan:(1+0.3+0.8+0.2)*1=2.3 第三题运行得到的是全部歌曲

第五元素:(1+0.7+0.8+0.3)*0.9=2.5 第二题多写了一遍

龙龙:(1+1+0.8+0.8)*0.8=2.9

刘京城:(0.8+1+0.5+1)*0.7=2.3


参考答案:

(1)

《月亮代表我的心》、1977:“歌曲演唱版本”的“歌名”、“年份”属性值;

“邓丽君”、汤尼”、“翁清溪”:“称呼”的“值”属性值。

(2)

select S2.歌曲ID from 歌曲 S1,歌曲 S2 where

S2.歌曲ID<>S1.歌曲ID and S2.曲ID=S1.曲ID and S1.歌曲ID=@歌曲ID

(3)

题目要求一句,如果允许两句,可以是:

扣分的原因,主要是被素材里的例子引导,误以为“笔名署名”一定是“作曲”。其实很多以作曲出名的作者,有的时候也会只写歌词的,包括罗大佑、李宗盛等。

例如:

《一样的月光》,作词:吴念真、罗大佑,作曲:李寿全;

《爱如潮水》,作词:李宗盛,作曲:黎沸挥。

之后知名度最大的周杰伦,自己出歌一般都是自己作曲,但如果是帮下面的小弟出歌,也有扒其他国家的歌来帮着填词的情况。这时,周杰伦就成了词作者,但不是曲作者。

如果用22轮刘京城所给的做法:https://imgchr.com/i/rekjjP,这个查询会简单一些。

(4)把“歌词”加到“词”的属性,把“乐谱”加到“曲”的属性,把“音乐”、“海报”加到“歌曲演唱版本”的属性。


weixinpanjiayu2.jpg