【问题标题】:Linking 2 table and create new table链接2个表并创建新表
【发布时间】:2018-03-28 02:22:33
【问题描述】:

我有两张桌子

表名:客户

+----+----------------+--------------+
| ID |Name            | Supervisor   |
+----+----------------+--------------+
| C1 | Jenny          | 2011-Apr-2   |
| C2 | Jack           | 1975-May-8   |
| C3 | May            | 1953-Sept-3  |
+----+----------------+--------------+

表名:家庭

+----+----------------+--------------+-----------+
| ID | Name           | Cust_id      |  Status   |
+----+----------------+--------------+-----------+
| F1 | James          | C1           |  Spouse   |
| F2 | Charlie        | C1           |  Child    |
| F3 | Jane           | C3           |  Child    |
+----+----------------+--------------+-----------+

有了这 2 个表,我想创建一个将 2 个表连接在一起的新表。 (使用 CREATE TABLE 子句)

表名:成员

+---------------+------+-------------+-------------+
| Membership_id | Id   | Name        | Date_created|
+---------------+------+-------------+-------------+
| M1            | C1   | Jenny       |  2017-Dec-5 |
| M2            | F1   | James       |  2018-Jan-2 |
| M3            | F2   | Charlie     |  2018-Jan-15|
| M4            | F3   | Jane        |  2018-Jan-26|
| M5            | C3   | May         |  2018-Feb-4 |
+---------------+--------------------+-------------+

我将使用会员 ID 来预订商品。 表名:Book(mem_id 是 Membership_id 的链接)

+---------------+----------+-------------+
| Book_id       | mem_id   | Book_item   | 
+---------------+----------+-------------+
| B1            | M2       | Chair       |
| B2            | M3       | Table       |
| B3            | M5       | Table       |
+---------------+----------+-------------+

我是一个初学者,尝试使用 JOIN 和 UNION 但无法获得我想要的结果.. 寻求帮助

【问题讨论】:

  • 您创建 Membership 表的方式与创建 Customer 和 Family 的方式相同。然后,将外键添加到 Membership 表中以“链接两个表”
  • 您的意思是将成员身份中的 Id 设置为来自 2 个表的外键引用吗?我尝试将 Id 和外键设置为 2 个表,但无法工作。我尝试了: CONSTRAINT fk_Membership FOREIGN KEY (Id) REFERENCES Customer(ID) ,但是如何将另一个外键链接到 Family Id
  • 您似乎在使用字母数字键。相反,您应该使用自增整数列作为每行的唯一 ID。另外,您真的要创建第三张表,还是要执行显示结果的查询?如果您创建表,那么稍后在更改或删除原始表中的行时会遇到问题。
  • 我真的建议您阅读有关 normalization 的内容,它将帮助您改进当前的设计,以及为什么创建 membership 表看起来像是要对您的设计进行非规范化。
  • @sloan thrasher 我使用的是 Oracle 11g,因为其中没有 AUTO-INCREMENT..没关系,我将搜索 oracle 11g 的“自动递增类似代码”。好的,我会尝试重新设计我的数据库关系..谢谢

标签: oracle oracle11g


【解决方案1】:

首先,可以在没有任何连接或联合的情况下创建表。您可以以相同的方式为客户和家庭创建一个简单的创建表。然后,在查询表时将完成所需的任何“链接”。

但是,如果您希望有某种外键约束,那么棘手的部分就来了。如果是这种情况,你可以参考这个链接:

  1. MySQL - Conditional Foreign Key Constraints
  2. it is possible to reference one column as multiple foreign keys

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2016-07-13
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多