设计用于ASPX的大型表的最佳方法

时间:2014-08-04 10:43:33

标签: asp.net sql-server database-design relational-database foreign-key-relationship

我已经发布了几次关于链接表格以显示不同的结果,并且一些非常优秀的人帮助了我。

但它开始让我想知道我设计我的表是错误的,以解决这些问题。

例如我有2个表tblrunplan和tblplaces

tblrunplan有20个访问字段(可以是重复的位置),每个字段都带有一个placeID号 tblplaces包含每个地方的所有细节。

在我的头脑中,这是正常的,这是正确的吗?

如果是,那么在显示运行计划信息时,我显然不想显示PlaceID号码,但是有来自tblplaces的地名。

我该怎么做?没有20个tblplaces实例打开,每个实例都有一个连接。

TBLPLACES:
PlaceID
Place Name
Lat
Long
Address 1
Address 2
Town
Contact Number

TBLRUNPLAN:
RunID
Visit1
Visit2
Visit3
Visit4
Visit5
Visit6
etc.

1 个答案:

答案 0 :(得分:0)

正如我的评论中所述,我将TblRunPlan替换为Run表(ID,日期,与运行相关的额外数据)以及一个新的RunPlace表作为记录每次运行访问的地方的方法(id,RunID,PlaceID,VisitOrder)。

这将确保您拥有灵活且可扩展的架构。您拥有的RunPlan表的问题是您必须为每次运行的一组(20)个地点预留空间。即使你每次运行都不会访问20个地方,你仍然会占用存储空间。

如果您将来决定每次运行访问25或15个位置,则不必更改架构中的内容,而使用现有架构则必须添加或删除列。

然后,您可以使用以下内容检索信息:

SELECT
   R.RunID, R.date, RP.VisitOrder, P.Place_Name
FROM 
    Run R
    JOIN RunPlace RP ON R.RunID = RP.RunID
    JOIN Place P ON RP.PlaceID = P.PlaceID