Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ANSI-SPARC实用说明_Mysql_Ansi Sparc - Fatal编程技术网

Mysql ANSI-SPARC实用说明

Mysql ANSI-SPARC实用说明,mysql,ansi-sparc,Mysql,Ansi Sparc,我不断听到和看到人们提到ANSI-SPARC,我们甚至在考试列表中有这样一个问题。外部的,概念的,内部的层次和东西。我已经把它填塞进去了,但当我真的试图理解它的时候,感觉就像是为了让书更厚而写的废话。有人能通过一个真实的例子来澄清ANSI-SPARC的概念吗。假设我们有一个MySQL服务器。每个级别上到底发生了什么 这是很久以前提出的标准。它有许多好的想法,并编纂了一些现有的最佳做法。它从未真正被作为标准采用,但它影响了现代数据库系统的设计。如果你不得不把它归结为一句话,最重要的想法是数据库用户

我不断听到和看到人们提到ANSI-SPARC,我们甚至在考试列表中有这样一个问题。外部的,概念的,内部的层次和东西。我已经把它填塞进去了,但当我真的试图理解它的时候,感觉就像是为了让书更厚而写的废话。有人能通过一个真实的例子来澄清ANSI-SPARC的概念吗。假设我们有一个MySQL服务器。每个级别上到底发生了什么

这是很久以前提出的标准。它有许多好的想法,并编纂了一些现有的最佳做法。它从未真正被作为标准采用,但它影响了现代数据库系统的设计。如果你不得不把它归结为一句话,最重要的想法是数据库用户应该从数据存储的实际细节中抽象出来:当然,没有用户应该知道物理位存储在哪里或如何存储,但是也可以使用自定义视图,这些视图只为客户端提供应该允许其查看的数据


非常好。

这是很久以前提出的标准。它有许多好的想法,并编纂了一些现有的最佳做法。它从未真正被作为标准采用,但它影响了现代数据库系统的设计。如果你不得不把它归结为一句话,最重要的想法是数据库用户应该从数据存储的实际细节中抽象出来:当然,没有用户应该知道物理位存储在哪里或如何存储,但是也可以使用自定义视图,这些视图只为客户端提供应该允许其查看的数据


数据库管理系统非常好。

数据库管理系统保持了数据库的财务和逻辑独立性。 为了保持逻辑独立性,我们使用视图。视图是rational表中信息的表示。 在机场我们有一张桌子。在那里,我们有帕萨格的id、姓名、航班号和座位号

create table passengers ( nif varchar(200), name varchar(200), 
                         num_flight varchar(200), num_seat varchar(200) );
create view passengers_external_view as select * from passengers;
如果我们将表格分为两部分,id名称和飞行座位号 我们只需要修改数据库中的视图,并且 不需要修改程序

create table passengers ( nif varchar(200), name varchar(200) )
create table flight_passengers ( nif varchar(200), num_flight int, 
                                num_flight varchar(200), num_seat varchar(200) );

create view passengers_external_view as 
   select p.*, fp.num_flight, fp.num_seat
     from passengers p
       left outer join flight_passengers fp 
          on fp.nif = p.nif ;

数据库管理系统是保持数据库的财务和逻辑独立性的系统。 为了保持逻辑独立性,我们使用视图。视图是rational表中信息的表示。 在机场我们有一张桌子。在那里,我们有帕萨格的id、姓名、航班号和座位号

create table passengers ( nif varchar(200), name varchar(200), 
                         num_flight varchar(200), num_seat varchar(200) );
create view passengers_external_view as select * from passengers;
如果我们将表格分为两部分,id名称和飞行座位号 我们只需要修改数据库中的视图,并且 不需要修改程序

create table passengers ( nif varchar(200), name varchar(200) )
create table flight_passengers ( nif varchar(200), num_flight int, 
                                num_flight varchar(200), num_seat varchar(200) );

create view passengers_external_view as 
   select p.*, fp.num_flight, fp.num_seat
     from passengers p
       left outer join flight_passengers fp 
          on fp.nif = p.nif ;

以下是ANSI-SPARC三个级别的说明: 外部数据级

在关系模型中,外部模式还将数据表示为一组关系。外部模式根据概念级别指定数据视图。它是根据特定类别用户的需求定制的。某些用户不应看到存储数据的某些部分,并开始实现某种级别的安全性,简化这些用户的视图

示例:

学生不应该看到教师的工资。 教员不得查看账单或付款数据。 可以从存储的数据中派生的信息可能会被视为是存储的

未存储GPA,需要时计算。 应用程序是根据外部模式编写的。外部视图在访问时计算。它没有被存储。可以为不同类别的用户提供不同的外部模式。从外部级别到概念级别的转换由DBMS在运行时自动完成。可以在不更改应用程序的情况下更改概念架构:

必须更改从外部到概念的映射。 称为概念数据独立性。 概念数据级

也称为逻辑级别 隐藏物理级别的详细信息。 在关系模型中,概念模式将数据表示为一组表。 DBMS自动将概念模式与物理模式之间的数据访问映射

可以在不更改应用程序的情况下更改物理架构: DBMS必须将映射从概念更改为物理。 称为物理数据独立性。 物理数据级 物理模式描述了数据存储方式的详细信息:随机访问磁盘系统上的文件、索引等。它还通常描述文件的记录布局和文件类型哈希、b树、平面。 早期的应用程序是在这个级别上工作的——显式地处理细节。例如,最小化相关数据之间的物理距离,并在文件块记录、块链接列表等中组织数据结构。 问题:

