我正在编写一个Web应用程序,它从一系列表单中获取用户输入(想想"向导")并在用户进行时将其存储在SQL数据库中。
我们假设他们代表具有地址的公司提交申请表。申请表还将包含支持信息的列表。
因此,简化的架构将有4个表(请注意,每个表都有很多其他要捕获的字段):
**ApplicationForm**
Id: PK
CompanyId: FK
**Company**
Id: PK
Address: FK
**Address**
Id: PK
**SupportingInfo**
Id: PK
ApplicationFormId: FK
用户首先启动申请表,在几个屏幕上填写一些重要的详细信息,然后添加公司详细信息,然后添加公司地址,最后添加支持信息列表。
鉴于我无法在一个插页中创建整个数据模型,我该如何保存用户'在他们浏览网页时输入?
当我保存ApplicationForm时,由于没有公司,我将违反FK。当我创建公司时,我将违反FK,因为以后只会保存地址。 (支持信息没有此问题,因为它具有多对一关系,并且FK始终有效。)
我想到了以下几点:
所有选项都有明显的缺点,最后两个选项对于一个简单的用户输入应用来说似乎有些过分。
如果这对答案有任何影响,我正在使用Entity Framework和SQL Server。 (我意识到NoSQL可能是一个建议,但我不能改变数据库。)