2013-05-25 58 views
1

我想創建一個數據庫,它將存儲一個設備表和一個操作表。每個設備都將與多個操作相關聯。行動之間會有很多重疊。例如,iPhone和Android手機都有基本操作,例如「搖動」,「滑動」等。爲了避免創建許多重複操作,我計劃引入第三個表格,通過它們的ID將設備映射到動作。整個設置看起來像這樣: enter image description here構建數據庫的最佳方式,其中一行必須映射到另一個表中的許多行?

這是最好的方法嗎?或者僅僅複製這些動作更有效率?任何其他方式的建議嗎?

回答

2

這取決於其餘的數據。

如果iPhone的「Shake」行與Android的「Shake」行不同(當查看其餘數據時),那麼您可以直接在您的Actions表中使用外鍵您的設備表並跳過映射表。

但是,如果您的操作和設備真的是多對多的,那麼您當前的模式是有意義的。

0

正如Matt已經提到的,如果關係是多對多的,那麼您當前的模式是有意義的。從您的描述中聽起來好像是這樣。

下面是我建議的一個改變:「其他具有更多信息的列」標題應該出現在設備表和地圖表以及動作表中。與設備相關的信息只會顯示在設備表中。與Actions相關的信息只會顯示在Actions表中。

只有在給定設備的情況下,與給定動作有關的信息纔會顯示在地圖表中。

地圖是中間表的好名字。但是,如果您開始查看有關數據庫設計的文獻,則會發現它通常稱爲鏈接表,關聯表,結點表或其中一個變體。

相關問題