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)
)

ただし、各「プログラム」に一連のカテゴリを関連付けたいのですが、これを行うための最良の方法は何ですか?1つのカテゴリエントリに複数のアイテムを保存するのは得策ではないことをどこかで読みました。

4

2 に答える 2

4

次のようなカテゴリの別のテーブルを作成します。

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

次に、3 番目のテーブルを使用して番組に関連するカテゴリを保存します。

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 列を持つカテゴリのリストを含むテーブルを (まだ定義していないと仮定して) 定義します。

プログラムを 1 つのカテゴリだけに関連付けることはできますか? はいの場合、列を PROGRAMS テーブルに追加し、PROGRAMS のカテゴリ列と CATEGORIES テーブルの id 列の間に外部キー参照を作成します。

1 つまたは複数のカテゴリをプログラムに関連付けたい場合は、追加のテーブルが必要になります。

PROGRAM_CATEGORIES_XREF:

  • PROG_ID (pk、fk)
  • CATEGORY_ID (pk、fk)

この場合、PROG_ID 列間のリンクにより、PROGRAMS テーブルに列を追加する必要はありません。

于 2009-08-28T05:49:18.490 に答える