問94
頻出度★★★
商品の仕入状況を管理している関係データベースの“仕入一覧”表を正規化して,“仕入”表と“商品”表に分割したい。分割後の二つの表に共通して必要なフィールドとして,最も適切なものはどれか。ここで,仕入れは一度に一つの商品だけを仕入れることとし,仕入番号で一意に識別できる。また,商品は商品番号で一意に識別できる。 仕入一覧
| 仕入番号 | 商品番号 | 商品名 | 個数 | 単価 | 支払方法 | 納品日 |
|---|
这道题的解析和你的作答记录。
商品の仕入状況を管理している関係データベースの“仕入一覧”表を正規化して,“仕入”表と“商品”表に分割したい。分割後の二つの表に共通して必要なフィールドとして,最も適切なものはどれか。ここで,仕入れは一度に一つの商品だけを仕入れることとし,仕入番号で一意に識別できる。また,商品は商品番号で一意に識別できる。 仕入一覧
| 仕入番号 | 商品番号 | 商品名 | 個数 | 単価 | 支払方法 | 納品日 |
|---|
进货编号是唯一标识「进货」表的主键,只属于「进货」表。由于商品是用商品编号来标识的,把进货编号放到「商品」表里没有意义,因此它不会成为两个表的共同字段。
支付方式是附属于每一次进货的信息(从属于进货编号),只会进入「进货」表。它不是商品本身的属性,所以不会出现在「商品」表中,因此不是共同字段。
正解 将「进货一览」表拆分后,会得到由商品编号唯一确定的「商品」表(商品编号、商品名、单价),以及由进货编号唯一确定的「进货」表(进货编号、数量、支付方式、交货日期)。但仅仅这样,「哪次进货进的是哪种商品」这一对应关系就会丢失,无法还原原来的表。因此要在「进货」表一侧把商品编号作为外键保留。这样一来,商品编号在「商品」表中是主键、在「进货」表中是外键,同时出现在两个表里,借助它就能把两个表连接起来,重现原来的「进货一览」。所以两个表共同需要的字段是商品编号(ウ)。
商品名是从属于商品编号的商品固有属性,只会进入「商品」表。它不是连接两个表的键,因此作为两个表共同保留的字段并不合适。