数据库设计 – 在数据库中有“外键冗余”是不是很糟糕?
发布时间:2020-12-12 08:34:05 所属栏目:MsSql教程 来源:网络整理
导读:我正在设计一个数据库结构,具有以下简化示例: Team has many membersMember has many clientsClient has many projects 假设我的对象有这些参数: Team: id,typeMember: id,team_id,nameClient: id,member_id,emailProject: id,client_id 找到一个项目的客户
我正在设计一个数据库结构,具有以下简化示例:
Team has many members Member has many clients Client has many projects 假设我的对象有这些参数: Team: id,type Member: id,team_id,name Client: id,member_id,email Project: id,client_id 找到一个项目的客户,一个客户的成员,或一个成员的团队,这是很简单的. 但是,假设我想找一个项目的团队,例如,我必须首先找到一个项目的客户端,然后是一个客户的成员,然后是该成员的团队. 我可以直接添加一个team_id到项目,像这样: Project: id,client_id,team_id 但是,我意识到,这增加了一定程度的冗余,因为这些信息可以通过“上升关系树”获得.这是个坏主意吗? 谢谢! 解决方法这是否是一个坏主意取决于数据库的典型用例.添加其他外键会增加修改结构的成本(INSERT,UPDATE如果修改关系,DELETE). 没有额外的外键会增加查询的成本,否则这些查询将从其存在中获益. 如果项目结构变化不大,但是您经常查询结构,额外的外键可能是净积极的.如果有疑问,请使用合理的测试数据创建结构,并对您认为是典型的一些查询进行基准测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |