【问题标题】:How to create a table for a weak entity using microsoft sql server which contains a partial key?如何使用包含部分键的 microsoft sql server 为弱实体创建表?
【发布时间】:2014-02-27 23:04:15
【问题描述】:

如何使用 microsoft sql server 为弱实体创建表?

弱实体包含部分键,在ER图中用虚线表示。

我的问题是,如何为这个弱实体创建一个表,包括它的部分键。

【问题讨论】:

    标签: sql-server database-design entity-relationship database-schema


    【解决方案1】:

    例子:

    第一个实体: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。

    【讨论】:

    • 谢谢。身份主键究竟是什么意思?是不是因为弱实体没有主键?
    • 参考:IDENTITY 列。 IDENTITY 列是 SQL Server 的自动递增值解决方案。因此,dbo.Chapter.Id 是一个Surrogate key。是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多