- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,这是我遇到问题的三个表的代码:
CREATE TABLE ProgramSupervisor
( EmpNo CHAR (6),
ProgramSupervisorNo CHAR (6),
TeamNo CHAR (3),
CONSTRAINT PKProgramSupervisor PRIMARY KEY (EmpNo , ProgramSupervisorNo) ,
CONSTRAINT FKProgSupEmpNo FOREIGN KEY (EmpNo) REFERENCES Employee )
另一个:
CREATE TABLE ISL
( ISLNo CHAR (6) ,
EmpNo CHAR(6),
ProgramSupervisorNo CHAR (6),
ISLName VARCHAR (30),
ISLStreet VARCHAR (40),
ISLCity VARCHAR (30),
ISLState CHAR (2),
ISLZip CHAR (5),
CONSTRAINT PKISL PRIMARY KEY (ISLNo) ,
CONSTRAINT FKISLProgSupNo FOREIGN KEY (ProgramSupervisorNo, EmpNo)
REFERENCES ProgramSupervisor )
还有一个:
CREATE TABLE Hourly
( EmpNo CHAR (6),
ISLNo CHAR (3),
NumberOfWriteUpes SMALLINT,
CONSTRAINT PKHourly PRIMARY KEY (EmpNo),
CONSTRAINT FKEmpNo FOREIGN KEY (EmpNo) REFERENCES Employee,
CONSTRAINT FKISLNo FOREIGN KEY (ISLNo) REFERENCES ISL )
这是我努力争取的 ERD 和关系:
现在您已经了解了信息,让我解释一下我遇到的问题。首先,ERD 有点误导。我有一个 ProgramSupervisor 表,它是“薪水”父表的子表,而“薪水”是父表“雇员”的子表。 Employee的PK是EmpNo,Salary和ProgramSupervisor的PK也是EmpNo。但是,我还希望 ProgramSupervisorNo 成为“ProgramSupervisor”表的 PK,并为其创建一个复合 PK。当我创建“ISL”表时,为了在 ISL 表中将复合“ProgramSupervisor”PK 引用为 FK,Access 需要两个 PK 字段名称。这不违反规范化标准吗?由于它需要“ISL”表中的 EmpNo 和 ProgramSupervisorNo,这是否意味着 ProgramSupervisorNo 依赖于 EmpNo,因此不应包含其中一个字段?我是新手,所以请原谅我的拙劣解释。
此外,'Hourly' 员工属于一个 ISL,ISL 可以有多个 'Hourly' 员工,但 'Hourly' 表也是 Employee 的子表,并且以 EmpNo 作为其主键。也就是说,如果我需要将 EmpNo 和 ProgramSupervisorNo 放入我的“ISL”表中,我该如何将 ISLNo 放入我的“每小时”表中?
一尘不染?基本上,我只是将 ProgramSupervisorNo 放入“ISL”表中,因为每个 ISL 都有一个 ProgramSupervisor。然后,我想将 ISLNo 放入我的“每小时”表中。请提供一些示例并像我五岁一样向我解释。任何帮助深表感谢。
最佳答案
从学术的角度来看,Primary key
必须满足所有这些要点:
外键是对其他表主键的引用。因此它们必须准确地包括引用的 PK 所具有的字段。这并不违反归一化,因为 PK 必须是最小的(从学术角度来看)。
当您有一个包含 2 列或更多列的主键,并且您认为只用一列来引用它的行就足够了,那么您的主键无效,因为它不是最小的。当它有效并且您需要所有这些列来填充唯一性时,您还需要外键中的所有这些列。
DBMS 允许您定义非最小 PK,但这就是您离开学术概念的地方。
关于sql - 如何将复合 PK 引用为另一个表中的外键并仍然具有规范化数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895805/
甲骨文: create table t7(c1 number primary key,c2 number); insert into t7 values (1,3); insert into t
谁能告诉我为什么点击模板链接生成的url是/.pk。我想了解 url 是如何工作的。这里是 Django 新手。 Traceback (most recent call last): File "
我有以下 MySQL 触发器。它因 tbl_users 的更新而被触发。如果当天已经存在记录,它将用一些信息更新 tbl_user_stats;如果当天没有记录,它将在 tbl_user_stats
已知:tX_1.name 永远不能为 NULL,长度可变,最多 45 个字符,并且必须始终是唯一的。 哪些因素会影响是否应使用代理 PK 加唯一列(架构 1)或 PK 自然键是否使用第一个表的唯一列作
我有一个包含复合 PK(code_id、user_id)的表,它已经有 100k 条记录。从复合 PK 移动到单个 PK 是否安全,如下例所示? ALTER TABLE orders DROP C
为什么这个模型没有创建 pk 并提示相关模型的 pk 的完整性? 创建 UserProfile 的新实例时,它不会创建主键。 我正在遵循一对一的说明 in this tutorial (这就是所有 @
注意:我是 JPA 开发的新手,正在快速学习试用,所以请原谅我可能遗漏的任何明显内容。 以下是相关的 JPA 实体。地址未列出,但它是一个非常简单的实体,具有一个名为 id 的 @Id。 ShipTo
我们的系统中有两个实体,如下所示: Invoice:[InvoiceID, OrgID] 是表示为 bean 的主键,并使用 @IdClass 注释与 Invoice 相关联 WorkflowStat
场景:我遇到了一些在事务中将 JPA 与 JDBC 混合的代码。 JDBC 正在对基本上是空白行的表执行 INSERT,将主键设置为 (SELECT MAX(PK) + 1) 并将 middleNam
我有一个包含 3 个表的数据库:类别、项目、关系。 categories 包含类别。商品存储在items中,relation是一个绑定(bind)表,它存储了产品id和类别id或类别。 对于给定的项目
问题 当我尝试导入 CSV 文件时,我收到 key “PRIMARY”的重复条目“x-x-xx-x-x-x” - PK 错误。 PK 本身是两个连接的 varchar。据我所知,连接永远不会重复。 我
我正在尝试使用连接从两个大表中进行选择: EXPLAIN SELECT SQL_NO_CACHE e.* FROM `table_A` e JOIN (SELECT id FROM
我有这个 post_list.html 文件:(忽略第二个 'blog:post_detail' url) {% for post in post_list %} {{ post.title }}
我需要使用 JPA 处理现有数据库表。这些表使用复合主键。外键属性与表的主键重叠。 简化示例,每个“订单”都有许多“OrderItems” Table Order
据我所知,每当我在 JPA/Hibernate 实体内的 Long 字段上使用 @Id 和 @GeneratedValue 时,我实际上是在使用代理键,我认为这是定义主键的一种非常好的方式,考虑到我在
所以我有这段代码: request = self.factory.get(reverse('portal-edit-automation', args=(self.rule.id,))) respon
当在MySQL中使用InnoDB存储引擎时,如果在创建表时不指定PRIMARY KEY,则使用隐藏唯一索引作为聚集索引。由于数据字典上的互斥锁,我了解到这些隐藏索引可能会导致争用。 我的问题是 - 如
我正在尝试删除 table1 中与 table2 中具有匹配 PK 的所有行。尽管我的 WHERE 子句使用了键,但我收到错误 1175。我熟悉切换安全模式,但这不应该成为问题,因为我的 WHERE
我正在尝试更新具有外键字段的 View 的记录,因此出现错误,因为我尝试更新没有外键字段的另一个模型并且效果很好。 还有其他类似的问题,但就我而言,我通过了 pk。 urls.py urlpatte
Beeferman 的 PK 和 WindowDIFF 的 Python NLTK 实现从两者的 python segeval 实现中得到完全不同的结果。 使用相同的参数。 hyp: 01001000
我是一名优秀的程序员,十分优秀!