以你的问题,一次一个:
你应该如何参考实体组中的软件?硬编码的身份证,或名称?
以使您的代码具有最高可读性的方式引用实体组。所以,也许你使用了这个名字,或者是一个看起来像名字但是其值是id的常量。使用常量可以避免在按组类型查找实体时进行一次连接,但通常这并不是什么问题。
为什么我甚至需要DB中的表格呢?这是错误的方式来构建我的数据?
这是一种完全可以接受的方式来构建您的数据。最正确的方法取决于你对数据做什么,但对于大多数应用程序,你的结构是正确的。但是,您肯定不需要需要该数据库中的表 - 您可以改为在entity_group表上具有“group_type”字段。这里有利弊:当前结构的
优点:
- 轻松添加描述entity_group_type领域。例如,您可能希望创建一些只能由管理员用户查看或禁用的组类型,或者其他类型的组。如果这是未来的可能性,它几乎需要这种数据库结构。
- 能够让您的数据库软件实施参照完整性,这意味着entity_group和entity_group_type表之间的数据保持一致。
优势在entity_group表中新增group_type领域:
- 可能在你的代码更简单的表示。对于exameple,如果您使用MVC体系结构,那么拥有额外的表可能需要代码中的另一个模型对象。这通常不是问题,可能有优势,但有时候更简单更好。
- 当您按实体组类型查找实体时,您的SQL语句会稍微简单一些,因为涉及的表/联接会少一个。
我认为在大多数情况下,您的当前结构是超前的,尽管它取决于您如何使用数据。除非你有充分的理由来构造数据,否则我会坚持你当前的结构。
谢谢,非常好的解释利弊:) – m0skit0