我在弄清楚如何为何时何地在数据库中使用查找表放置良好的边界时遇到了麻烦。我看过的大多数资料都说我永远不会有太多,但是在某些时候,似乎数据库会被分解成很多部分,尽管它可能是有效的,但不再可管理。这是我正在使用的东西的综合示例:
假设我有一个名为“雇员”的表:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
假装数据更加复杂并且包含数百行。我看到可以移至查找表的最明显的东西是位置。我可以创建一个名为Positions的表,并将Positions表中的外键粘贴到Position列中的Employees表中。
ID Position
1 Manager
2 Sales
但是,在信息变得难以管理之前,我可以继续将信息分解为较小的查找表吗?我可以创建一个性别表,并在单独的查找表中将1对应于Male,将2对应于Female。我什至可以将LNames和FNames放入表中。所有“ John”条目都被外键1替换,该外键指向FName表,该表说ID为1对应于John。但是,如果您像这样在这个兔子洞中走得太远,那么Employees表就会变成一堆外键:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
尽管这可能使服务器处理效率提高或降低,但对于试图维护该服务器的普通人来说这当然是不可读的,这使应用程序开发人员尝试访问它变得更加困难。所以,我真正的问题是距离有多远?在某处是否有针对此类事情的“最佳实践”或一套良好的准则?我在网上找不到任何信息,可以针对我遇到的这个特定问题确定一套良好且有用的指南。数据库设计对我来说是旧帽子,但是良好的数据库设计是非常新的,因此过于技术性的答案可能会困扰我。任何帮助,将不胜感激!