我正在設計一個獎勵數據庫應用程序。它有75年的歷史和許多類別隨時間而變化。目前,我所考慮的設計有兩種表格:如何在mySQL中查詢很多表格
entities
people
publishers
categories
novel
movie
author
artist
等等。例如:每個類別都有該類別的數據,例如:
NOVEL
title varchar(1024)
author int #FK into people table ID
publisher int #FK into publisher table ID
year year(4)
winner bool
or
ARTIST
name int
year year(4)
winner bool
到目前爲止好。然而,這些類別中有38個(!)隨着時間的推移已經存在(有些不再存在了),我真的無法想象從1963年開始,所有獲獎者都會這樣做:
SELECT * from table1,table2,...,table38 WHERE year=1963 and winner=TRUE;
這些表格永遠不會那麼大(每個類別通常最多有五個被提名人,所以即使在一百年後,每張桌子最多也會有500行,並且對於不會延續的早期表格而言會少很多) 。所以這不是一個性能問題。只是因爲那個查詢對我來說感覺非常非常錯誤,因爲每當創建一個新類別或刪除一箇舊類別時,每個查詢都必須更改。每隔幾年左右發生一次。
的問題則是:
- 是這個查詢的證據,我已經設計了這個錯了嗎?
- 如果沒有,是否有更好的方法來做這個查詢?
- 我一直在想,必須有一些方法來創建一個從其他表中拉出的查找表,但我可能會誤解。有沒有辦法做這樣的事情?
非常感謝,
格倫
尼姆的關於slu is的觀點是一個有趣的想法,但我認爲蒂爾達撞上了頭。將所有表合併爲一個表的方法是讓數據表包含38個表中的字段的並集。如果我允許它們爲NULLable,那麼例如,最佳小說可能會將data.director字段設置爲空,但是對於數據。作者而言,反之亦然。 非常感謝! – gglazer