我正在研究数据库设计和理论,并最终在创建基于SQL的模式时进行了深思熟虑的尝试。如果有人有时间,我想审查我的布局并确保它是合乎逻辑的。旨在提高我的知识的提示和批评当然是受欢迎的! :)
这是我的总体目标: 创建一个数据库,允许拥有多个商店的企业通过简单地标记日期培训和验证日期来跟踪员工培训进度。基本上,这将是层次结构:
Business 1
--Store Location (a)
----Employee
----Employee
----Employee
--Store Location (b)
----employee
----employee
----employee
Business 2
--Store Location (a)
----employee
----employee
--Store Location (b)
----employee
----etc...
此架构应允许无限制的企业,商店和员工。
就培训而言,应该有这种类型的层次结构:
Business 1
--Employee Class (Manager, Employee, Salesman, Associate, etc)
----Training Category (Sales, Stocking, Manufacturing, etc)
------Training Activity (How to sell X product, How to stock Y aisle, etc)
------Training Activity
------Training Activity
----Training Category
------Training Activity
------Training Activity
--Employee Class
----Training Category
----Training Category
Business 2
--Employee Class
----Training Category
------Training Activity
------Training Activity
------Training Activity
----Training Category
------Training Activity
------Training Activity
--Employee Class
----Training Category
----Training Category
以下内容应根据业务需求而变化,并在创建业务帐户时创建:
*Number of Stores
*Number of Employees
*Employee Classes
*Training Categories
*Training Activities
所以大问题是:
1)我有多接近?
2)如何做得更好?
提前致谢!
以下是图表图片的链接: http://i1227.photobucket.com/albums/ee422/CorySCline/diagram.jpg
答案 0 :(得分:1)
一眼就看起来很不错。可以说,应该总是分解多对多的关系。例如,使用您的公司和员工表,您有一个链接到员工ID的公司ID。考虑一下这样一个事实:一个员工可以被两个不同公司聘用,所有属性都相同。您没有唯一标识符。抵消这种情况的方法是创建一个匹配表,您将拥有2个属性,company_id和employee_id(可能是一个自动增量标识符,以防万一)。
同样,考虑在商店之间移动的员工......您无法找到员工的跟踪记录。此外,您还可以与员工班级和员工一起完成。