您好,我需要能够链接相关的应用程序,并试图找出保存,更新和删除的最佳实践表结构。
我有下表:
APPLICATION{ApplicationId, Name, Description}
我需要能够说应用程序1链接到2和3.因此,如果打开应用程序2,您会看到它已链接到应用程序1和3.然后应用程序3链接到1和2。 / p>
链接表的最佳表结构是什么?
修改
我的主要查询是我需要每个连接的记录,即对于应用程序1,2和3,我需要6条记录吗? 1-> 2,1-> 3,2-> 1,2-> 3,3-> 1,3-> 2'-如果不是,返回给定ID的所有链接应用程序的最佳查询是什么?
答案 0 :(得分:5)
application_association
-------------------------
application_1_id
application_2_id
relationship_type
begin_dt
end_dt
使用relationship_type指定应用程序的关联方式,并使用日期指定该关系何时有效
修改强>:
也许对你使用“链接”这个词有一个集体的误解。如果你的意思是“分组”,那么你可以考虑如下结构:
group
------------------
group_id
name
application_group
-------------------
application_id
group_id
在这里,你可以将应用程序放入同一个“组”中,然后当它们位于同一组时再查询它们。
答案 1 :(得分:1)
另外两张桌子。
一个用于关联类型:
create table ApplicationAssocType
(
Id int identity(1,1)
,[Description] varchar(128) not null
)
一个关联协会本身:
create table ApplicationAssoc
(
Id int identity(1,1)
,ApplicationId1 int not null references Appliation(ApplicationId)
,ApplicationId2 int not null references Appliation(ApplicationId)
,ApplicationAssocTypeId int not null references ApplicationAssocType(Id)
)
[编辑]为了澄清,您需要为每个链接添加记录。将任何字段添加到ApplicationAssoc,这些字段与指定的应用程序之间的关系有关。
答案 2 :(得分:0)
CREATE TABLE AppLink (App1 int, App2 int)
对于尽可能多的关系,这是无限可扩展的。
答案 3 :(得分:0)
应用程序实体与其自身有多对多的关系,因此您需要另一个表来存储该映射:
APP_Relationship (ApplicationId, RelatedApplicationId)
答案 4 :(得分:0)
LinkedApplication{ID, ApplicationId, LinkedApplicationId}
答案 5 :(得分:0)
您需要一个链接表,它基本上允许您在Application
与其自身之间建立多对多关系。
CREATE TABLE lnkApplication
(ApplicationID1 int, ApplicationID2 int)
GO
ALTER TABLE [dbo].[lnkApplication] WITH NOCHECK
ADD CONSTRAINT [FK_ApplicationLink1] FOREIGN KEY([ApplicationID1])
REFERENCES [dbo].[tblApplication] ([ApplicationID])
GO
ALTER TABLE [dbo].[lnkApplication] WITH NOCHECK
ADD CONSTRAINT [FK_ApplicationLink2] FOREIGN KEY([ApplicationID2])
REFERENCES [dbo].[tblApplication] ([ApplicationID])
GO