交叉引用表

时间:2013-02-05 22:16:32

标签: sql sql-server

我有3个表,章节,子章节和分区。这些表中的每一个都有额外的记录,我想将它们存储在一个名为“Sections”的表中。它们都是1:很多关系 我的问题是在这里建立交叉引用的最佳方法是什么?这就是我目前所拥有的:

Chapter table:
     chapterID int
     partID int
     chapterNumber varchar
     chapterName varchar
SubChapter table:
     subChapterID int
     chapterID int
     subChapterNumber varchar
     subChapterName varchar
Division Table:
     divisionID int
     subChapterID int
     divisionNumber varchar
     divisionName varchar

Section Table:
     sectionID int
     parentID int
     parentType int (1 = chapter; 2 = subchapter; 3 = division)
     sectionNumber varchar
     sectionName varchar

我遇到的问题是FK限制。我应该取消外键吗?如果我这样做或者甚至会成为一个问题,我该怎么做才能提高效率?

对于那些想知道的人,我的要求是在数据库中访问州和联邦管理代码的某些方面,以填充Intranet网页上的下拉菜单。

1 个答案:

答案 0 :(得分:0)

就个人而言,我会为每个父类型创建一个section表,然后你的外键才能正常工作。然后我会创建一个视图来连接所有连接,以减轻加入这六个表的重复性。

我当然可以欣赏你现在拥有的设计,但拥有FK可以很好地防止孤立的数据。另一种方法是在Chapters,SubChapters和Divisions中添加删除触发器,以便在有相应的Sections记录时转义删除。