回答

收藏

如何建模引用SQL中其他几个实体之一的一个实体?

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-12

我正在生产数据库的一部分。业务部门接受自定义订单,并建立符合规范的项目。它们只构建了几个(假设3-10)对象,但每个对象的记录规格不同。我想要一个主制表(mfgorders),列出了一些常见的字段,然后让它引用实体的特定规格表。我并不完全相信这是正确的方法。事实上,我一点也不自信。我所有的其他建模都很简单,但它困扰着我。7 z2 @: p1 z+ T) t
这是SQL:
  E2 J5 N: y; G; }. H- I5 S0 T& vCREATE TABLE dbo.mfgorders (MfgOrderId int NOT NULL                                       IDENTITY              OrderId int NOT NULL,                       LineNbr tinyint NOT NULL,                       MfgTypeId tinyint NOT NULL,                       ItemDescription varchar          ManufacturingCost smallmoney,                       CONSTRAINT PK_mfgorders PRIMARY KEY (MfgOrderId)) ;--OrderId   LineNbr are a composite referencing a row on a lineitem table (not depicted here)CREATE TABLE dbo.mfgorders_entity1 (MfgOrderId int NOT NULL,                                                                                                                            EntitySize decimal                    Width decimal                      Thickness decimal                      CONSTRAINT PK_mfgorders_entity1 PRIMARY KEY (MfgOrderId)) ;CREATE TABLE dbo.mfgorders_entity2 (MfgOrderId int NOT NULL,                               Height decimal                      Width decimal (5,2)             Thickness decimal (4,2)             RotationSetting decimal                       FinishedHeight decimal (5,2)             FinishedWidth decimal (5,2)             FinishedThickness decimal (4,2)             CONSTRAINT PK_mfgorders_entity2 PRIMARY KEY (MfgOrderId)) ;CREATE TABLE mfg_types (MfgTypeId tinyint NOT NULL,                                                                            ItemName varchar (32) NOT NULL,                   ItemDescription nvarchar (64) NULL,                   IsActive bit NOT NULL                                 CONSTRAINT DF_mfg_types_IsActive DEFAULT 1、               SortOrder int NULL,                   CONSTRAINT PK_mfg_types PRIMARY KEY (MfgTypeId)) ;ALTER TABLE dbo.mfgorders_entity1 ADD CONSTRAINT FK_mfgorders_entity1_mfgorders FOREIGN KEY (MfgOrderId) REFERENCES dbo.mfgorders (MfgOrderId) ON UPDATE NO ACTION ON DELETE CASCADE;ALTER TABLE dbo.mfgorders_entity2 ADD CONSTRAINT FK_mfgorders_entity2_mfgorders FOREIGN KEY (MfgOrderId) REFERENCES dbo.mfgorders (MfgOrderId) ON UPDATE NO ACTION ON DELETE CASCADE;ALTER TABLE dbo.mfgorders ADD CONSTRAINT FK_mfgorders_mfg_types FOREIGN KEY (MfgTypeId) REFERENCES dbo.mfg_types (MfgTypeId) ON UPDATE NO ACTION ON DELETE CASCADE;模型暗示一个entity1和entity可以有相同的MfgOrderId,当然,我不想这样做。MfgOrderId只引用实体之一。我想我想用它。mfg_types指向正确的实体表,但我认为模型已经关闭,我会去SO为了增加几年的生活,社区咨询。
8 P0 h' n3 q0 N/ N( p3 L  ?/ W, H问候,约翰
# I" i7 g7 {* z, A; X! M% _6 k                                                               
7 v& i! ]# `2 Q    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则