无法修改关系的oracle超市数据库设计 (oracle超市数据库设计)

数据库设计是数据库系统开发的之一步,其主要目的是确定数据库的数据结构,包括表的设计、属性的设计和关系的设计。Oracle超市数据库是一个典型的企业级应用系统,其数据库设计需具有良好的可扩展性和稳定性,在业务逐渐壮大的情况下,数据库能够快速适应业务的发展需求。本文将介绍一种无法修改关系的Oracle超市数据库设计。

1. 数据库概述

Oracle超市数据库是一个在线销售平台,面向消费者提供正品保障的商品,为消费者提供优质的商品,确保收货省心、物美价廉。在该数据库中,涉及到的数据包括商品数据、用户数据、交易数据等。

2. 数据库设计

在该数据库设计中,将商品数据、用户数据、交易数据分别设计为三个关系表,分别为商品表、用户表和交易表。这三个表的主键分别为商品ID、用户ID和交易ID。

2.1 商品表

商品表包含了所有的商品信息,主要属性包括商品ID、商品名称、商品类型、商品价格等。商品ID为该表的主键,一个商品只有一个主键,表示唯一的编号,商品ID的数据类型为int型。

2.2 用户表

用户表包含了所有的用户信息,主要属性包括用户ID、用户名、密码、、邮箱等。用户ID为该表的主键,一个用户只能有一个主键,表示唯一的编号,用户ID的数据类型为int型。

2.3 交易表

交易表包含了所有的交易信息,主要属性包括交易ID、商品ID、用户ID、交易时间、交易状态等。交易ID为该表的主键,一个交易只能有一个主键,表示唯一的编号,交易ID的数据类型为int型。

2.4 视图的设计

该数据库中还设计一张视图表,用于按需查询数据。在该视图表中,将商品表、用户表、交易表按照商品ID、用户ID和交易ID进行关联,便于用户查看商品信息、用户信息以及交易信息。

视图表中的主要属性包括商品ID、商品名称、商品类型、商品价格、用户名、、邮箱、交易时间、交易状态等。在视图表中查询数据时,用户只需提供商品ID、用户ID或交易ID,便可以获取相关信息。

3. 数据库的性能优化

在该数据库设计中,考虑到数据查询的效率问题,为了提升系统性能,对数据库进行了合理的调优。

3.1 数据库缓存

为了避免每次查询都需要从硬盘中读取数据,可以使用内存中的数据缓存,将经常使用的数据放入缓存中,可以大幅度提升系统性能。

3.2 数据库索引

为了提升数据查询的效率,可以对数据库中的关键属性进行索引,加快数据查询的速度。在本数据库中,对商品ID、用户ID和交易ID进行了索引,使得查询速度更快。

3.3 数据库分区

在数据库系统中,如果数据量过大,会导致系统性能下降。因此,可以将数据进行分区,在不同的分区上存储不同的数据,以便提高系统性能。在本数据库中,将商品表、用户表和交易表进行了水平分区,可以降低单个分区中数据的数量,提高数据查询的效率。

4. 无法修改关系的设计

在经过上述性能优化之后,该数据库的性能明显提高。但是,在该数据库设计中,存在一个无法修改关系的设计问题。在商品表、用户表和交易表中,主键分别是商品ID、用户ID和交易ID。这些主键都表示唯一的编号,对这些编号进行修改,可能会破坏数据的一致性。

例如,在商品表中,一个商品只有唯一的商品ID,如果将该商品的ID修改了,同时在用户表和交易表中存在该商品的记录,那么修改后的商品ID可能会和用户ID或交易ID产生冲突,导致数据库的数据出现不一致的情况。

因此,在该数据库设计中,需要保证商品ID、用户ID和交易ID的唯一性,这样可以避免在修改主键时可能产生的冲突。在实际应用中,如果需要修改这些主键属性,可以考虑重新生成一个新的主键值,替换原有的值。

5.

本文介绍了一种无法修改关系的Oracle超市数据库设计,该设计从商品表、用户表和交易表出发,将其设计为三个独立的关系表,同时利用视图表实现了数据查询的需求。在数据库性能优化方面,采用了缓存、索引和分区等技术,提高了系统性能。但是,由于主键属性的唯一性限制,导致在修改主键时可能会破坏数据的一致性,因此需要在实际应用中进行考虑。

