将一个表链接到另一个表?

时间:2009-08-28 05:42:37

标签: sql tsql sql-server-express

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

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

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

2 个答案:

答案 0 :(得分: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)
)

答案 1 :(得分:3)

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

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

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

PROGRAM_CATEGORIES_XREF

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

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