我已经对关系数据库做了很多工作,并且认为我对良好模式设计的基本概念非常了解。我最近的任务是接管一个由高薪顾问设计数据库的项目。请让我知道我的直觉是否是“ WTF ??!?” -是必要的,还是这个人真是个天才,以至于他超出了我的领域?
有问题的数据库是一个内部应用程序,用于输入员工的请求。仅查看其中的一小部分,您就可以获得有关用户的信息以及有关所提出的请求的信息。我会这样设计:
用户表:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
要求表
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
简单吧?
顾问是这样设计的(带有示例数据):
用户表
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
部门表
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
请求表
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
整个数据库是这样构造的,每个数据都封装在自己的表中,数字ID将所有内容链接在一起。显然,该顾问已经阅读了有关OLAP的内容,并希望获得“整数查找的速度”
他还具有大量存储过程来交叉引用所有这些表。
这是中小型SQL DB的有效设计吗?
感谢您的评论/答案...