0

我正在尝试在我的 SQL Express 服务器中设置一些表,并且我想做一些事情来实现这一点:

create table programs (
    progid int primary key identity(1,1),
    name nvarchar(255),
    description nvarchar(500),
    iconFile nvarchar(255),
    installScript nvarchar(255)
)

但是我希望每个“程序”都有一组与之关联的类别,最好的方法是什么?我在某处读到,将多个项目存储在单个类别条目下并不是一个好主意。

4

2 回答 2

4

为这样的类别创建另一个表:

create table categories(
   catid int not null primary key identity,
   caterogy varchar(255) not null
)

然后使用第三个表存储与程序相关的类别:

create table progcategory(
    progid int foreign key references programs(progid) not null,
    catid int foreign key references categories(catid) not null,
    primary key(progid, catid)
)
于 2009-08-28T05:49:50.597 回答
3

首先,定义一个表(假设您还没有)以包含至少包含 id 和 value 列的类别列表。

一个程序可以只与一个类别相关联吗?如果是,则向 PROGRAMS 表添加一列,并在 PROGRAMS 中的类别列与 CATEGORIES 表中的 id 列之间创建外键引用。

如果您希望能够将一个或多个类别与程序相关联,则需要一个附加表:

PROGRAM_CATEGORIES_XREF

  • PROG_ID (pk, fk)
  • CATEGORY_ID (pk, fk)

在这种情况下,由于 PROG_ID 列之间的链接,您不需要向 PROGRAMS 表添加列。

于 2009-08-28T05:49:18.490 回答