相关问题拓展阅读:

Oracle数据库安全性设计?大家给点建议

Oracle数据库安全性设计建议一、 什么是安全的系统 安全性建设是一个长期并且卓绝的工作。作为一个符合标准的企业级系统,我们认为税务系统应该具备以下的安全性特点: 高可用性 对敏感数据的访问控制能力。 监测用户行为的审计能力。 用户帐号管理的有效性和扩充性 二、 从哪些方面作安全性检查 一个企业级系统的安全性建设并不仅仅局限于软件技术方面的设置和控制,甚至我们可以说,技术仅仅位于一个补充和提高现有安全性的地位上。通常,应该按照重要性依次进行如下的安全性检查。 物理层面的控制 控制物理接触是系统安全性建设的之一步,也是最会有成效,最应该优先执行的一步。 权威安全研究显示,70% 的信息系统数据损失和攻击都是由“内部人”(即具备某种系统及其数据访问权限的用户)造成和发起的。粗孝败 比如,授权人员才可以进入机房,管理人员的密码不要记录在显眼的地方,离开个人终端锁定屏幕,等等,这些建议看上去似乎比较琐碎。但是如果缺少了这些意识,即使我们运用了再好的安全性技术,再复杂的数据分离技术,当一个人可以接近需要保护的服务器,当一个人可以通过窃取的密码接近需要保护的数据,那么一切的安全性建设都将是一个摆设。 千里之堤,毁于蚁穴。一个牢固的堤坝不会因为外界洪水的冲击而倒塌,却会崩坏于隐藏在自身内部的蛀虫。 所以,更佳的方法是不要让蚂蚁靠近堤坝。 安全性流程慎亮建设 实施安全性建设之后,必须要有一个详细周密而且行之有效的流程控制(Process Control)。其中行之有效是我们应该注意的。 有时候会听到抱怨,在增强了安全性建设的系统中,维护人员由于分工过细,导致整个系统的应变能力下降,维护成本提高,管理效率降低。以前一个人可以在10分钟内作好的修改,现在却要途经3,4个人之手,耗时1-2天还不一定能够做完。 过犹不及,建立一个符合企业自身需求的安全性流程是我们应该优先考虑的。 普遍性的安全性措施 不仅仅是Oracle数据库系统,作为一个具有领先性的IT系统,都应该包括以下的安全性措施。 1. 只安装需要的软件 每个软件都有缺陷,对于Oracle数据库软件来说,自定义安装,只选取需要的组件,少作少错,这一点在安全性方面显得尤为重要,一个具有潜在安全性漏洞的组件,如果它没有被安装。那它就不会影响整个系统。 2. 锁定或者失效默认用户 对于Oracle数据库系统来说,安装的时候会有一系列的默认用户生成,应该在数据库安装完毕之后,经过功能筛选,锁定或者失效这些用户。 3. 修改可用用户的默认密码 不能锁定或者失效的用户,必须修改默认密码。比如具有SYSDBA权限的SYS用户和具有DBA权限的SYSTEM用户,都应该修改默认密码。至于密码长度和复杂性的有效控制在后面将会谈到。 4. 限制操作系统存取权限 Oracle数据库系统是依存在操作系统之上的,如果操作系统岩颤被人侵入,那么通过修改配置文件等一系列方法,Oracle数据库的安全性也将荡然无存。 5. 定期更新厂家推出的安全性补丁 随着时间的推移,厂家通常会推出一系列的安全性补丁来弥补现有系统的安全隐患。 对于Oracle数据库而言,应该定期查看以下网址来获取Oracle公司最新的安全性警告和解决方案。

Oracle数据库本身的安全性建设

从总体上而言,Oracle数据库是业界安全性方面最完备的数据库产品。在数据库安全性的国际标准中,Oracle通过了14项标准的测试,是所有数据库产品中通过安全性标准最多、最全面的产品。Oracle在C2级的操作系统上(如商用UNIX,VMS操作系统),不仅满足NCSC C2级安全标准,而且已经正式通过了NCSC C2标准的测试。在B1级的操作系统上不仅满足NCSC B1级安全标准,而且已经通过了NCSC B1级标准的测试。

