2015-10-15 183 views
0

我负责发现此关系内的异常情况。我发现了一些插入,删除和更新异常。数据库关系异常

enter image description here

Commission Percentage: the percentage of the total sales made by a salesperson that is paid as commission to that salesperson.

Year of Hire: the year the salesperson was first hired

Department Number: the number of the department where the salesperson works Manager Name: name of the manager of the department

不过,我迷茫了异常,我拉出。以下是声明:

在公司中不能有一个具有相同名称的经理,因为经理实体没有主要标识符,除了该名称可以在公司内重复使用。

可我知道我应该怎么短语上述声明,并在其下(更新/删除/插入)的异常,我应该包括它?

谢谢


我可要求提供补充援助下面还有:

  • 你将如何改变当前的设计以及如何做新的设计地址你已经发现了与当前设计有关的问题。
  • 我现在的设计是它拆分成3个关系: Salesperson(salespersonNumber, salespersonName, commissionPercentage, YearOfHire, deparetmentNumber)

    Product(productNumber, productName, unitPrice)

    Manager(managerNumber, managerName, departmentNumber)

    不过,我错过了数量实体。 数量需要productNumber的复合关键字& salespersonNumber。 我应该自己在另一个关系吗?

    Quantity(productNumber, salespersonNumber)

    +0

    你有什么程序来识别和解决异常? PS:找到填充空白语句(*谓词*),其中空白用属性命名,一行值变成语句(*命题*)。真正提议的行会放在表格中,并为虚假留出。不要使用任何代词;重复使用属性。然后每当出现异常时,都会因为有问题的连词而引起异常。我们放弃AND并创建谓词是连词的新表。 – philipxy

    +0

    你给“异常”定义了什么?因为“不可能有经理......”可能是一个*问题*(非正式术语),但它不是一个*异常*(技术术语).. – philipxy

    回答

    1
    1. 异常

    当识别41(潜在的)异常,您列出了由异常影响相关的属性(你忘了Salesperson Name,顺便说一句)。具体而言,您列出了取决于密钥(Salesperson Number, Product Number)的子集的属性,因此违反了2NF。你在正确的轨道上。

    但是,要小心,不要混淆异常属性。如果Bilstein的3个实例中有1个发生了更改,则会发生更新异常。 (假定的)功能依赖Salesperson Name depends on Salesperson Number将被打破,数据将不一致(销售人员编号437将与多个名称相关联)。请记住,规范化旨在消除多余的协会

  • 身份
  • 与由名称标识管理的问题表示建模决定差。如您所述,公司的一组管理人员并不是通过名称唯一标识的,因此逻辑数据模型与其建模的世界之间存在不匹配。只要我们为不同的经理使用不同的值,这不会导致插入,更新或删除异常,但这会妨碍管理员的方便识别。可能的改进是使用多个属性(抽象域通常易于通过属性组合来识别,但像人这样的自然域通常不是,例如Manager Name, Birthdate将更具识别性,但仍不是一个好的解决方案),将Manager Name变成代理键(例如Scott1,Scott2),或引入新的代理键(例如数字ID)。

  • 建议改善
  • 你提出的设计标准化原始表以及寻址的识别问题。这是一个很好的答案,除了两个问题:它不包括销售人员和经理之间的关联,并且在您的关系中,您忘记了将数量作为依赖属性包含在内。

    目前为止工作做得很好,希望对您有所帮助。