【问题标题】:database design model数据库设计模型
【发布时间】:2012-02-09 17:54:07
【问题描述】:

假设我们有 3 张表: Cars 、 People 、 Companies 。我们希望车主是一个人(谁是)或一家公司(谁是)。 Cars 表的基本结构是: Car_id, Car_model, Owner_id 。最好的方法是什么?

【问题讨论】:

  • 你能澄清一下这个问题吗?你有什么需要帮助的?创建语句?逻辑?具体技术/语法?
  • 我想要这样做的逻辑。例如,我想创建 2 个表。第一个具有 fowling 结构的“类型所有者”:type_owner_id,type_owner_name。第二个表“所有者”,具有以下特征:id、owner_id(people_id 或 company_id)、类型 owner_id、car_id。但我认为我远非理想..
  • 还取决于您的业务规则,一辆汽车可以同时拥有多个车主,可以是个人或公司?

标签: database database-design relational-database foreign-key-relationship


【解决方案1】:

阅读您的问题,我看到了两种方法:

  • 第一个是继承:你有一个car 表,你也有一个ownerowner 可以是 personcompany,两者都有特定的字段和关系。

它们是implementing inheritance with standard SQL 的几种策略,也特定于某些 dbms 供应商。数据库分析师应该为每个domain of discourse 和数据库品牌设计最佳解决方案。

  • 第二种方法是在car 表中定义两个外键。

像这样:

car_company_owner  int NULL references companies
car_person_owner   int NULL references people

然后在数据库中创建一个规则来强制执行您的预期行为。例如,您可以与触发器保持一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2014-02-25
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多