【发布时间】: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 的“自动递增类似代码”。好的,我会尝试重新设计我的数据库关系..谢谢