以你的問題,一次一個:
你應該如何參考實體組中的軟件?硬編碼的身份證,或名稱?
以使您的代碼具有最高可讀性的方式引用實體組。所以,也許你使用了這個名字,或者是一個看起來像名字但是其值是id的常量。使用常量可以避免在按組類型查找實體時進行一次連接,但通常這並不是什麼問題。
爲什麼我甚至需要DB中的表格呢?這是錯誤的方式來構建我的數據?
這是一種完全可以接受的方式來構建您的數據。最正確的方法取決於你對數據做什麼,但對於大多數應用程序,你的結構是正確的。但是,您肯定不需要需要該數據庫中的表 - 您可以改爲在entity_group表上具有「group_type」字段。這裏有利弊:當前結構的
優點:
- 輕鬆添加描述entity_group_type領域。例如,您可能希望創建一些只能由管理員用戶查看或禁用的組類型,或者其他類型的組。如果這是未來的可能性,它幾乎需要這種數據庫結構。
- 能夠讓您的數據庫軟件實施參照完整性,這意味着entity_group和entity_group_type表之間的數據保持一致。
優勢在entity_group表中新增group_type領域:
- 可能在你的代碼更簡單的表示。對於exameple,如果您使用MVC體系結構,那麼擁有額外的表可能需要代碼中的另一個模型對象。這通常不是問題,可能有優勢,但有時候更簡單更好。
- 當您按實體組類型查找實體時,您的SQL語句會稍微簡單一些,因爲涉及的表/聯接會少一個。
我認爲在大多數情況下,您的當前結構是超前的,儘管它取決於您如何使用數據。除非你有充分的理由來構造數據,否則我會堅持你當前的結構。
謝謝,非常好的解釋利弊:) – m0skit0