【发布时间】:2021-04-22 02:57:42
【问题描述】:
我进入了数据库和规范化。我仍在尝试理解规范化,但我对它的用法感到困惑。我将尝试用这个例子来解释它。 每天我都会在一个表中收集如下所示的数据:
表格:CAR_ALL
| ID | DATE | CAR | LOCATION | FUEL | FUEL_USAGE | MILES | BATTERY |
|---|---|---|---|---|---|---|---|
| 123 | 01.01.2021 | Toyota | New York | 40.3 | 3.6 | 79321 | 78 |
| 520 | 01.01.2021 | BMW | Frankfurt | 34.2 | 4.3 | 123232 | 30 |
| 934 | 01.01.2021 | Mercedes | London | 12.7 | 4.7 | 4321 | 89 |
| 123 | 05.01.2021 | Toyota | New York | 34.5 | 3.3 | 79515 | 77 |
| 520 | 05.01.2021 | BMW | Frankfurt | 20.1 | 4.6 | 123489 | 29 |
| 934 | 05.01.2021 | Mercedes | London | 43.7 | 5.0 | 4400 | 89 |
在此示例中,我每天获取数千辆汽车的数据。 ID、CAR 和 LOCATION 永远不会改变。所有其他数据每天都可以有其他值。如果我理解正确,规范化将使它看起来像这样:
表:CAR_CONSTANT
| ID | CAR | LOCATION |
|---|---|---|
| 123 | Toyota | New York |
| 520 | BMW | Frankfurt |
| 934 | Mercedes | London |
表格:CAR_MEASUREMENT
| GUID | ID | DATE | FUEL | FUEL_USAGE | MILES | BATTERY |
|---|---|---|---|---|---|---|
| 1 | 123 | 01.01.2021 | 40.3 | 3.6 | 79321 | 78 |
| 2 | 520 | 01.01.2021 | 34.2 | 4.3 | 123232 | 30 |
| 3 | 934 | 01.01.2021 | 12.7 | 4.7 | 4321 | 89 |
| 4 | 123 | 05.01.2021 | 34.5 | 3.3 | 79515 | 77 |
| 5 | 520 | 05.01.2021 | 20.1 | 4.6 | 123489 | 29 |
| 6 | 934 | 05.01.2021 | 43.7 | 5.0 | 4400 | 89 |
我有两个问题:
-
为 DATE 创建一个额外的表有意义吗?
-
通过收集的数据可能会包含新车。 对于插入
CAR_MEASUREMENT的每一行,我都必须检查ID 是否已经在CAR_CONSTANT中。如果它不存在,我必须插入它。 但这意味着我必须每天检查数千次CAR_CONSTANT。如果我只是将整个数据作为 1 行插入到CAR_ALL中会不会更有效率?我不必每次都检查CAR_CONSTANT。
【问题讨论】:
标签: database database-design database-normalization