鍍金池/ 問答/人工智能  Python  數(shù)據(jù)庫/ 如何設(shè)足球聯(lián)賽積分榜這樣的關(guān)系型數(shù)據(jù)庫呢?

如何設(shè)足球聯(lián)賽積分榜這樣的關(guān)系型數(shù)據(jù)庫呢?

我是想弄一個關(guān)于足球聯(lián)賽的積分榜數(shù)據(jù)庫。
有球隊表,聯(lián)賽表,比賽表,然后是積分排行表。

本來想著是個很簡單的問題,著手去畫圖的時候發(fā)現(xiàn)是個對于我這樣的小白來說很困難的事。
我覺得難以理解的地方有以下幾點望大佬們解惑

1,主要困惑在積分榜表,我一開始忽略了年度跟賽季這個概念,后來實際做的時候就困惑了。我一開始想所有隊伍做在一個表里,除了必要數(shù)據(jù)字段外,額外建兩個聯(lián)賽字段與年度字段來區(qū)分,后來覺得這樣好像有點傻吧,就只把隊伍全放一個表,然后一年一個表,過一個賽季就新建一個各分表不知道這樣如何實現(xiàn),或者說這樣合不合適。。

2,我有設(shè)想由記錄的比賽表里面的比賽信息的勝負(fù),去生成積分表的信息(因為只是簡單的記錄比分結(jié)果,所以我感覺可以通過比賽的結(jié)果來生成積分榜表)但碰到的問題其實還是如問題1積分表如何持久化保存的問題,還要方便查詢

3,如果是分開保存的,比如一年一個積分表,那如何做這些表跟球隊與比賽的關(guān)系。如果是保存在一起(像在問題1里所述用字段分年度)那就需要一個年度表(賽季表),來跟積分表做一對多的關(guān)系(聯(lián)賽表1,積分表N),這樣的話還需要再做一個字段在積分表里,用來標(biāo)記為當(dāng)前年度的(感覺想的好復(fù)雜了,新聯(lián)賽開始,還要寫個代碼把上一聯(lián)賽的這個字段改成非當(dāng)前賽季的)

上面胡亂說了很多,望大佬們海涵,求有經(jīng)驗的大佬給點思路。。。 現(xiàn)在想到這個問題就頭疼

PS:或者 我看網(wǎng)上還有一種方案,就是把比賽信息強(qiáng)化一下完善信息并加上年份字段,當(dāng)需要排名信息的時候直接讀取該聯(lián)賽所有比賽信息實時計算,就不用提排榜了。 這樣是否對運算能力有要求

回答
編輯回答
喜歡你

基本信息,就是一個“比賽”,基本字段: id,主隊,客隊,結(jié)果。就完了啊,其它的東西,要么在上面加外鍵,比如什么國家,賽季,聯(lián)賽,要么通過計算可得。

然后,可以有一個現(xiàn)成的積分 Table ,不過事實上它里面的信息是冗余的而已,這個表刪了也沒事。

2017年3月6日 18:52
編輯回答
吢丕

年度 一對多賽季
寒季 一對多 比賽 主場隊 客場 隊
隊 多對多賽季 多對多中間表冗余進(jìn)球,冗余幾勝,冗余幾平,冗余幾負(fù),冗余積分
不冗余也可以強(qiáng)sql 完成

2018年度 甲A 第二輪 國安主場對天津.
國安,2018年度甲A,共賽8場 積十六分五勝三平.

2017年4月10日 16:27