Oracle提供的主要安全性措施如下:

�8�9 身份认证功能(Authentication):识别访问个体的身份

�8�9 数据访问的机密性(Confidentialty):保证敏感数据访问的机密性。

�8�9 数据完整性(Integrity):保证数据不被篡改。

�8�9 授权能力(Authorization):保证被授权用户对数据的查询和修改能力。

�8�9 访问控制(Access Control):确定对指定数据的访问能力。

�8�9 审计能判友力(Auditing):提供监测用户行为的能力。

�8�9 私有性(Privacy):提供对敏感数据访问的私密性。

�8�9 高可用性(Availability):保证数据和系统提供不间断服务的能力。

�8�9 代理管理能力(Delegated Administration):提供对用户帐号的集中管理功能。

下面将就应用系统本身对于Oracle提供的安全性措施作更深入的探讨。

$PageTitle= Oracle的安全性领域}

三、 Oracle的安全性领域

�8�5 Profile控制

Oracle利用profile机制来管理会话资源占用,同时也管理用户密码的安全策略。

通过profile我们可以实现:

某个特定用户最多只能占用系统百分之几的CPU时间?

某个特定用户连接到数据库之后能存活多长时间?

某个特定用户连接到数据库之后多长时间处于非活跃状态就将被系统中断连接?

用户登录密码输入错误多少次之后就将自动锁定用户?

用户密码的长度和包含的字符必须符合什么样的规则?

用户密码在多少天后将自动失效并要求设定新密码?

�8�罩冲衡5 用户权限控制 (Privilage)

Oracle通过角色(Role),权限(Privilage)等的一系列授予(Grant)和回收(Revoke)操作可以有效的进行用户的权限控制。

通过权限控制我们可以实现:

某个特定用户只能读取而不能修改另一个用户的表数据。

某个特定用户只能运行Oracle数据库系统的几个存储过程或者函数。

某个特定用户自己能够拥有修改某些数据的权力,但是却无法给其它不拥有这个权限的用户授予修改该数据的权力。

某个特定用户可以读取数据但物做是无法创建新的表空间。

�8�5 虚拟专用数据库(VPD)

虚拟专用数据库 (VPD) 也称为细粒度访问控制,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎。

VPD 的工作方法是,通过透明地更改对数据的请求,基于一系列定义的标准向用户提供表的局部视图。在运行时,所有查询都附加了谓词,以便筛选出准许用户看到的行。

也就是通过VPD的设置,我们可以做到行级安全性控制,特定的用户即使对一张表有读取权限,那么也只能看到符合自身权限的记录。

注意,在Oracle10g版本中,VPD得到增强,已经可以实现字段级的安全性控制了。

实例及搭建步骤参看:利用VPD细粒度访问策略实现行级安全性 Step By Step

�8�5 Orace Label Security

基于对由客户提交的行级安全性的严格要求,Oracle Label Security(Oracle 数据库企业版的选件之一)利用多级安全性概念解决了世界上和商业用户在实际中遇到的数据安全和隐私问题。

OLS 通过利用数据敏感度标签(例如“敏感”和“公司机密”)与用户标签授权,提供了完善的行级安全性控制。

OLS 使用政策概念来存储标签定义和授权。该政策可直接在数据库中进行管理,或在 Oracle 身份管理中进行集中管理。

�8�5 Oracle Database Valut

通常数据库管理员如果具有了DBA权限,那么就很难防止这样的管理员查看应用程序数据。而Oracle Database Valut则解决了必须保护涉及合作伙伴、员工和顾客的敏感业务信息或隐私数据的客户最为担心的问题。

Oracle Database Vault 可防止高权限的应用程序 DBA 访问其他的应用程序、执行其权限之外的任务。Oracle Database Vault 可在不影响应用程序功能的前提下快速而高效地保护现有程序。

Oracle Database Vault 可通过下列方法解决一些最为常见的安全问题和内部威胁:

1. 限制 DBA 和其他授权用户访问应用程序数据。

