设计Employee-Manager的数据结构
Design data structure for Employee-Manager
问题是为员工/经理系统设计一个结构。
1)员工属于经理。
2)一个经理有几个雇员。
3) Manager也可以属于一个Manager。
4)员工只有一个经理
设计数据结构,使其支持以下操作:删除员工/经理,提升(员工成为经理)。
任何编程语言都可以。
注意:我不想要代码。口头解释就可以了。
我的第一个想法是使用employee作为基类,带有属性manager作为指向manager对象的指针(以及其他必要的属性,如'id')和类manager,继承employee和指向员工的指针列表。
这可以包装在一个模型中,包含所有员工/经理的列表和方法,如'promote (employee)'。Employee也可以有一个像'promote'这样的方法,它返回一个manager-object。管理器类可以有一个带有employee-parameter的构造函数…
更新(c#代码):public class Employee
{
public string ID;
public Manager Manager;
public Manager promote() { return new Manager(this); }
public Employee() { }
}
public class Manager : Employee
{
public List<Employee> Employees;
public Manager() { }
public Manager(Employee employee) {...}
}
public class EmployeeModel
{
private List<Employee> employees;
public List<Employee> Employees { get { return this.employees; } }
public void addEmployee(...) {...}
public void removeEmployee(...) {...}
public void promoteEmployee(...) {...}
}
您只需要一个表:
CREATE TABLE employees (
id integer NOT NULL,
name varchar(50) DEFAULT NULL,
manager_id integer DEFAULT NULL,
PRIMARY KEY (id)
)
该表有一个对自身的引用(manager_id->id)。
如果记录在"manager_id"字段中有NULL值,那么它是一个顶级经理。所有其他记录应该在"manager_id"字段中有一些值,这是对PrimaryKey字段"id"的引用
从设计的角度来看,我将使用复合设计模式。[复合图]:http://en.wikipedia.org/wiki/File:Composite_UML_class_diagram_(fixed).svg。每个员工(可能是经理)持有指向其经理的指针,每个经理持有指向其员工的指针列表。但是只有一个类(Employee)。
我会说首先找出实体(您已经拥有,Employee和Manager)。现在根据约束找出它们之间的关系:
经理致员工(一对多)
员工对经理(一对一)
员工可以是经理。
选择- 有一个单独的
Class
员工"拥有"(关联)Employee
的List
- 员工本身有员工(作为经理,
Employee reportsTo
)的引用。
疼痛区域在以上两种选择中:选项#1如果你删除了经理,那么员工列表将成为孤儿(没有经理的员工)选项#2如果您想查看单个Manager下的所有员工,那么您需要遍历所有employee以获得经理的employeeID。
期待其他答案
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 设计将引用元素移动到开头的数据结构.C++
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何解析表示树状数据结构的字符串
- 我对数据结构、双向链表有一些问题
- googletest:测试太大的数据结构
- C++中deque数据结构的大O是什么?
- 我可以使用哪种数据结构来处理这种方式
- 将文本文件解析为树状数据结构
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 设计Employee-Manager的数据结构