2011-04-22 135 views
1

我有两个表:一个区域(如科学,体育,教育),另一个用于职业(如科学家,设计师,高尔夫球员)。这两张桌子之间有一种对外关系,目前没有任何问题。帮助,数据库建模

但现在我需要另一个表把“工号”,“平均年龄”,“年的公司”(这个列表是每个行业可能有所不同)。做这个的最好方式是什么?创建另一个表?父母是什么?基本上,这是第三种说法。

CREATE TABLE group ( 
    id smallint(5) unsigned NOT NULL auto_increment, 
    area varchar(30), 
    PRIMARY KEY (id) 
) 

CREATE TABLE job ( 
    ref int(10) unsigned NOT NULL auto_increment, 
    jobid smallint(5) unsigned NOT NULL, 
    job varchar(50), 
    PRIMARY KEY (ref) 
) 

    ALTER TABLE job 
    ADD CONSTRAINT FK_job 
    FOREIGN KEY (jobid) REFERENCES group(id) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE; 
+1

您可以请您扩展您的系统数据的目的吗?另外,请发布现有表的创建表。谢谢! – 2011-04-22 15:52:00

+0

我想按类别进行下拉选择。目前只缺第三类 – anvd 2011-04-22 15:56:21

回答

1

从我明白我会成立第三个表如下

Table: Employee 
First_Name varchar(30) 
Last Name varchar(30) 
Age (int(3)) 
Employment Date (DATE) 
Active (Yes/No) 
JobFK (Points to emprego.PK) 

在这种设置下可以使用的连接上你的表来计算有多少工人在同行业中。这些员工的平均年龄以及他们在公司工作多久。给出更多关于你当前表格的信息,我甚至可以描述这些信息的sql查询。

+0

第一区>求职>员工。我不确定这种限制。它可以存在具有特殊性的职业。 – anvd 2011-04-22 16:08:50

+0

然后你需要更具体的代码。英语也有帮助。如果您将正确的外键约束到另一个表上的相应主键,上表应该可以工作。 正如我所见。一名员工有一份工作。职业存在于职业中。 Employee.JobFK - > Emprego.PK Emprego.FK - > Agrupamento.PK – Genzume 2011-04-22 16:12:33

+0

我编辑我的代码为英语。问题的关键是:例如。高尔夫选手没有与公司(假设)和医生签订合同。 – anvd 2011-04-22 16:16:16