【问题标题】:Connecting Supertype / Subtype?连接超类型/子类型?
【发布时间】:2012-08-21 17:38:52
【问题描述】:

我必须连接 Supertype Entity Called

  • 用户(User_ID (PK)、User_Password、Registration_Date 等)。

到以下每个实体:

  • 员工(Employee_ID (PK)、Fname、Lname、Birthdate .. 等)
  • 客户(Customers_ID (PK)、Fname、Lname、Birthdate .. 等)
  • 供应商(Supplier_ID (PK)、Fname、Lname、Birthdate .. 等)..

如何使用 Ms-Access 进行操作(对于关系数据库)?

【问题讨论】:

  • 通常,客户和供应商可以是没有名字、姓氏或出生日期的公司。你确定你的建模正确吗?
  • 你想在这里做什么?为什么不能在每个表中包含字段(列)用户 ID 是否有原因?此外,如果按照@Catcall 的说法,客户和供应商是人而不是公司,为什么所有东西都没有在一张 People 表中?至少,为什么供应商和客户不在同一张桌子上?

标签: ms-access database-design


【解决方案1】:

关系型数据库中表示继承的策略一般有3种:

  1. 一个表中的所有内容。
  2. 单独表格中的具体类型。
  3. 单独表格中的所有类型。

(3) 可能是最常见和最“干净”的,尽管它可能涉及相当多的 JOINing。在您的情况下,您将在子表中拥有 FK(引用父表)并通过应用程序逻辑强制子表的存在1 和排他性2。可以通过支持循环和延迟 FK 的 DBMS 以声明方式强制执行这些操作,但在 MS Access 中则不行。

您可能想查看this post 了解更多信息。


1 所以用户不能只是用户 - 它必须是员工、客户或供应商。

2 所以用户不能(例如)同时是客户和供应商。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2021-05-24
    • 2012-01-22
    相关资源
    最近更新 更多