例程是硬编码的,用于处理物理表示

很难对数据结构进行更改。 应用程序代码变得复杂,因为它必须处理细节。 快速实现新功能非常困难。 以下是一个例子: 更改后,客户表被拆分为两个表,但外部视图显示相同的字段:

create table customers ( id int, name varchar(200) );
create table customers_adresses ( id int, id_client int, 
                                  adress_type varchar(10), adress varchar(200) );

create view customers_external_view as 
   select c.*,  ca2.adress as email, ca1.adress as fax
     from customers c
       left outer join customers_adresses ca1 
         on ca.adress_type = 'fax' and ca.id_client = c.id
       left outer join customers_adresses ca2 
         on ca.adress_type = 'email' and ca.id_client = c.id ;

以下是ANSI-SPARC三个级别的说明: 外部数据级

在关系模型中,外部模式还将数据表示为一组关系。外部模式根据概念级别指定数据视图。它是根据特定类别用户的需求定制的。某些用户不应看到存储数据的某些部分,并开始实现某种级别的安全性,简化这些用户的视图

示例:

学生不应该看到教师的工资。 教员不得查看账单或付款数据。 可以从存储的数据中派生的信息可能会被视为是存储的

未存储GPA,需要时计算。 应用程序是根据外部模式编写的。外部视图在访问时计算。它没有被存储。可以为不同类别的用户提供不同的外部模式。从外部级别到概念级别的转换由DBMS在运行时自动完成。可以在不更改应用程序的情况下更改概念架构:

必须更改从外部到概念的映射。 称为概念数据独立性。 概念数据级

也称为逻辑级别 隐藏物理级别的详细信息。 在关系模型中,概念模式将数据表示为一组表。 DBMS自动将概念模式与物理模式之间的数据访问映射

可以在不更改应用程序的情况下更改物理架构: DBMS必须将映射从概念更改为物理。 称为物理数据独立性。 物理数据级 物理模式描述了数据存储方式的详细信息:随机访问磁盘系统上的文件、索引等。它还通常描述文件的记录布局和文件类型哈希、b树、平面。 早期的应用程序是在这个级别上工作的——显式地处理细节。例如,最小化相关数据之间的物理距离,并在文件块记录、块链接列表等中组织数据结构。 问题:

例程是硬编码的,用于处理物理表示

很难对数据结构进行更改。 应用程序代码变得复杂,因为它必须处理细节。 快速实现新功能非常困难。 以下是一个例子:

    Sample of keep logical independence through database dessign changes:
    Before the change a single table of customers with email and fax:
    create table customers ( id int, name varchar(200), 
                             email varchar(200), fax varchar(200) );

create view customers_external_view as select * from customers;
更改后,客户表被拆分为两个表,但外部视图显示相同的字段:

create table customers ( id int, name varchar(200) );
create table customers_adresses ( id int, id_client int, 
                                  adress_type varchar(10), adress varchar(200) );

create view customers_external_view as 
   select c.*,  ca2.adress as email, ca1.adress as fax
     from customers c
       left outer join customers_adresses ca1 
         on ca.adress_type = 'fax' and ca.id_client = c.id
       left outer join customers_adresses ca2 
         on ca.adress_type = 'email' and ca.id_client = c.id ;

你可以把它看作是某种银行经理,因此,你需要一个连接到你的DBMS的应用程序

首先,你的雇主负责管理客户数据库债务、收入、交易。。。还有一些人想查看他们的银行账户,因此,根据ANSI-SPARC的三个级别的体系结构,外部级别,雇主必须能够访问视图管理软件,如您的客户ATM,以便将他们重定向到下一个级别,名为概念级别,在那里他们控制和管理他们的个人数据

例如:

此客户表包含数据货币、名称、余额:

create table customers( nif varchar(200), name varchar(5000), 
                        balance numeric(15,2) );
create view customers_external_view as select * from customers;
现在,银行必须记录客户所做的每一笔交易,但客户仍然希望看到他们的货币:

create table customers( nif varchar(200), name varchar(5000) );
create table movements( nif varchar(200), moment datetime, import numeric(15,2) );
create view customers_external_view as 
  select c.nif, c.name, sum( m.import ) as balance
    from customers c
    left outer join movements m 
      on c.nif = m.nif
group by c.nif, c.name ;
现在,在此之前,数据被重新写入数据库,它位于ANSI-SPARC的最后一级,即内部级


你可以把它看作是某种银行经理,因此,你需要一个连接到你的DBMS的应用程序

首先,你的雇主负责管理客户数据库债务、收入、交易。。。还有一些人想查看他们的银行账户,因此,根据ANSI-SPARC的三个级别的体系结构,外部级别,雇主必须能够访问视图管理软件,如您的客户ATM,以便将他们重定向到下一个级别,名为概念级别,在那里他们控制和管理他们的个人数据

例如:

此客户表包含数据货币、名称、余额:

create table customers( nif varchar(200), name varchar(5000), 
                        balance numeric(15,2) );
create view customers_external_view as select * from customers;
现在,银行必须记录客户所做的每一笔交易,但客户仍然希望看到他们的货币:

create table customers( nif varchar(200), name varchar(5000) );
create table movements( nif varchar(200), moment datetime, import numeric(15,2) );
create view customers_external_view as 
  select c.nif, c.name, sum( m.import ) as balance
    from customers c
    left outer join movements m 
      on c.nif = m.nif
group by c.nif, c.name ;
现在,在此之前,数据被重新写入数据库,它位于ANSI-SPARC的最后一级,即内部级