繁体   English   中英

SQL表设计问题

[英]SQL Table Design Issue

因此,目前我正在现有数据库中构建一组表,并且遇到了一个奇怪的问题。

首先,有问题的表称为OrganizationsApplicationsPostOrganizationsApplicants

Organizations是一个预先存在的表,其中已经填充了有关组织信息的大量数据,这些数据已在另一个门户网站上以另一种形式填写。 编辑:我不能编辑此表。
应用程序是记录用户以网站的应用程序形式输入的所有信息的表。 这是一张新桌子。
PostOrganizationsApplicants基本上是组织的副本。 这也是一个新表。

流程如下:
1.转到网站并在两个不同的Web表单之间进行选择, 表单A适用于“ 组织”表中的公司, 表单B适用于不在该表中的公司。
2a。 如果选择了表格A,则应用程序中的许多字段将由于先前提交而被自动填充。
2b。 如果选择表格B,则公司必须从头开始,并从头开始填写整个应用程序。
3.任何B表格申请人都必须进入PostOrganizationsApplicants表。

现在,我对SQL和数据库管理非常陌生 ,因此听起来有些愚蠢,但是当我将OrganizationsPostOrganizationsApplicants表链接到Applications表时,OrganizationsID列和PostOrganizationsApplicantsID列的FK将有很多空白。
这是好习惯吗? 有没有更好的方法来构造我的表? 我一直在为此绞尽脑汁,只是想不出更好的方法。

不,允许外键列使用NULL值不一定是坏习惯。

如果一个实体的实例与另一个实体的实例没有关系,则将规范存储在外键列中为NULL。

根据对用例的描述,“ Form A” Applications不会与Organizations的行或PostOrganizationsApplicants的行PostOrganizationsApplicants


重要的是获得正确的基数。 给定的Applications可以与多少个Organizations相关? 零? 一? 超过一个? 反之亦然。

如果关系是多对多的,那么通常的模式是引入第三个关系表。

当与另一个实体的关系是例外而不是规则时,我们也将为非常稀疏的关系实现关系表,这种情况很少出现。


我假设您要引用的OrganizationsID列位于PostOrganizationsApplicants表中(这意味着PostOrganizationsApplicants可以与(最多)一个Organizations相关联。

我还假设在Applications表中有PostOrganizationsApplicantsID列,这意味着Applications一个实例最多可以与一个PostOrganizationsApplicants

底线是,具有“零或一对多”关系是有效的,只要该关系支持业务模型的适当表示即可。

为什么不只是在“组织”表中添加一列来表明该组织是“职位”类型的组织,并为B型申请者设置它呢? -然后,您的所有组织都在一个表中-具有一个属性来指示它们来自何处。

如果可以向组织添加新记录(希望您可以),则可以从组织创建FK作为PostOrganizationsApplicants的 PK。 因此,如果组织PostOrganizationsApplicants中具有相应的记录-这就是“发布”!

谢谢大家,我想我受您所有答案的启发找到了最有效的方法。

我的解决方案是在其他人遇到类似问题的情况下...

首先,我将通过创建“链接”表将PostOrganizationsApplicants的PK设置为组织的FK。 然后,我将在PostOrganizationsApplicants中添加一列,以获取有关他们是否从其他门户网站完成表单的真/假值。 然后,我将在表单中询问一个问题,他们是否已经完成了该表单的其他版本。 如果布尔值是true,则将这些行指向Organizations表以自动填充表单。

再次感谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM