【发布时间】:2020-05-04 11:13:27
【问题描述】:
我正在创建用于数据库管理的网络应用程序。可以使用图表 ER 创建数据库。
这是我的应用程序的屏幕:
如您所见,这个伪示例显示了 4 种类型的案例:
1) 主键 --> 主键 (1:1)
2) 唯一键 --> 唯一键 (1:1)
3) 由两个字段组成的主键 --> 由两个字段组成的主键 (1:1)
4) 由两个字段组成的唯一键 --> 由两个字段组成的唯一键 (1:1)
这是我的问题:
这一切都是真的吗?我想知道这些双键...这真的是一对一的关系吗?
一般来说,我也想知道前两个案例。还有真的吗?
我不知道为什么,但您可以看到 MySQL Workbench 显示这是一对多关系...
谁能告诉我真正的一对一关系是什么时候?
文档显示我有权利:
https://docs.oracle.com/cd/E26180_01/Platform.94/RepositoryGuide/html/s1204onetoonewithauxiliarytable01.html
但是 MySQL Workbench 和 Sql Developer 中的图表 ER 显示了一些不同的东西......
该表中的 SQL 代码:
CREATE USER "Student" IDENTIFIED BY "null";
CREATE TABLE "Student".Table1 (
PK_FK NUMBER NOT NULL
);
CREATE TABLE "Student".Table2 (
PK NUMBER NOT NULL
);
CREATE TABLE "Student".Table3 (
PK NUMBER NOT NULL,
UK_FK NUMBER
);
CREATE TABLE "Student".Table4 (
PK NUMBER NOT NULL,
UK NUMBER
);
CREATE TABLE "Student".Table5 (
PK_1_FK NUMBER NOT NULL,
PK_2_FK NUMBER NOT NULL
);
CREATE TABLE "Student".Table6 (
PK_1 NUMBER NOT NULL,
PK_2 NUMBER NOT NULL
);
CREATE TABLE "Student".Table7 (
UK_1_FK NUMBER,
UK_2_FK NUMBER
);
CREATE TABLE "Student".Table8 (
UK_1 NUMBER,
UK_2 NUMBER
);
ALTER TABLE "Student".Table1 ADD CONSTRAINT Table1_PK PRIMARY KEY (PK_FK);
ALTER TABLE "Student".Table2 ADD CONSTRAINT Table2_PK PRIMARY KEY (PK);
ALTER TABLE "Student".Table3 ADD CONSTRAINT Table3_PK PRIMARY KEY (PK);
ALTER TABLE "Student".Table4 ADD CONSTRAINT Table4_PK PRIMARY KEY (PK);
ALTER TABLE "Student".Table5 ADD CONSTRAINT Table5_PK PRIMARY KEY (PK_1_FK, PK_2_FK);
ALTER TABLE "Student".Table6 ADD CONSTRAINT Table6_PK PRIMARY KEY (PK_1, PK_2);
ALTER TABLE "Student".Table3 ADD CONSTRAINT Table3_UK1 UNIQUE (UK_FK);
ALTER TABLE "Student".Table4 ADD CONSTRAINT Table4_UK2 UNIQUE (UK);
ALTER TABLE "Student".Table7 ADD CONSTRAINT Table7_UK3 UNIQUE (UK_1_FK, UK_2_FK);
ALTER TABLE "Student".Table8 ADD CONSTRAINT Table8_UK4 UNIQUE (UK_1, UK_2);
ALTER TABLE "Student".Table1 ADD CONSTRAINT Table1_FK1 FOREIGN KEY (PK_FK)
REFERENCES "Student".Table2 (PK);
ALTER TABLE "Student".Table3 ADD CONSTRAINT Table3_FK2 FOREIGN KEY (UK_FK)
REFERENCES "Student".Table4 (UK);
ALTER TABLE "Student".Table5 ADD CONSTRAINT Table5_FK3 FOREIGN KEY (PK_1_FK, PK_2_FK)
REFERENCES "Student".Table6 (PK_1, PK_2);
ALTER TABLE "Student".Table7 ADD CONSTRAINT Table7_FK4 FOREIGN KEY (UK_1_FK, UK_2_FK)
REFERENCES "Student".Table8 (UK_1, UK_2);
【问题讨论】:
-
我问的是 1 对 1 的关系是否真的发生在我发布的 4x 案例中。我需要实现它。
-
您的第一张图片描绘了四个一对一的关系。要确定,您应该从生成的 ddl 发布主键和外键文本。那我们就肯定知道了。您可以发布 all 的 ddl 命令,但您只需发布关键信息。此外,如果您不确定,则可以通过尝试插入会违反您要强制执行的规则的行来测试关系的执行情况。
-
是的,当然。
-
Jeff Holt,我编辑了帖子,你现在可以看到 sql 代码了。
标签: mysql sql oracle postgresql