- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下图是简化图
TABLE : EMPLOYEE (TENANT_ID is a FK)
ID | NAME | TENANT_ID
1 | John | 1
TABLE DEPARTMENT
ID | NAME | TENANT_ID
1 | Physics | 1
2 | Math | 2
TABLE : EMPLOYEE_DEPARTMENTS (Join between employee and department)
ID | EMPLOYEE_ID | DEPARTMENT_ID
1 | 1 | 1
如果 EMPLOYEE 值用于 TENANT 1 而 DEPARMENT_ID 来自 TENANT 2,是否有方法无法将数据插入 EMPLOYEE_DEPARTMENTS?例如其中 employee_id=1 属于 tenant=1,department_id=2 属于 tenant=2
ID | EMPLOYEED_ID | DEPARTMENT_ID
2 | 1 | 2
有没有办法在应用程序或数据库级别防止此类数据插入。 PS> 没有使用触发器的余地,也不想使用触发器。
最佳答案
如果没有触发器,唯一的方法是复制租户 ID,使其出现在每个表中,并使用复合主约束或唯一约束以及复合外键。
例如如果您对 EMPLOYEE(TENANT_ID, ID)
和 DEPARTMENT(TENANT_ID, ID)
有一个 UNIQUE
约束,您可以添加一个 FOREIGN KEY (TENANT_ID, EMPLOYEE_ID) REFERENCES EMPLOYEE (TENANT_ID, ID)
和 FOREIGN KEY (TENANT_ID, DEPARTMENT_ID) REFERENCES DEPARTMENT (TENANT_ID, ID)
。
这要求连接表包含 TENANT_ID
。
我建议将 EMPLOYEE_DEPARTMENTS
的 PRIMARY_KEY
定义为 (TENANT_ID, DEPARTMENT_ID, EMPLOYEE_ID)
并去掉无用的代理键
,除非您的工具包/框架/ORM 没有它就无法应对。EMPLOYEE_DEPARTMENTS
表上的 ID
关于postgresql - 有什么方法可以根据数据值创建参照完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131876/
使用此类和映射: Public class Something { public int Id; public IList Similarthings { get; set; } }
我在Rails 3.2.2中,并且有一个Variant类: class Variant v2 v2.twin_variant => v1 这可能吗?我应该如何建立协会? 最佳答案 给定以下模型 cl
我计划建立一个新的SNS web应用程序,具有以下/跟随功能。我正在考虑使用Ruby on Rails+MySQL,但是我发现如果我使用它们,就需要在一些常用的特性上使用连接查询,比如显示您正在跟踪的
我正在尝试在 SQLAlchemy 中创建一个类似于多对多映射的社交网络。也就是说,我有一个 Character 类和一个 character_relations 交叉表来链接 Character 到
我是一名优秀的程序员,十分优秀!