【发布时间】:2014-02-27 23:04:15
【问题描述】:
如何使用 microsoft sql server 为弱实体创建表?
弱实体包含部分键,在ER图中用虚线表示。
我的问题是,如何为这个弱实体创建一个表,包括它的部分键。
【问题讨论】:
标签: sql-server database-design entity-relationship database-schema
如何使用 microsoft sql server 为弱实体创建表?
弱实体包含部分键,在ER图中用虚线表示。
我的问题是,如何为这个弱实体创建一个表,包括它的部分键。
【问题讨论】:
标签: sql-server database-design entity-relationship database-schema
例子:
第一个实体:Book(BookId - PK, Titlle)
第二个实体(弱实体):Chapter(No, Title)(此时 Chapter.No 不是主键,因为一本书或多本书的章节可能具有相同的 No)。
为了创建 weak 表,我将 BookId 添加到 Chapter 表中,并且,我将创建一个复合唯一键和一个简单的 PK:
create table dbo.Chapter(
Id int identity primary key,
BookId int not null referenced dbo.Book(BookId),
No tinyint not null,
unique(BoolId, No),
Title nvarchar(100) not null
);
为dbo.Chapter定义一个简单的PK的原因是:
1) 复合 PK 可能会迫使我定义复合 FK 和
2) FK 连接消除需要一个简单的 FK。
【讨论】:
dbo.Chapter.Id 是一个Surrogate key。是的。