如何优化此数据库设计?

时间:2012-09-17 10:26:08

标签: database-design

我需要创建的数据库包含车辆跟踪系统的数据。因此,有几辆车不断向我的网站发送数据(大约20个参数),这些数据将这些值存储在数据库中。

车辆的参数包括车辆编号和硬件ID为常数,其余部分保持不变。因此,从一辆车上,这两个参数总是不变的。

我将在此数据库中有另一个表,其中包含用户的登录凭据,我想在登录表中使用车辆编号(主键)创建两个表之间的链接,并在表中包含车辆编号参数。

由于车辆编号栏是冗余的,我不能将其作为主键。 所以我想知道的事情:

  
      
  1. 我可以通过哪种方式实现表格之间的链接
  2.   
  3. 是否有一个好方法,以便我不会多次存储此车辆编号和硬件ID。
  4.   
  5. 我应该将每辆车的数据存储在单独的表中而不是一张表中吗?
  6.   

P.S:这是我第一次设计数据库,因为我一直都是程序员,所以期待好的建议。

1 个答案:

答案 0 :(得分:1)

将车号放入登录凭证可能是一个非常糟糕的主意。我不知道你的用户是谁,但我不想使用一个强迫我在购买或出售汽车时更改登录信息的网站。那我的历史呢?我会失去所有这些吗?

主键中的业务逻辑意味着糟糕的设计。

创建代理主键并使用它来加入车辆。单个用户可能有很多车辆,因此将外键从VEHICLE表放到USER表中。

如果车辆数据是1:1,则将车辆数据放在单独的表中是没有用的。它不会改变除两个值之外的所有值都在变化的事实。

如果您的要求包括保留变更历史,您就会重新考虑这个想法。既然你没有提到任何关于它的事情,我只是在这里猜测。

您提出的任何问题都不会对效率或应用速度产生任何影响。您没有提供足够的细节以允许某人对您的设计产生影响。此时你已经对早熟优化感到内疚。