精华内容
下载资源
问答
  • 数据结构层次 整个Siebel的数据的层次结构分为三个层次,每一个层次都对应了下一个层次的相应的元素,一个层次的改动不影响另一个层次的稳定性,一张表现他们层次的经典图如下:可以看到,一个BC其实对应的就是一个...

    数据结构层次
    整个Siebel的数据的层次结构分为三个层次,每一个层次都对应了下一个层次的相应的元素,一个层次的改动不影响另一个层次的稳定性,一张表现他们层次的经典图如下:可以看到,一个BC其实对应的就是一个逻辑的表(可以是一个基表也可以是几个关联的表的一个逻辑的表),BC里的field就是对应了数据表的列,多个相关主题的BC则组成了BO前面的文章已经交代了ViewScreen等屏幕元素,这些屏幕元素和BC,BO也存在一定关系,从BOBC的观点来重新定义这些概念就是,View其实对应的就是一个BO,而Applet则对应着一个BC,所谓Control则是屏幕上对应于关系数据字段的显示。多个相关的View则组成了一个Screen,而多个相关的Screen则组成了一个Siebel应用(如Call Center应用)。
    需要注意的是一个BO需要有个一个主要的BC(该BC表示了自己关注的业务实体),如下图:


    Siebel Fundamental (5) Business component & Business Object
    Business ComponentBC)和Business ObjectBO
    个人觉得Siebel应用架构的一个成功的地方就是在应用里引入了BCBO的概念,从而使得几千张关系数据表能够按照业务的含义组织成业务对象,对于业务人员而言具有了业务上的含义,而不仅仅是从技术人员的观点来对待数据(就是关系表而已)。

    LinkBC之间的关系
    对于关系表之间的关系,如主外键关系,从业务的BO观点来看则是BC之间的关系(请注意,不是严格的一对一,并非是一个关系表的外键一定会组成BC间的关系)。因为一个BO总是由一个主要的BC以及和它相关的一些BC组成,而主要的BC总是以一定的关系和附属的BC关联,这种关系就称之为Link,如下图:
    我们已经交代过一个View展现的就是一个BO,而BO是由一个Master BC和相关的一些子BC组成,如果不存在Link,则子BC的所有数据都会展现出来,而建立了Link之后,就只有和Master BC选定的记录相关联的数据才会展现出来。这些关系可能是:

    11关系:一对一的关系很多是用在Extension表上,Extension表的后缀名通常为_XExtension表是Siebel里常见的一种表,一般Siebel业务的基础数据存储在Base表中,然后把一些扩展的数据和一些可以客户化的字段(attribute字段)放在Extension表中,从而给不同行业,不同场景提供了一个扩充性很强的数据模型。)

    1M关系:一对多的BC关系一般用于Master-Detail的业务场景,比如一个Account以及该Account已经购买的产品就是一个Master-Detail关系。这种关系类似于关系表的主键外键关系,这种关系在Extension表上也存在,通常后缀名称是_XM

    MM关系:多对多的关系是通过一个叫做交集表(Intersection Table)体现出来的,两个BC之间没有主外键关系,但是每个BC和该交集表有主外键关系,如下图:
    多对多的关系通常表达的是值对(value pair)的关系,如上图表示的是公司-行业的值对组合。
    Party Business Component
    Party BC大概是Siebel里最基础的BC了,Party BC包含了个人相关实体,组织相关的实体,以及访问控制组等为了一定的目的建立起来的一些组织。如下图:
    Party BC基表是S_Party,但是和一般的BC不一样的是,作为基表的S_Party本身存储很少的数据,主要是Party的名称,Party的类型(是contactemployee还是account等),而更多Party相关的数据都存储在Extension表里,如S_CONTACTS_USER等(比较特殊的是这些Extension表的结尾并不是使用*_X来命名);此外,这些extension表的extension表(如S_CONTACT_X)本身也算是S_PARTYExtension表,这个也是Party BC的一些特殊的地方。下图是一个很好的表达了Party的访问控制组的图:
    rowid1的行的party类型是User List,所以这一行数据相关的信息应该存储在S_USERLIST extension表里;而rowid2的行的类型是Access Group,所以该行数据的额外信息应该是在表S_PARTY_GROUP extension表里等等。这个就是一个Siebel里的一个扩展性非常强的数据模型的一个例子。

    展开全文
  •  在讨论数据结构时,可以基于两个不同的层次:1.逻辑层次 2.存储层次 ( 很多专业书中也写为:逻辑结构、存储结构。但为了避免概念间的混淆,我认为 “层次” 这一表述方式更贴切 ) 。逻辑层次,是指对描述对象的...

    [1] 严格意义上数据结构的概念

      数据结构,一个简单的定义:相互之间存在一种或多种特定关系的数据元素的集合。即:数据结构 = 元素集合 + 元素间关系的集合

      在讨论数据结构时,可以基于两个不同的层次:1.逻辑层次  2.存储层次 ( 很多专业书中也写为:逻辑结构、存储结构。但为了避免概念间的混淆,我认为 “层次” 这一表述方式更贴切 ) 。逻辑层次,是指对描述对象的单纯的数学抽象。例如:一个科研小组由1名导师、2名研究生和6名本科生构成,导师指导2名研究生,每个研究生分别指导3名本科生。将这个小组视为一个数据结构,则从逻辑层次来看,这个数据结构是一个简单的树形结构。存储层次,是指数据结构在计算机存储器中的映射,即通过特定的存储方法来反映数据结构中的逻辑关系

    [2] “程序员更常用到的” 数据结构的概念

      我们在实际情况中很少能直接涉及到数据结构的存储层次:数据结构在存储器中的物理位置——这种很底层的技术。我们更多地是基于高级语言来讨论数据结构的,如C语言。

      比如:我们用C语言中的一维数组来描述存储层次中的顺序存储结构,用C语言中的指针来描述存储层次中的链式存储结构。在这种情况下,我们可以把C语言抽象地看作一个执行C指令和C数据类型的虚拟处理器,则我们讨论的存储层次实际上是基于虚拟处理器的层次而这个层次才是和我们接触最多的

    [3] 学习数据结构时的注意点

      “数据结构” 这门课程虽然常与计算机,程序设计等联系在一起,但其实它是一门独立的课程,是一门理论性很强的课程。在学习的时候,经常要用到逻辑的、抽象的思维方式。同时也要多通过写程序来练习,这样才能避免纸上谈兵,提高自己的编程水平。

    转载于:https://www.cnblogs.com/EarthPioneer/p/9117843.html

    展开全文
  • 数据层次结构建模

    千次阅读 2018-05-21 17:13:20
    1,在现实世界中,有很多现象存在层次结构,公司的人事职称是典型的层次结果,如下图Sql Server是关系型DB,适合存储二维关系的数据,如何存储具有层次结构数据了?需要使用一个字段ParentID表示上级ID,示例表结构...

    1,在现实世界中,有很多现象存在层次结构,公司的人事职称是典型的层次结果,如下图

    Sql Server是关系型DB,适合存储二维关系的数据,如何存储具有层次结构的数据了?需要使用一个字段ParentID表示上级ID,示例表结构如下

    create table dbo.emph

    (

    ID int not null primary key,

    ParentID int foreign key references dbo.emph(id),

    Descr varchar(100) not null

    )

    2,插入示例数据

    insert into dbo.emph(id,ParentID,Descr)

    values(1,null,'boss'),

    (2,1,'M1'),(3,1,'M2'),(4,1,'M3'),(5,1,'M4'),

    (6,2,'L11'),(20,2,'L12'),(7,2,'L13'),(8,2,'L14'),(9,2,'L15'),

    (10,3,'L21'),(11,3,'L22'),(12,3,'L23'),(14,3,'L24'),

    (15,6,'E111'),(16,6,'E112'),(17,6,'E113'),(18,6,'E114'),

    (19,20,'E121'),(21,20,'E122'),(22,20,'E123')

    3,使用CTE递归查询M1手下的所有员工,包括Leader和Employee

    ;with cte(id,parentid,descr) as

    (

    select id,parentid,descr

    from dbo.emph

    where id=2

    union all

    select e.ID,e.ParentID,e.Descr

    from dbo.emph e

    inner join cte c on e.ParentID=c.id

    )

    select *

    from cte

    order by parentid

    4,查看查询嵌套的Level,示例代码如下

    ;with cte(id,parentid,descr,Level) as

    (

    select id,parentid,descr,0 as Level

    from dbo.emph

    where id=2

    union all

    select e.ID,e.ParentID,e.Descr,Level+1 as Level

    from dbo.emph e

    inner join cte c on e.ParentID=c.id

    )

    select *

    from cte

    order by parentid

    5,查看每一行数据的Path,便于查看归属关系,path是使用ID来界定的

    ;with cte(path,id,parentid,descr,Level) as

    (

    select cast('\'+cast(id as varchar) as varchar(100)) as path,

      id,parentid,descr,0 as Level

    from dbo.emph

    where id=2

    union all

    select cast(c.path+'\'+ cast(e.ID as varchar) as varchar(100)) as path,

    e.ID,e.ParentID,e.Descr,Level+1 as Level

    from dbo.emph e

    inner join cte c on e.ParentID=c.id

    )

    select *

    from cte

    order by parentid

    推荐文档:

    树形结构的数据库表Schema设计

    展开全文
  • 数据结构 二叉树层次遍历 C语言

    千次阅读 多人点赞 2018-12-19 16:21:08
    C语言 数据结构 二叉树层次遍历 原创作者:小林 #include<stdio.h> #include<stdlib.h> #define max 100 typedef int ElemType; typedef struct BiTNode{ ElemType data; struct ...

    C语言 数据结构 二叉树层次遍历

    原创作者:小林
    #include<stdio.h>
    #include<stdlib.h>
    #define max 100

    typedef int ElemType;

    typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
    } BiTNode,*BinTree;

    //建立二叉树

    void CreateBinTree(BinTree &T){ //按先序次序输入,构造二叉链表表示的二叉树T
    int num;
    scanf("%d",&num);//输入函数。
    if(num==-1){
    T=NULL;
    }//输入#时为空
    else{
    T=(BinTree)malloc(sizeof(BiTNode));
    T->data=num;
    CreateBinTree(T->lchild);
    CreateBinTree(T->rchild);
    }
    }

    // 遍历二叉树
    void LevleOrder(BinTree T){ //从第一层开始,从左到右

    BinTree Queue[max],p; //用一维数组表示队列,front和rear分别表示队首和队尾指针

    int front,rear;

    front=rear=0;

    if (T) //若树非空
    {

    Queue[rear++]=T; //根结点入队列

    while (front!=rear){ // 队列非空
    p=Queue[front++]; // 队首元素出队列,并访问这个结点
    printf("%d",p->data);

    if (p->lchild!=NULL) Queue[rear++]=p->lchild; //左子树非空,入队列
    if (p->rchild!=NULL) Queue[rear++]=p->rchild;
    }
    }

    }

    //按要求输出二叉树

    int main() {

    BinTree T;

    printf("\n创建二叉树\n");
    CreateBinTree (T);
    printf("\n层次遍历二叉树 并输出遍历结果\n"); LevleOrder(T);

    return 0; }

    例题:
    二叉树的层次遍历
    关于二叉树的遍历方法,除了我们所熟知的先序遍历、中序遍历和后序遍历方法外,还有一种遍历方法,称为层次遍历。所谓层次遍历方法是指从二叉树的根结点开始自上而下,每一层从左到右逐一访问每个结点。例如,若二叉树如下所示。
    在这里插入图片描述

    则该二叉树的层次遍历序列为:1 2 3 5 6 7 10 11 13
    假设二叉树采用二叉链表存储结构,其二叉链表的类型定义如下。
    typedef struct bnode{
    int data; //结点的数据域用大于0的整数表示
    struct bnode *lchild;
    struct bnode *rchild;
    }bnode,*btree;
    要求:
    首先采用先序遍历的方法来创建一棵二叉树,创建时用-1来表示空树。最后输出所创建二叉树的层次遍历序列。
    例如,如果要创建上图所示的二叉树:
    应输入:
    1 2 -1 5 10 -1 -1 11 -1 -1 3 6 -1 13 -1 -1 7 -1 -1
    则输出:
    1 2 3 5 6 7 10 11 13

    运行结果如下:在这里插入图片描述

    展开全文
  • 数据结构之抽象层次

    千次阅读 2010-07-09 16:25:00
    本文介绍了通用数据结构的简单抽象层次
  • 通用树结构层次遍历算法是否可以用在二叉树结构上? 如果可以,代码需要做怎样的改动? 提供一组遍历相关的函数,按层次访问二叉树中的数据元素。 函数 功能说明 begin() 初始化,准备进行遍历访问 ...
  • -树是非线性的数据结构,树的结点没有固定的编号方式 新的需求 -为通用树机构提供新的方法,快速遍历每一个结点 设计思路(游标) -在树中定义一个游标(GTreeNode<T>*) -遍历开始前将游标指向根节点...
  • 数据结构例程 二叉树的层次遍历算法
  • 写了一个二叉树层次遍历但是输出的时候总是程序有问题,我用#作为空指针, 例如当我输入ABC##DE#G##F###,一直循环输出B,而不是ABCDEGF ``` typedef struct BiTree { char data; struct BiTree *...
  • 数据结构层次表 数据 结构 逻辑结构 线性结构(线性表) 一般线性表 线性表 特殊线性表 栈与队列 字符串 线性表的推广 数组 广义表(递归) 非线性结构 树结构 树(递归) ...
  • 数据结构-二叉树层次遍历

    千次阅读 多人点赞 2018-10-23 14:57:49
    首先介绍下二叉树的层次遍历即按照顺序对树节点依次访问,如下图: 顺序遍历的结果为:ABCDEFGHIJK 我们可以借助一个队列来实现二叉树的层次遍历;思路如下: 先将二叉树根节点入队,然后出队,访问该节点,...
  • 一个分层数据结构包含了数据项和他们之间的关系。我们需要合理的设计两者的模型,这样我才能让我们的系统性能更高效,也方便我们的编程。 关系数据库设计应该遵循关系数据规范化,同时也应该方便对数据的更、删、改...
  • 数据结构——二叉树的层次遍历

    千次阅读 2015-09-08 20:22:29
    二叉树的层次遍历说简单也简单,说难也难。下面是我读编程之美和研究数据结构结合大神的博客来实现的二叉树的层次遍历,这里只给出三种简单高效的解法。
  • 数据结构-层次遍历二叉树

    千次阅读 2014-07-08 15:14:17
    二叉树链表存储方式: struct BiNode {  Type data;  struct BiNode *lchild,*rchild;//左右孩子指针 }BiNode,*BiTree
  • 许多依赖数据库的应用都会遇到层次结构数据,例如论坛或邮件列表的线索、企业的组织结构图、内容管理系统或商城的分类目录等等。我们如下数据作为示例: 那我们怎么在MySQL里面存储这样的层次结构呢? 邻接...
  • 本文是数据结构基础系列(6):树和二叉树中第12课时层次遍历算法的例程。【二叉树的层次遍历算法】  实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。  请利用...
  • 数据结构层次遍历二叉树 C语言版

    千次阅读 多人点赞 2017-08-27 17:18:55
    //层次遍历二叉树并输出结点的算法 #include #include typedef struct NNode { char data; struct NNode *LChild; struct NNode *RChild; } BiTNode,*BiTree; //定义二叉树结点和结点指针 typedef BiTree ...
  • 二叉树的层次遍历,需要用到队列进行存储还输出; 其访问的基本过程: 先根节点入队,之后 1)从队列中取出一个元素; 2)访问当前元素所指节点 3)若该元素所指节点的左右孩子节点非空,则将左右孩子的指针顺序入队...
  • 该代码无法输出任何内容就结束,请问是怎么回事 ``` #include //二叉树的类型定义 typedef struct BiNode{ char data; struct BiNode* LChild; struct BiNode* RChild; }BiNode,*BiTree;...```
  • 我们对数据结构的理解达到了什么层次?我们需要达到的层次是什么? 第0层次:“数据结构是什么?” 第0层次是指对数据结构一无所知。我们从来没有听说过数据结构,从来没有注意到对数据进行合理的组织能够大幅度...
  • 数据结构--立体层次结构

    千次阅读 2011-08-06 00:10:34
    // roomage.cpp: 主项目文件。...这样构建成一个子集,通过循环构建超集,并且子集之间的单个结点实现互联,形成建筑物的框架结构,由第一层,依次往上攀升。按说可以递归实现,我做成了循环实现。
  • 数据结构~14.二叉树的层次遍历与案例分析

    万次阅读 多人点赞 2020-08-12 14:39:58
    二叉树遍历的深入 本文是上一篇文章的后续,详情点击该链接~ 层次遍历
  • mybatis查询层次结构数据

    千次阅读 2018-12-21 17:35:19
    最近做了一个评论功能,一篇文章的评论数据的组成结构如下图: CommentBean和文章是一一对应的关系,一个CommentBean下可能...下面将使用mybatis从数据库查询出具有这样层次结构数据。 &lt;select id="...
  • BFS层次遍历二叉树
  • 整个算法结构以先序遍历递归算法为基础,二叉树中结点之间的指针连接是通过指针       参数在递归调用返回时完成。 int createbitree(bitree &T,int &sum) {   char ch;   scanf("%c",&ch);   ...
  • 数据结构 第12讲 二叉树的层次遍历

    千次阅读 2017-11-14 11:41:03
    数据结构 第12讲 二叉树的层次遍历 二叉树的遍历一般有先序遍历、中序遍历和后序遍历,这三种遍历比较简单。今天我们讲二叉树的另一种遍历方式,层次遍历。即按照层次进行遍历。如图1所示: 图1 ...
  • 非线数据结构

    2017-10-25 17:59:27
    数据结构层次理解,堆是一种特殊的树形数据结构,二叉树的一种,有最大堆最小堆每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。有最大堆最小堆每个结点都有一个值。堆分为大根堆,小根堆,
  • 数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述  已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。 输入  输入数据有...
  • Java数据结构:二叉树的层次遍历

    千次阅读 2018-12-02 15:21:59
    层次遍历类似于二叉树后根遍历的非递归形式。依靠队列辅助完成。 思路:从根节点开始,遇到结点则将它的子结点入队,打印此结点后,再出队一个结点,然后将该结点的子结点入队。依次类推。 思路:从0开始,将1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,446
精华内容 7,778
关键字:

数据结构层次

数据结构 订阅