我有一个实体employees
,其中包含六个属性:employee_number
(唯一键),first_name
,last_name
,address
,phone_number
,和hire_date
。但是,有两种类型的员工:"服务技术人员"和"销售人员"。
每个不同类型的员工都有"特定职位"属性。服务技术人员具有model_expertise
和pager_number
属性,销售人员具有commission
和salary
属性。
我不确定如何在ER图中表示这一点。我有一个列出了属性的employees
实体,是否可以建立从employees
到technicians
和associates
的关系?像is_type
这样的关系:关系可以将一个实体链接到这样的两个实体吗?
如果没有,怎么回事?
答案 0 :(得分:1)
你有一个经典的子类型/超类型关系。最初的ER符号没有针对这种情况的特定符号,尽管可以将子类型表示为没有弱键的弱实体。为了解决这个问题,我们开发了许多ER模型的扩展。这是一个例子:
圈子中的d
表示不相交的子类型,这意味着Employee
可以是Technician
或Associate
,但不能同时为o
或public function clear_unconfirmed_post() {
$this->db->where('code is NOT NULL', NULL, FALSE);
$this->db->where('date_modified < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 15 MINUTE))', NULL, FALSE);
$this->db->delete($this->db->dbprefix . 'post');
}
。另一个选项是public function __construct() {
parent::__construct();
$this->load->model('catalog/forum/newthread_model');
$this->newthread_model->clear_unconfirmed_post();
}
重叠。
但是,不要将您的超类型/子类型关系与3向关系混淆。相反,它最好被视为2个二元关系,不相交是一个相互约束。在ER图中,确实可以实现真正的三向(和更高)关系(例如供应商,零件和区域之间的多对多关联)。这是区分ER模型和旧网络数据模型的功能之一。