【发布时间】:2014-04-28 11:27:07
【问题描述】:
我的申请涉及测试,有三种不同的 测试:考试、目标和自定义。这是三个模式(有一些 对于这个简化的示例,每个列中都缺少列)
CREATE TABLE [dbo].[Exam] (
[ExamId] INT IDENTITY (1, 1) NOT NULL,
[SubjectId] INT NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
...
);
CREATE TABLE [dbo].[Objective] (
[ObjectiveId] INT IDENTITY (1, 1) NOT NULL,
[SubjectId] INT NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
...
)
CREATE TABLE [dbo].[Custom] (
[CustomId] INT IDENTITY (1, 1) NOT NULL,
[SubjectId] INT NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
...
)
其中任何一个都可以在 Test 表中有记录:
CREATE TABLE [dbo].[Test] (
[TestId] INT IDENTITY (1, 1) NOT NULL,
[ExamId] INT NOT NULL,
[Title] NVARCHAR (100) NULL,
[Status] INT NOT NULL
);
但是我该如何映射呢?上面的测试表只有一个 ExamId,因为原来 Exam 是我唯一的来源。现在我有了三个来源,那么如何将其他两个实体 Objective 和 Custom 链接到 Test 表?
【问题讨论】:
-
将
OjectiveId和CustomId列添加到Test怎么样? -
是的,这是一种解决方案,但我不确定这是否是一个擅长数据建模/规范化的人选择的解决方案。我希望有一些专家的选择,因为我认为这一定是一个相当普遍的问题。
-
为什么是三张表?如果它们都共享相似的架构,
Exam、Objective和Custom是否应该不是出现在单个表的列 中的值?如果你正在为一个组织建模,你会拥有MaleEmployees和FemaleEmployees表吗? -
@Damien_The_Unbeliever - 表都不同,如问题“对于这个简化的示例,每个列都缺少一些列”中所述
-
不清楚每个表中的“缺失列”是相同还是不同。
标签: asp.net sql sql-server entity-framework normalization