建议改进我的数据库架构

时间:2016-12-07 16:33:08

标签: sql database database-design

我正在建立一个系统来记录某人的车辆被停车场中的另一辆车挡住的情况。通知发送给相关人员,Web前端允许他们添加/删除车辆。用户还可以管理自己的车辆信息并记录有关它们的基本信息,添加/删除等等。虽然我有点卡在数据库端....

需要进行查询以查找/更新有关某人的车辆的信息($scope.test = function (){ $location.search('test', 0); } select * from vehicles where peopleID = @peopleID),显示您“阻止”的人(insert into vehicles...)等。显然已经简化了,一旦我对架构感到满意,我将创建存储过程。只想展示示例用法。

到目前为止,

架构如下:

select * from blocked where blockedby = @peopleID表:

Blocked

+----+-----------+----------+-----------+-------------------------+---------------+ | id | vehicleID | peopleID | blockedBy | dateTime | comments | +----+-----------+----------+-----------+-------------------------+---------------+ | 1 | 1 | 1 | 1 | 2016-11-24 09:00:00.000 | test comments | | 2 | 2 | 2 | 1 | 2016-12-07 15:00:00.000 | test | +----+-----------+----------+-----------+-------------------------+---------------+ 表:

People

+----------+----------+ | peopleID | name | +----------+----------+ | 1 | Person 1 | | 2 | Person 2 | +----------+----------+ 表:

Vehicles

我是以正确的方式接近这个吗?我不确定我是否过于复杂化。我可能会拿走两张桌子,但可能会重复提供信息。任何建议表示赞赏

2 个答案:

答案 0 :(得分:1)

最简单的版本可能是:

Vehicles
+-----------+---------+----------------+--------+--------+
| vehicleID | owner   |   makeModel    | regNo  | colour |
+-----------+---------+----------------+--------+--------+
|         1 | John    | Bugatti Veyron |  12345 | White  |
|         2 | Bob     | Porsche 911    |  67891 | Black  |
+-----------+---------+----------------+--------+--------+

vehicleID可以是唯一的主键。

Blocked
+----+-----------+-------------+--------------+----------+
| id | vehicleID | blockedByID |   dateTime   | comments |
+----+-----------+-------------+--------------+----------+
|  1 |         1 |           3 |              |          |
|  2 |         3 |           5 |              |          |
+----+-----------+-------------+--------------+----------+

第一列只是一个唯一的行ID,甚至可以自动递增。

答案 1 :(得分:0)

请参阅下面的建议

1)为每个表添加主键,如果可能,还添加外键

2)车辆表 - 而不是呼叫peopleId,将其称为ownerId,因为这是车辆表,车主只是车辆的财产。虽然它只会引用peopleId。

3)被阻止的桌子 - 不需要被阻挡,因为人们没有阻挡但是车辆被挡住了。如果需要,可以通过查询从车辆数据库中提取所有者名称

4)Blcoked Table-It缺少停车位号码

5)停车位表 - 需要此表,它将包含插槽ID,允许的车辆ID(1到多个)和所有者ID。