数据库设计心得——今天坐地板,明天当老板

lightlanguage 2019-11-08

1.设计的几点问题:

首当其冲的是权限问题

       不同的用户如果不分配指定的角色,就可能会具有某些权限来修改我们不希望被修改的数据,从而导致数据库中的数据出现混乱;亦或是具有对其他表的访问权限,能够访问到程序设计者并不希望被用户访问到的数据。

       因此权限问题是设计数据库中非常值得注意的一点。

以下提供一种具体实现方法:

在用户注册的时候,根据用户的注册信息,识别(判断)出这个用户应该具有哪些权限,并在注册表中插入一行,同时使用触发器为插入行授权或分配角色。

其次需要注意数据冗余的问题,这一点还算做的比较好,老师上课指出这一点是数据库设计的重中之重,程序的性能很大程度上也和这点间接相关联,数据库的数据越多,对数据的基本操作就会变得越慢,当数据库中存储了大量数据并且数据大量冗余时,对应用程序的响应就会变慢,导致用户对应用程序的体验变差。

最后一点,在设计数据库的时候,需要根据应用程序的需求设计,而不仅仅只是存储了应用程序所需要的数据。有时候为了应用程序的设计方便,必要的数据冗余也无可厚非。

2.数据库的流程:

(1)先列出所有的属性      (实体(型)、  属性、 联系)

(2)判断每一个属性 是属于那一个实体      

(3)实体与实体之间的联系   [1:1、  1:n、  n:1、   n:n]

(4)相关数据表的设计,允许有数据冗余(牺牲空间换取效率),但是一定不能有数据项之间的矛盾       [工程与理论之间的考虑]   

(5)当有多种方式进行数据处理的时候,应该综合多个方面,进行考虑,选取最适合当前项目的解决方案     [不一定是理论最好的,但却是适合、实用的]

3.最终表结构的确立:

(1)人员表:工作人员主要分为两类。一种是管理人员,负责数据库等数据的管理。另一种是普通人员,只有查看数据统计分析的功能。该表主要记录了工作人员的基本信息。主要包括编号,密码,姓名,性别,年龄,家庭住址,权限,以及电话等等,电话为登陆账号。

(2)权限表:该表存储不同的人员所拥有的权限。表属性为权限类型,权限内容。其中权限编号为主键。

其中人员表与权限表为多对一的关系。即一种权限可以对应多个用户,而一个用户只能对应一种权限。

(3)传感器信息表:传感器信息表主要包括传感器编号,传感器型号,传感器产家,防止地点,更换日期等,该表主要是方便对传感器的维护工作(如修理,更换,升级等)。

(4)传感器距离表:该表记录的是传感器之间的距离,第一个属性为数据的编号,之后是起点传感器编号、终点传感器编号、间距、备份。

(5)速度表:主要用于存储不同传感器在不同时间段对车辆速度的记录。该表一共3个属性,分别表示传感器的编号、时间段、速度。每一行表示某传感器在某时间段内检测到的经过该传感器的所有车辆的平均速度。整个表一共记录了近四个月的数据,因此一个传感器包括34272行数据。

(6)参数表:该表记录了由传感器的基本数据转化成最后统计结果过程中的数据。属性分别为:

ID,batch_size,epochs,learning_rate,max_diffusion_step,rnn_units,cl_decay_steps等数据。其中ID为主键。

(7)传感器维修记录表:传感器维修记录表包括维修记录编号,传感器编号,维修人员编号,维修时间,故障原因,其中维修记录编号为主键。

(8)维修人员信息表:该表主要是维修人员的基本信息。属性为编号,姓名,性别,年龄,电话,住址,其中维修人员编号为主键。

(注:每个表都添加了一个备份属性,以便日后对数据库进行修改)

相关推荐