Sql 一个表中有多个可为空的外键
我正在为促销设计一张桌子。我可以推广三种类型的实体:文章、照片和论坛线程 最初,我考虑创建一个表,其中包含三个外键,其中只设置一个外键Sql 一个表中有多个可为空的外键,sql,sql-server,database-design,foreign-keys,Sql,Sql Server,Database Design,Foreign Keys,我正在为促销设计一张桌子。我可以推广三种类型的实体:文章、照片和论坛线程 最初,我考虑创建一个表,其中包含三个外键,其中只设置一个外键 promotion: - id - id_article - id_photo - id_thread - promotion_type - ... other properties article: - id - .. other properties photo: - id - .. other properties thread:
promotion:
- id
- id_article
- id_photo
- id_thread
- promotion_type
- ... other properties
article:
- id
- .. other properties
photo:
- id
- .. other properties
thread:
- id
- .. other properties
这不是一个好办法吗?在最初的想法之后,看起来这里确实可以做一些“更漂亮”的事情<代码>升级类型指示应加入哪些外键表 只需添加一列,而不是3列(id\u文章、id\u照片、id\u线程)。。例如,将其称为PromotionID,然后仍然可以使用PromotionType列来确定要绑定的表 促销表如下:-促销: -身份证 -促销id(id_文章、id_照片或id_线程) -推广型
- ... 其他属性
promotion\u type
似乎是多余的。通过设计它可以节省一些连接时间,因为我们不必连接所有表,只连接需要的表。这还可以由哪个id的值正确确定?这似乎是一个很好的观点,sql server不会尝试加入null值,即使我在查询中请求它。我不想削弱数据完整性。使用FK,sql server将检查另一个表中是否存在此id。