Sql 如何实现表之间的正确关系? 各位好,,

Sql 如何实现表之间的正确关系? 各位好,,,sql,asp.net,database,relational-database,entity-framework-core,Sql,Asp.net,Database,Relational Database,Entity Framework Core,我正计划为我的公司更改当前的后端。我计划使用和创建新的web服务。老实说,我对建筑一窍不通 我不知道如何实现实体框架中表之间的关系。员工职位不止一个。我不想为这个架构实现一个角色层。所以我创建了如下表格:员工,收银员,打包工。。。等等,并这样设计:员工(EmployeeId,EmployeeName,…)收银员(EmployeeId,Fee,…) 但我在某个地方读到过,在sql中无法使用1对1关系。那么,我如何实现这种关系呢 ER图: 如果您使用的是SQL Server,那么我同意,不可能有真正

我正计划为我的公司更改当前的后端。我计划使用和创建新的web服务。老实说,我对建筑一窍不通

我不知道如何实现实体框架中表之间的关系。员工职位不止一个。我不想为这个架构实现一个角色层。所以我创建了如下表格:员工收银员打包工。。。等等,并这样设计:
员工(EmployeeId,EmployeeName,…)收银员(EmployeeId,Fee,…)
但我在某个地方读到过,在sql中无法使用1对1关系。那么,我如何实现这种关系呢

ER图:

如果您使用的是SQL Server,那么我同意,不可能有真正的1对1关系

关系必须是1:0..1,因为需要先插入一行,然后再插入另一行。在最短的时间内,关系将为1:0,然后将切换到1:1

要实现真正的1对1,您需要使用名为约束可延迟性的标准SQL功能。不幸的是,据我所知,此功能仅在PostgreSQL和Oracle数据库中可用。在这些数据库上,您可以真正拥有1:1的关系,因为约束不是在每个行插入上都有效,而是在事务结束时有效

话虽如此,我也不会太在意。如果您使用数据库事务执行插入,那么我不明白为什么这会导致任何问题。使用如下过程:

  • 启动事务

  • 在表
    Employee
    中插入

  • 插入表
    出纳

  • 提交事务


  • 这将确保您永远不会有没有相关表的悬而未决的员工。

    SQL中的1对1关系没有问题。你为什么这么说?@我在这里读过,我的意思是我很困惑。你创建的单独表似乎没有添加特殊属性。如果您需要这些数据,只需将单个表
    Employee
    ,其中属性
    Fee
    和属性
    Position
    映射到
    enum
    或FK,映射到描述职位的另一个表即可。@IvanStoev首先感谢您的帮助。我计划用映射枚举的方式。这只是问我问题的代表性数据。实际上,我已经将它们分成了几张表,因为系统中的所有员工都将访问该面板,并且可以访问对另一个员工的操作所做的更改。我认为控制这些逻辑比为所有员工职位实现一个完整的角色逻辑要容易得多。PS请不要通过评论澄清,编辑你的帖子。请仅为方便补充文本和/或为文本中无法给出的内容使用图像。使用编辑函数内联,而不是链接,如果你有代表-使你的文章自我包含。不要给出没有图例/键的图表。