我正在和一位剛剛接觸編程的同事一起工作,我正在嘗試解釋一些ORM(和SRP)的概念,但我在某種程度上失敗了。這是一個Rails應用程序。數據建模 - 爲什麼不是一個扁平的屬性表?
我工作在一個應用程序的類層次結構是這樣的:
-CallFlow
- 路線(多態性)
--- RouteOptions
有特定屬性的各種路由和每個RouteType都有它自己的一組選項。理想情況下,對於我來說,會有一個call_flows表,每個路由類型都有一個表,然後是具有選項的路由類型,該路由類型有一個選項表。一個非常粗糙的小樣:
Simple_route和outbound_route沒有選擇。在有選擇的路線中,這是一個has_many關係,爲我們提供了該路線的一系列選項。
相反,我的同事希望將每個路由特定的所有字段放在call_flows表中。這是一個模式的樣機:
所以,你將有一個大的call_flows表,並不適用於每一個記錄字段。其實只有少數意志。我的背後我的造型決定的推理如下:
- 它遵循了基本的標準化模式
- 它減少了空值的數量,從而分貝大小
- 它更靈活地應對變化
- 它遵循基本的SRP原則
我是否缺少任何東西?如果有任何資源可以幫助新程序員實現數據庫規範化的重要性,那將是非常好的。
謝謝!
你已經非常雄辯地解釋了它。如果你的同事不能接受你的解釋,爲什麼他會被外部資源所信服?這看起來像個人領導/自信問題。 –