7

我被要求描述这个数据结构有什么问题,以及我将如何改进它。

下面是数据结构:

图片

这是我到目前为止所拥有的:

  • 车价仅在车在陈列室时才设置,将车价放在车表中会更有意义

  • 在 Car Table 中存储 NULL 数据是没有意义的,最好有类似这样的布局:

    车桌

  • 需要有一个数量标题来显示陈列室中有多少辆特定的汽车,因为有些陈列室有多个相同的汽车

我画的新表还有重复的数据,我依稀记得画数据结构的时候是no no,所以我想我需要做第三张表吗?我真的不确定……

我只需要一些关于当前数据结构有什么问题的帮助,如果有任何方法可以改进它,我们将不胜感激。

4

3 回答 3

8

一个问题是 Car 表存储了两种不同的东西——它存储了品牌,它存储了模型。

所以你应该把它分开,比如:

使:列makename,makecode

模型:列 makecode(make 的外键)、modelname、modelcode

而且现在陈列室的桌子只会和模型有关,所以不能误引用一个牌子。

由于一个模型可以有许多与之相关的陈列室表格行,因此您无法有意义地合并这两个表格,因此请将它们分开并从那里开始。

于 2013-02-10T22:37:12.053 回答
4

看起来 Car 结构同时存储了汽车制造商和汽车模型。这至少应该引起一些警报。福特、大众和标致等汽车制造商都有自己的MakeCode. 嘉年华和高尔夫等车型都有自己的ModelCode.

在原始结构中,汽车模型通过 引用其制造ParentCarId复制MakeCode. 汽车制造商不是特定型号,它们的 和 被分配了空ModelCodeParentCarId

ParentCarId没有任何意义,汽车成为另一个汽车的孩子意味着什么?相反,汽车属于一个品牌,该品牌是由另一个表表示的另一个实体。此外,汽车不应该有MakeCode,因为这是它们所属品牌的属性。显然,品牌和型号非常不同,应该在不同的表格中表示。

将该表一分为二是有意义的:一张用于品牌,一张用于型号。Makes 会有一个ID, aName和 a MakeCode。模型将具有 a ID、 a Name、 aModelCode和 a ( aMakeId的外键)。IDMake

于 2013-02-10T22:41:51.140 回答
2

你是对的,重复数据是禁止的。

我会将“陈列室”更改为“模型”,因为模型可以有各种子类别。IE Golf TDI vs GTI 等。...并且基本价格 (MSRP) 将适用于该模型。陈列室状态对定价没有意义 - 有广告但不在陈列室或地段上的地段。

如果数据支持的话,我认为拥有 NULLable 列没有任何问题。两者都可以,一旦您拥有大量数据,您就可以进行基准测试,看看什么最适合您。但优化之后,而不是之前。

于 2013-02-10T22:35:48.857 回答