相关疑难解决方法(0)

在 SQL Server 中的表上有多个可为空的 FK 是否被认为是一种不好的做法

在我的 SQL Server 数据库结构中,我有 3 种类型的产品,它们需要有关订单的不同信息。因此,我创建了一张Customers表和三个不同的订单表:OrdersForProductAsOrdersForProductBsOrdersForProductCs。所有订单表在表上都有一对多的关系Customers

我还有另一张桌子,Payments里面有付款细节。但我在这里对如何构建它有疑问。

由于我有多种产品类型,并且客户可能同时订购多种产品,因此我需要将这三个订单表关联到Payments表。

另一个问题是客户可能只订购一种产品。因此,表上的 FK 列Payments需要为nullable.

我的问题是nullable,从长远来看,这些FK 专栏是否会让我头疼?一般来说,在表上拥有可为空的 FK 列是否被认为是一种不好的做法?

sql-server-2008 database-design sql-server sql-server-2008-r2

14
推荐指数
2
解决办法
4097
查看次数

SQL Server 主键/聚集索引设计决策

寻找有关表/索引设计决策的一些建议,我必须对一些必须从现有的基于 4GL 的数据库移植到 SQL 服务器的表做出决定。

我有一个经常插入(从未更新)的产品历史记录表,并且该表具有这种结构

  1. 产品无字符串(20)
  2. 创建日期时间日期时间
  3. 描述字符串(100)

目前,主键由 ProductNo 和 CreatedDateTime 的组合组成,试图定义唯一的索引键。每个产品号我们可以有很多记录。

我将创建一些 1 对 1 相关表,并且不想将 productno 和 createddatetime 字段都携带到相关表中以充当外键。我也认为这种组合有点脆弱,以保证唯一性。

因此,我计划向表 'ProductHistoryPK' 添加一个新字段,作为递增的 Int 或 SequentialGuid 作为相关表的主键和外键。

在索引方面我正在考虑创建

  1. 新 ProductHistoryPK 字段上的非聚集主键。
  2. ProductNo 字段上的聚集索引,因为这是经常搜索的字段。

关于这个的任何想法或指示?

谢谢...

database-design sql-server

6
推荐指数
2
解决办法
4232
查看次数