第二范式/识别关系/ FK

时间:2018-08-20 15:04:05

标签: database-design entity-relationship-model

我有点不喜欢数据库设计,因此如果答案很明显,请提前原谅我

我正在设计的数据库以最简单的形式包含以下关系和属性:

员工:EmployeeId(PK),EmployeeName
访问:VisitId(PK),开始时间,结束时间,优先级
站点:SiteId(PK),站点名称

Employee / Visit具有N:M关系,因为许多员工可以进行访问,并且许多员工可以进行访问。结果是:

EmployeeVisit:EmployeeId(PK / FK),VisitId(PK / FK)

...位于两个关系之间

访问/站点具有1:N的关系,因为每个站点可以被多次访问,但是每次访问只能是一个站点。

此外,由于没有网站,访问就不存在。

据我所知,它至少为1NF。 但是我认为它可能违反2NF,这就是原因:

访问:VisitId(PK)SiteId(PK / FK),开始时间,结束时间,优先级

2NF指出,所有非键属性必须依赖于主键的所有部分。在这种情况下,这意味着不是JUST VisitId和JUST SiteId。但是StartTime,EndTime或Priority似乎只能通过VisitId唯一标识。这些字段在功能上是否取决于SiteId(PK / FK)?

同时,由于存在标识关系,SiteId必须构成主键的一部分。

该如何解决? 我已经考虑过在访问和网站之间创建一个进一步的表,如下所示:

VisitedSite:VisitedId(PK / FK),SiteId(PK / FK)。

我还考虑过将Visit表中的SiteId更改为非主键,但仍将其设置为非null。

我也有可能忘记了ER数据库设计的基础知识...

ER Diagram

0 个答案:

没有答案