2. 防止DBA 操纵数据库和访问其他应用程序。Oracle Database Vault 提供了强大的职责划分控制功能,可防止擅自更改数据库。比如说如果一个用户具有 CREATE USER 权限,但不具备正确的用户管理权限,则 Oracle Database Vault 将阻止该 DBA 创建新用户。

3. 更好的控制何人、何时、何地可以访问应用程序。如日期时间、数据库客户端在网络上的位置之类的因素。

Oracle Database Valut是新的Oracle Database 10g企业版的选件。目前已经有Linux X86以及Solaris SPARC 64bit的版本可以下载使用了。

�8�5 用户访问审计

审计是Oracle安全性的另一个重要领域,我们还必须小心地计划审计方案。有几种方式可在Oracle中进行审计:

1. SQL审计命令(标准审计)

通过AUDIT语句我们可以对成功或者不成功的特定对象的读取,更新操作进行审计。

标准审计只会记录较少的跟踪信息,比如发出该语句的用户、时间、终端标识号等等。

该审计对于系统性能的影响更多地取决于对象的繁忙程度。

2. 用对象触发器进行审计(也就是DML审计)

此类审计通常由客户自行开发放置于特定数据库对象上的触发器,由于是自行开发,所以相对于标准审计则能够更自由地记录更多感兴趣的跟踪信息。比如更新操作将某个字段从什么原始值更新到了什么新值。

该审计对于系统性能的影响更多地取决于对象的繁忙程度和触发器的编写水平。

3. 用系统级触发器进行审计(记录用户登录和退出)

当用户登录数据库或者离开数据库时,都可以通过自定义的触发器来记录用户名称,操作时间,终端标识号等信息。

由于触发器触发几率小,所以该审计对于系统性能影响并不大。

4. 用LogMiner进行审计(也就是DML和DDL)

Oracle数据库将所有的更新操作都记录在重作日志中,而Oracle提供了LogMiner工具用于挖掘重作日志中的所有操作,相比起上述的各种审计方法来说,该种审计可能是信息最为完善,对于应用系统性能影响最小的方法。

此处稍微延展开来说一下,LogMiner是双刃剑,既然可以用来审计,也就能够被恶意使用作为数据窃取的工具。所以在数据本身的加密方面,Oracle同样提供了多种解决方案,比如DBMS_OBFUSCATION_TOOLKIT,DBMS_CRYPTO和最新的透明数据加密,甚至在数据备份方面 Oracle也推出了Secure Backup来应对磁带数据的加密,但是要注意到数据加密不应用作访问控制的替代项,存储加密的数据并不会在存储介质本身提供额外的保护层,只是有助于在发生介质遭窃时保护诸如信用卡号之类的敏感数据。本文不再作更多的介绍。

5. 细精度审计(FGA)

细粒度审计 (FGA),是在 Oracle 9i 中引入的,能够记录 SCN 号和行级的更改以重建旧的数据,但是它们只能用于 select 语句,而不能用于 DML,如 update、insert 和 delete 语句。因此,对于 Oracle 数据库 10g 之前的版本,使用触发器虽然对于以行级跟踪用户初始的更改是没有吸引力的选择,但它也是唯一可靠的方法。

而Oracle10g种FGA功能的增强使其不但能够支持select操作,同时也支持DML操作。在 Oracle 10g 中,审计已经从一个单纯的“操作记录者”成长为一个“事实记录机制”,它能以一个非常详细的级别来捕获用户的行为,这可以消除您对手动的、基于触发器的审计的需要。它还结合了标准审计和 FGA 的跟踪,这使其更易于跟踪数据库访问,而不用考虑它是如何生成的。

通过细粒度审计我们可以记录:

在早上九点到下午六点之间或在星期六和星期日对某个表进行了访问。

使用了公司网络外部的某个 IP 地址。

选定或更新了特定列。

使用了该列的特定值。

oracle超市数据库设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle超市数据库设计,无法修改关系的oracle超市数据库设计,Oracle数据库安全性设计?大家给点建议的信息别忘了在本站进行查找喔。


数据运维技术 » 无法修改关系的oracle超市数据库设计 (oracle超市数据库设计)