ERP数据仓库模型

ERP数据仓库模型建设是一个复杂的过程,涉及到多个主题域。以下是一个详细的设计方案:

  1. 确定业务需求和目标

在开始设计数据仓库模型之前,需要了解企业的业务需求和目标。这包括了解企业的运营模式、业务流程、关键绩效指标等。通过与业务部门的人员进行深入交流,可以更好地理解业务需求,并为后续的数据仓库模型设计提供指导。

  1. 确定数据仓库的结构和架构

数据仓库的结构和架构是数据仓库模型建设的基础。根据企业的业务需求和目标,可以确定数据仓库的体系结构,包括数据的分层、数据模型的设计、ETL流程等。通常,数据仓库的结构包括事实表、维度表、桥接表等。

  1. 确定主题域和实体

主题域是数据仓库中的一类数据,它代表了企业业务中的一个方面或一个领域。例如,销售、采购、库存等都是常见的主题域。每个主题域都包含相关的实体,实体是主题域中的具体对象,例如产品、客户、供应商等。通过对主题域和实体的确定,可以更好地组织数据仓库中的数据,并为后续的数据分析和决策提供支持。

  1. 设计数据模型

数据模型是数据仓库的核心,它是对企业业务模型的抽象和概括。在设计数据模型时,需要考虑数据的来源、数据的结构、数据的属性等方面。通常,数据模型包括事实表、维度表、桥接表等,这些表之间通过外键进行关联。

  1. 实现ETL过程

ETL是将原始数据抽取、转换和加载到数据仓库中的过程。在实现ETL过程时,需要考虑数据的抽取方式、数据的清洗和转换方式、数据的加载方式等。同时,还需要考虑ETL的流程和调度方式等。

  1. 实现元数据管理

元数据是描述数据的数据,它包括了数据的定义、数据的结构、数据的属性等信息。实现元数据管理可以更好地理解数据仓库中的数据,同时也可以更好地管理和维护数据仓库中的数据。

  1. 进行性能优化

性能优化是提高数据仓库运行效率的重要手段。通过对数据仓库的性能进行优化,可以提高查询速度、减少资源消耗、提高系统的稳定性等。常见的性能优化方法包括索引优化、分区优化、缓存优化等。

  1. 进行数据质量管理

数据质量管理是保证数据仓库中数据质量的重要手段。通过对数据进行清洗、验证和校验等操作,可以保证数据的一致性、准确性和完整性。同时,还需要定期对数据进行备份和恢复等操作,以保证数据的安全性和可靠性。

  1. 提供查询和分析工具

查询和分析工具是使用数据仓库的人员所必需的工具。提供查询和分析工具可以方便用户对数据进行查询和分析,同时也可以提高用户的工作效率和质量。常见的查询和分析工具包括报表、OLAP分析、可视化大屏等。

  1. 进行培训和知识转移

培训和知识转移是保证数据仓库成功应用的重要手段。通过对用户进行培训和知识转移,可以让用户更好地了解和使用数据仓库中的数据,同时也可以提高用户的工作效率和质量。培训和知识转移可以包括技术培训、业务培训、管理培训等。

构建ERP(Enterprise Resource Planning)数据仓库模型时,采用分主题域的设计方法可以更好地组织和管理企业数据。以下是一个详细的分主题域设计方案:

  1. 需求分析

    • 确定业务目标:首先,需要了解企业的战略目标、业务流程以及信息需求。
    • 识别关键指标:确定企业中关键的KPI(Key Performance Indicator),这些指标将用于衡量数据仓库的成功程度。
  2. 概念设计

    • 主题域划分:根据企业的业务领域,将数据划分为多个主题域。例如,财务、人力资源、销售与市场、供应链等。
    • 定义实体关系:为每个主题域定义其包含的实体,并描述它们之间的关系。
    • 设计事实表和维度表:对于每个主题域,确定其主要的事实表(包含度量值)和相关的维度表(提供上下文信息)。
  3. 逻辑设计

    • 数据源分析:确定每个主题域的数据来源,包括ERP系统和其他外部系统。
    • 数据清洗和转换:分析原始数据的质量问题,制定数据清洗和转换规则,以确保数据仓库中的数据准确无误。
    • 设计ER图:使用ER图(Entity-Relationship Diagram)来表示各个主题域及其之间的关系。
  4. 物理设计

    • 存储策略:选择适合的数据库管理系统(DBMS),并考虑数据的分区、索引、压缩等方面的存储策略。
    • 性能优化:针对查询性能进行优化,如星型或雪花型模式的选择、聚集索引的设计等。
  5. 实施和测试

    • 数据集成:编写ETL(Extract, Transform, Load)脚本,从不同的数据源抽取数据,经过处理后加载到数据仓库中。
    • 系统测试:对数据仓库进行全面的功能测试和性能测试,确保其满足业务需求。
  6. 运维和维护

    • 监控和调整:监控数据仓库的运行状态,根据实际情况进行性能调优。
    • 数据更新:定期更新数据仓库中的数据,保持数据的新鲜度。
    • 用户培训和支持:为用户提供必要的培训和支持,确保他们能够有效地使用数据仓库。

通过以上步骤,你可以建立一个基于分主题域的ERP数据仓库模型,这将有助于企业更高效地管理和利用其数据资源。

数据仓库的模型可以理解为一种合理定义数据仓库内容的结构,它方便对数据仓库进行的操作和数据仓库系统的维护。数据仓库模型通常包括数据库、表、视图、索引和数据等,并使用预定义的设计类型进行定期结构化,如星型模型、雪花模型等。

数据仓库中的表通常分为事实表和维度表。事实表通常用来记录企业业务中的事件,如销售订单、库存变化等,而维度表则提供描述这些事件的数据列。例如,在销售订单事实表中,每一行代表一个订单,而订单的属性,如产品名称、销售地点等,则存储在相应的维度表中。

数据仓库的模型是描述整个数据库的逻辑描述,包括记录的名称和描述,它具有所有数据项以及与数据关联的不同聚合。数据仓库的模型还包括元数据管理,它描述了数据仓库中的数据项的含义、结构、属性等信息。

此外,数据仓库的模型还可以进行性能优化和数据质量管理,以提高数据仓库的运行效率并保证数据的质量。例如,通过索引优化可以提高查询速度,通过分区优化可以提高系统的稳定性,通过数据清洗和验证可以保证数据的一致性和准确性。

总之,数据仓库的模型是一种针对大规模数据的存储和管理方案,它通过合理地组织和存储数据,提供查询和分析工具,方便用户对数据进行查询和分析,以支持企业的业务决策。

数据仓库的模型是描述如何组织和存储数据仓库中的信息,以便于进行高效的分析和报告。数据仓库模型通常与传统的事务处理系统(如ERP)使用的操作型数据模型不同,它更侧重于满足决策支持系统的需要。以下是几种常见的数据仓库模型:

  1. 关系数据模型

    • 基于关系数据库理论,数据被组织成表格形式,通过外键关联在一起。
    • 数据按照业务规则进行规范化,以减少冗余和保持一致性。
  2. 多维数据模型(也称为OLAP模型):

    • 数据被组织为一个或多个多维立方体,每个维度代表一种分析视角(如时间、地区等),而度量值则表示可计算的数值。
    • 多维数据模型非常适合快速查询和复杂的聚合操作。
  3. 星型模型

    • 易于理解和使用的一种数据仓库模型,由一个事实表(包含度量值)和围绕它的多个维度表组成,形成星形结构。
    • 适用于简单的数据分析需求,并且可以提高查询性能。
  4. 雪花模型

    • 在星型模型的基础上进一步规范化,将一些维度表之间的冗余数据消除,从而降低存储成本。
    • 虽然查询效率可能略低于星型模型,但数据更加一致和易于维护。
  5. Data Vault模型

    • 结合了关系模型和维度模型的优点,强调数据的历史性和审计性。
    • Data Vault模型基于三个主要组件:中心表、卫星表和链接表。
  6. 实体-关系模型(ER模型):

    • 使用实体、属性和关系来描述业务领域的概念模型,然后转换为适合数据仓库的物理设计。
    • 这种模型可以清晰地表达业务逻辑,但通常需要在实施时进行一些调整以优化性能。
  7. Inmon方法论

    • 由数据仓库之父Bill Inmon提出的方法论,强调从企业的整体角度出发,自上而下地构建数据仓库。
    • 鼓励先创建企业级的数据集市,然后逐步细化到部门级别的主题区域。

选择哪种数据仓库模型取决于特定的业务需求、数据源的特性以及技术环境。在实际应用中,可能会结合多种模型的特点,创造出更适合实际情况的混合模型。

BI系统的模型是指用于BI系统中存储和处理数据的抽象和表示形式。它以数据为中心,围绕业务需求和分析目标构建,将多种数据源进行整合,并提供高效的数据查询和分析功能。

BI系统的模型通常包括数据的组织结构、关系和操作方式等,例如数据的来源、数据的结构、数据的属性等。这些信息可以帮助企业更好地理解其业务数据,从而做出更明智的商业决策。

在BI系统中,数据模型通常以数据仓库或数据集市的形式存在。数据仓库是一个集中式存储和管理的系统,用于存储和管理大量的数据,包括历史数据和实时数据。数据集市则是一个小型的数据仓库,通常用于特定的业务领域或部门。

在构建BI系统的模型时,通常需要进行以下步骤:

  1. 数据源分析:了解和分析不同的数据源,包括数据库、数据文件、API等。
  2. 数据建模:根据业务需求和分析目标,构建适合的数据模型,包括实体关系图、星型模型、雪花模型等。
  3. 数据整合:将不同数据源的数据整合到一起,以提供全面的数据视图。
  4. 数据存储和管理:使用数据仓库或数据集市等技术,对数据进行存储和管理。
  5. 数据查询和分析:提供查询和分析工具,方便用户对数据进行查询和分析,以支持业务决策。

总之,BI系统的模型是一种针对商业数据的存储和管理方案,它通过合理地组织和存储数据,提供查询和分析工具,帮助企业更好地理解其业务数据,从而做出更明智的商业决策。

数据仓库的分层建设和分主题域建设是数据仓库构建过程中的重要环节,它们有助于更好地组织和管理数据,以满足不同层次的数据需求。

一、数据仓库的分层建设

数据仓库的分层建设是指将数据仓库划分为不同的层次,以便更好地组织和管理数据。通常,数据仓库可以分为以下几层:

  1. 数据源层:这一层包括所有的数据源,如数据库、数据文件、API等。这些数据源中的数据被整合到数据仓库中。
  2. ETL层:这一层包括数据的抽取、转换和加载过程。它从数据源层中抽取数据,经过一系列的数据清洗、转换和整合过程,最终将数据加载到数据仓库的下一层。
  3. 基础数据层:这一层包括所有基础数据,这些数据是经过ETL处理后的干净、准确、规范化的数据。这些数据是用于分析和决策的基础。
  4. 汇总层:这一层包括按照业务需求进行汇总的数据,这些数据是通过对基础数据层的数据进行计算和汇总得到的。
  5. 报表层:这一层包括所有的报表和查询,这些报表和查询是基于汇总层的数据生成的。

通过将数据仓库分层,可以更好地组织和管理数据,同时也有助于提高数据的处理效率和分析效果。

二、数据仓库的分主题域建设

数据仓库的分主题域建设是指将数据仓库划分为不同的主题域,以便更好地组织和管理数据。每个主题域都代表了企业业务中的一个方面或一个领域,例如销售、采购、库存等。每个主题域都有自己的实体、属性、关系等,用于描述该主题域的业务过程和业务活动。

主题域的划分通常是根据业务需求和分析目标来进行的。例如,一个电子商务公司的数据仓库可以划分为以下主题域:商品主题域、订单主题域、客户主题域、物流主题域等。每个主题域都有自己的数据模型和表结构,以描述该主题域的业务过程和业务活动。

通过将数据仓库划分为不同的主题域,可以更好地组织和管理数据,同时也有助于提高数据的可维护性和可重用性。此外,分主题域建设还有助于提高数据的可扩展性和灵活性,使得数据仓库可以更好地适应业务需求的变化和发展。

数据仓库的分层建设和分主题域建设是两种不同的设计方法,它们分别关注于如何组织和管理数据仓库中的信息。下面是这两种方法的解释:

数据仓库分层建设

数据仓库分层建设是一种将数据仓库划分为多个逻辑层次的方法,每个层次具有特定的角色和功能。这种分层有助于管理和维护数据仓库,并提高查询性能。

常见的数据仓库分层模型包括以下层次:

  1. 源系统层(Operational Data Store, ODS)

    • 从各个源系统获取原始数据。
    • 可能包括快照、增量或全量数据。
  2. 贴源层(Staging Layer, STG)

    • 对ODS层的数据进行初步清洗和整合。
    • 这个层次的数据用于后续处理。
  3. 明细层(Detail Layer, DWD)

    • 存储业务过程级别的详细数据。
    • 根据需要进行规范化或去冗余。
  4. 汇总层(Summary Layer, DWS)

    • 提供预先计算好的汇总数据,以支持快速查询和报告。
    • 包括聚合视图和维度表等。
  5. 应用层(Application Layer, ADS)

    • 针对具体应用程序定制的数据视图。
    • 可能包括数据集市或数据湖中的数据。
  6. 展现层(Presentation Layer, PRT)

    • 最终用户可以访问的数据格式。
    • 包括报表、仪表板和其他可视化工具使用的数据。

数据仓库分主题域建设

数据仓库分主题域建设是一种根据业务领域的特性来划分数据仓库的方法。这种方法有助于确保数据仓库中的信息与企业的战略目标保持一致,并支持跨部门的分析。

在分主题域建设中,首先定义企业中重要的业务领域(如财务、销售、人力资源等),然后为每个主题域创建相应的数据结构和存储。这些主题域之间可能存在共享的数据元素,因此也需要考虑数据的集成和一致性问题。

分主题域的建设通常涉及以下几个步骤:

  1. 业务需求分析

    • 确定关键的业务领域和指标。
    • 分析各部门的信息需求。
  2. 主题域识别

    • 根据业务需求,确定主题域的范围和边界。
    • 定义主题域之间的关系。
  3. 数据建模

    • 为每个主题域创建实体-关系模型(ER模型)。
    • 设计事实表和维度表。
  4. 物理实现

    • 根据选定的数据仓库技术选择合适的数据库管理系统(DBMS)。
    • 考虑数据分区、索引和压缩策略。
  5. 数据加载和维护

    • 使用ETL(Extract, Transform, Load)工具将数据加载到数据仓库中。
    • 实施数据质量检查和清理流程。

在实际项目中,分层建设和分主题域建设往往是相辅相成的,共同构成了一个完整的数据仓库架构。通过结合使用这两种方法,可以构建出既能满足业务需求又能有效管理数据的企业级数据仓库。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
--------语法 --建立视图 --if exists(select * from sysobjects where name='视图名') -- drop view 视图名 --go --create view 视图名 --as --select 字段名 from 表名 [条件] --go --主外健约束语句没有执行 use T90ERP go --***********人力资源 --部门表:Depet if exists(select * from sysobjects where name='Depet') drop table Depet go create table Depet ( dept_id Int primary key identity(1,1) not null, --部门编号 主键,自增 dept_name Varchar(20) not null --部门名称 ) ----约束 --alter table Depet add constraint UQ_dept_name unique (dept_name) go --职位表:Post if exists(select * from sysobjects where name='Post') drop table Post go create table Post ( Post_id Int primary key identity(1,1) not null, --职位编号 主键 自增 Post_name Varchar(50) not null, --职位名称 唯一 Post_money Money not null, --职位工资 Dept_id int not null --部门编号 外 Int 级联删除 ) ----约束 --alter table post add constraint UQ_post_name unique (post_name) alter table post add constraint FK_post_deptId foreign key(post_deptId) references depet(dept_id) go --员工信息表:Employee if exists(select * from sysobjects where name='Employee') drop table Employee go create table Employee ( Emp_id Int primary key identity(1,1) not null, --员工信息编号 主键,自增 Emp_number Varchar(50) not null, --员工工号 唯一 Emp_postId Int not null, --职位编号 外键 级联删除 Emp_hire Datetime not null, --录用时间 Emp_state Bit not null, --状态 默认1 (1在职/0离职) ) ----约束 --alter table Employee add constraint UQ_emp_number unique (emp_number) alter table Employee add constraint FK_emp_postId foreign key (emp_postId) references post(post_id) --alter table Employee add constraint DF_emp_state default(1) for emp_state go --简历表:Resume if exists(select * from sysobjects where name='Resume') drop table Resume go create table Resume ( Res_id Int primary key identity(1,1) not null, --职员信息ID 主键 非空自增 Int Emp_id Int not null, --职员ID 外键 Res_name Varchar(50) not null, --真实姓名 Res_englishname Varchar(50) null, --英文名 空 Res_idcard Varchar(19) not null, --身份证号 唯一索引 只有18位数字或18位数字加X Res_sex bit not null, --性别 默认1 男 只有男和女两种 Res_bornDate datetime not null, --出生年月 Res_nativeplace varchar(50) not null, --籍贯 Res_nation Varchar(50) not null, --民族 默认汉族 Res_health text null, --健康状况 空 默认健康 Res_diploma Varchar(50) not null, --学历 Res_address Varchar(50) null, --联系地址 空,默认地址不详 Res_Tel Varchar(50) not null, --电话 只能是11为数字 Res_photo image null --照片 空 ) ----约束 alter table Resume add constraint FK_res_empid foreign key (res_empid) references Employee(emp_id) --alter table Resume add constraint UQ_res_idcard unique (res_idcard) --alter table Resume add constraint CK_res_idcard check (res_idcard like '[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9] --[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9]' or res_idcard like '[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9] --[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9]X') --alter table Resume add constraint DF_res_sex default (1) for res_sex --alter table Resume add constraint CK_res_sex check(res_sex=1 or res_sex=0) --alter table Resume add constraint DF_res_nation default ('汉族') for res_nation --alter table Resume add constraint DF_res_health default ('健康') for res_health --alter table Resume add constraint DF_res_health defatult(1) for res_health --alter table Resume add constraint DF_res_address default ('地址不详') for res_address --alter table Resume add constraint CK_res_tel check(len(res_tel)=11) go --考勤类型表:CheckType if exists(select * from sysobjects where name='CheckType') drop table CheckType create table CheckType ( Checkt_id int primary key identity(1,1) not null, --考勤类型 主键 自增 Int Checkt_name varchar(50) not null --考勤名称(干什么) Varchar(50) ) go --考勤表:Check if exists(select * from sysobjects where name='CheckInfo') drop table CheckInfo create table CheckInfo ( Check_id int primary key identity(1,1) not null, --考勤id 主键 自增 Int Emp_id int not null, --员工id 外键 Int Check_hire datetime not null, --考勤开始时间 开始时间必须 Datetime Check_end datetime not null, --考勤结束时间 要在结束时间之前 Datatime Checkt_id int not null, --考勤类型 外键 Int Check_gtime int not null, --工休天数 Int check_time int not null --扣薪天数 Int ) ----约束 alter table CheckInfo add constraint FK_check_empId foreign key (check_empId) references Employee(emp_id) alter table CheckInfo add constraint FK_check_checktId foreign key (check_empId) references checkt(checkt_id) --alter table CheckInfo add constraint CK_check_hire check(check_hirecheck_hire) go --培训管理:Train if exists(select * from sysobjects where name='Train') drop table Train create table Train ( Train_id int primary key identity(1,1) not null, --培训编号 主键 自增 Int Train_time datetime not null, --培训日期 Datetime Train_address varchar(200) not null, --地址 Varchar(200) Train_content text not null, --内容 text Emp_id int not null, --职员编号 Int Train_teacher varchar(20) not null --讲师 Varchar(20) ) go --奖罚记录类型:PrizeAmerceType if exists(select * from sysobjects where name='PrizeAmerceType') drop table PrizeAmerceType create table PrizeAmerceType ( Prizet_id int primary key identity(1,1) not null, --奖罚记录类型id 主键 自增 Int Prizet_name varchar(50) not null, --奖罚记录名称 Varchar(50) Prizet_money money not null --奖罚金额 Money ) go --奖罚记录表:PrizeAmerceRecord if exists(select * from sysobjects where name='PrizeAmerceRecord') drop table PrizeAmerceRecord create table PrizeAmerceRecord ( Prize_id int primary key identity(1,1) not null, --奖罚记录id 主键 自增 Int Emp_id int not null, --员工id 外键 Int Prize_time datetime not null, --时间 Datetime Prizet_id int not null, --引用奖罚类型id 外键 Int Prize_desc text null, --描述 空,默认没有描述 text ) ----约束 --alter table PrizeAmerceRecord add constraint FK_prize_empid foreign key(prize_empId) references Employee(emp_id) --alter table PrizeAmerceRecord add constraint FK_prize_prizetid foreign key(prize_prizetId) references PrizeAmerceType(prizet_id) alter table PrizeAmerceRecord add constraint DF_prize_desc default('没有描述') for prize_desc go --档案:Record if exists(select * from sysobjects where name='Record') drop table Record create table Record ( Re_id int primary key identity(1,1) not null, --档案id 主键 自增 Int Re_code varchar(50) not null, --档案代码 日期+随即数生成 Varchar(50) Emp_id int not null, --员工id 外键 Int Prize_id int not null --奖罚记录id 外键 Int ) ----约束 --alter table Record add constraint FK_re_empId foreign key (re_empId) references Employee(emp_id) go --薪资表:SalaryInfo if exists(select * from sysobjects where name='SalaryInfo') drop table SalaryInfo create table SalaryInfo ( Sal_id int primary key identity(1,1) not null, --薪水表ID 主键 自增 Int Emp_id int not null, --职员ID 外键 Int Sal_bonus money not null, --奖金 Money Sal_deduct numeric(18,2) not null, --扣除 Numerica(18,2) Sal_tax money not null, --扣税 Money 默认为0 Sal_sum money not null, --总薪水 Money Sal_date smalldatetime not null --发放日期 smalldatetime ) ----约束 --alter table SalaryInfo add constraint FK_sal_empid foreign key (sal_empId) references Employee(emp_id) go --***********采购管理 --供应商级别:LevelInfo if exists(select * from sysobjects where name='LevelInfo') drop table LevelInfo create table LevelInfo ( Level_id int primary key identity(1,1) not null, --级别编号 主 自增 Int Level_name varchar(10) not null --级别名称 Varchar(10) ) go --供应商:Victualer if exists(select * from sysobjects where name='Victualer') drop table Victualer create table Victualer ( Victu_id int primary key identity(1,1) not null, --供应商编号 主 自增 Int Victu_name varchar(100) not null, --名称 Varchar(100) Level_id int not null, --级别编号 外,LevelInfo表 Int Victu_people varchar(20) not null, --联系人 Varchar(20) Victu_telephone varchar(11) not null, --联系电话 Varvhar(11),必须是11位 Victu_email varchar(50) null, --邮件 空,必须符合邮件格式 Varchar(50) Victu_address text not null, --联系地址 Text 默认地址不详 Victu_remark text null --备注 空,默认没有备注 Text ) ----约束 --alter table Victualer add constraint FK_Victu_levelId foreign key(Victu_levelId) references LevelInfo(Level_id) alter table Victualer add constraint CK_Victu_telephone check(len(victu_telephone)=11) alter table Victualer add constraint CK_Victu_email check(victu_email like '%@%.%') alter table Victualer add constraint DF_Victu_remark default ('没有描述') for victu_remark alter table Victualer add constraint DF_Victu_address default ('地址不详') for victu_address go --商品类别:Sort if exists(select * from sysobjects where name='Sort') drop table Sort create table Sort ( Sort_id int primary key identity(1,1) not null, --类别编号 主 自增 Int Sort_name varchar(50) not null --类别名称 Varchar(50) ) go --商品规格表:Spec if exists(select * from sysobjects where name='Spec') drop table Spec create table Spec ( Spec_id int primary key identity(1,1) not null, --规格编号 主 自增 Int Spec_name varchar(50) not null --规格名称 Varchar(50) ) go --商品表:Product if exists(select * from sysobjects where name='Product') drop table Product create table Product ( Pro_id int primary key identity(1,1) not null, --商品编号 主 自增 Int Pro_code varchar(20) not null, --商品代码 按日期+随机数生成,唯一 Varchar(20) Pro_name varchar(50) not null, --商品名称 Varchar(50) Sort_id int not null, --类别编号 外,Sort表 Int Spec_id int not null, --规格编号 外,Spec表 Int Pro_count int not null, --数量 Int Pro_inPrice money not null, --进货价 Money Pro_outPrice money not null, --销售价 Money Victu_id int not null, --供应商编号 外,Victualer表 Int 级联删除 Pro_remark text null --备注 空,默认没有备注 Text ) ----约束 go --询价单:AskPrice if exists(select * from sysobjects where name='AskPrice') drop table AskPrice create table AskPrice ( Ask_id int primary key identity(1,1) not null, --询价单编号 主 自增 Int Victu_id int not null, --供应商编号 外,Victualer表 Int Pro_id int not null, --商品编号 外,Product表 Int ask_price money not null, --报价 Money Ask_time datetime not null --添加时间 Datetime ) ----约束 go --采购单: BuyBill if exists(select * from sysobjects where name='BuyBill') drop table BuyBill create table BuyBill ( Buybill_id int primary key identity(1,1) not null, --采购单编号 主 自增 Int Buybill_num varchar(20) not null, --采购单据号 按日期+随机数生成,唯一 varchar(20) Emp_id int not null, --采购员编号 外,职员表 Int Buybill_time datetime not null, --采购时间 采购时间必须在交货时间之前 Datetime Buybill_delitime datetime not null, --交货时间 Datetime Buybill_remark text not null, --合同备注 Text Buybill_Isexam bit not null --库管是否审批 bit ) ----约束 go --采购明细表: BuyList if exists(select * from sysobjects where name='BuyList') drop table BuyList create table BuyList ( Buylist_id int primary key identity(1,1) not null, --采购明细编号 主 自增 Int Buybill_id int not null, --采购单编号 外,Buybill表 Int Pro_id int not null, --商品编号 外,Prduct表 Int Buylist_Count int not null, --采购数量 Int Buylist_price money not null, --采购价 Money Victu_id int not null, --供应商编号 外,Vitcualer表 Int Dsub_id int not null --采购单商品仓库编号 外,DepotSubarea表 Int ) ----约束 go --采购付款单:PayBill if exists(select * from sysobjects where name='PayBill') drop table PayBill create table PayBill ( Pay_id int primary key identity(1,1) not null, --付款单编号 主 自增 Int Buybill_id int not null, --采购单编号 外,Buybill表 Int Pay_oncoming money not null, --此次付款 如果应付款分为几次付 Money Pay_deal money not null, --应付款 则应付款应该要保持一致 Money Emp_id int not null, --财务部审批人编号 外,职员表 Int Pay_Isexam bit not null, --财务部是否审批 bit Pay_remark text null --备注 空,默认没有备注 text ) ----约束 go --采购退货单:MoveBill if exists(select * from sysobjects where name='MoveBill') drop table MoveBill create table MoveBill ( Move_id int primary key identity(1,1) not null, --退货单编号 主 自增 Int Buybill_id int not null, --采购单编号 外,Buybill表 Int Move_time datetime not null, --退单日期 退单日期必须是在采购日期之后 Datetime Dsub_id int not null, --库管审批人编号 外, Int Move_Isexam bit not null, --库管是否审批 Bit Move_remark text null --备注 空,默认没有备注 Text ) ----约束 go --***********仓库管理 --库区表:DepotSubarea if exists(select * from sysobjects where name='DepotSubarea') drop table DepotSubarea create table DepotSubarea ( Dsub_id int primary key identity(1,1) not null, --库区id 主键 自增 Int Dsub_name varchar(10) not null,--库区名称 Varchar(10) Dsub_type varchar(10) not null--仓库类别 Varchar(10) ) go --移动类型表:Transfer if exists(select * from sysobjects where name='Transfer') drop table Transfer create table Transfer ( Tran_id int primary key identity(1,1) not null, --移动类型id 主键 自增 Int Tran_name varchar(20) not null --移动类型名称 Varchar(20) ) go --入库明细表:PutInfo if exists(select * from sysobjects where name='PutInfo') drop table PutInfo create table PutInfo ( Put_id Int primary key identity(1,1) not null, --入库明细id 主键 自增 Put_code Varchar(20) not null, --入库单代码 日期+随即数生成 Buybill_id Int not null, --采购单编号 外键 Put_time Datetime not null, --入库时间 Put_people varchar(20) not null, --入库人 Dsub_id Int not null, --库区 外键 级联删除 Tran_id Int not null --移动类型 外键 ) ----约束 go --库存表:Stock if exists(select * from sysobjects where name='Stock') drop table Stock create table Stock ( Stock_id Int primary key identity(1,1) not null, --库存编号 主键 自增 Dsub_id Int not null,            --库区id 外键 Pro_id Int not null,              --商品id 外键 Stock_number Int not null             --商品数量 ) ----约束 go --出库明细表:OutInfo if exists(select * from sysobjects where name='OutInfo') drop table OutInfo create table OutInfo ( Out_id Int primary key identity(1,1) not null, --出库明细id 主键 自增 Out_code Varchar(20) not null, --出库单据号 唯一 Out_time Datetime not null, --出库时间 Out_llr Varchar(20) not null, --领料人 Out_flr Varchar(20) not null, --发料人 Out_tranId Int not null, --移动类型 Out_dsubId Int not null --库区 ) ----约束 go --补仓管理:RepairDepot if exists(select * from sysobjects where name='RepairDepot') drop table RepairDepot create table RepairDepot ( Repa_id Int primary key identity(1,1) not null, --补仓id 主键 自增 Pro_id Int not null, --商品id 外键 Repa_number Int not null, --补仓数量 Repa_dsubId Int not null, --库区表 外键 Repa_remark text null --备注 空,默认没有备注 ) ----约束 go --***********销售管理 --客户级别表(CustLevel) if exists(select * from sysobjects where name='CustLevel') drop table CustLevel create table CustLevel ( Cl_id Int primary key identity(1,1) not null,   --编号 主,自增 Cl_name Varchar(10) not null,           --级别名称 Cl_discount float not null            --折扣 ) --约束 go --客户信息表(customer) if exists(select * from sysobjects where name='customer') drop table customer create table customer ( C_id int primary key identity(1,1) not null,   --编号 主,自动增长 C_number Varchar(10) not null,          --客户代号 C_name Varchar(20) not null,            --客户名称 C_linkman Varchar(20) not null,        --联系人 C_phone Varchar(11) not null,          --联系电话 C_address Text null,              --公司地址 空,默认地址不详 Cl_id Int not null,              --级别编号 外 C_remark text null,               --备注信息 默认没有备注 空 ) --约束 go --订单表(orders) if exists(select * from sysobjects where name='orders') drop table orders create table orders ( O_id int primary key identity(1,1) not null,  --编号 主,自增 O_number Varchar(20) not null,         --订单代码 日期+随即数生成 O_timestart datetime not null,        --下单日期 下单时间必须在交货时间之前 O_timestop Datetime not null,         --交货日期 O_money Money not null,             --下单金额 C_id Int not null,             --客户编号 外 级联删除 Emp_id int not null              --员工编号 外 ) --约束 go --订单明细表(OrderDetails) if exists(select * from sysobjects where name='OrderDetails') drop table OrderDetails create table OrderDetails ( Od_id Int primary key identity(1,1) not null,   --编号 主,自增 O_id int not null,                --订单编号 外 Pro_id int not null,                --商品编号 外 Od_price Money not null,               --单件金额 Od_accounts Int not null               --单件数量 ) --约束 go --销售单表(Sells) if exists(select * from sysobjects where name='Sells') drop table Sells create table Sells ( Sell_id int primary key identity(1,1) not null,    --编号 主,自增 O_id int not null,                 --订单编号 外 Sell_timestart datetime not null,           --销售日期 下单时间必须在交货时间之前 Sell_timestop Datetime not null,            --交货日期 Sell_money Money not null,              --销售金额 C_id Int not null,              --客户编号 外 Emp_id int not null,               --员工编号 外 Sell_remark text null                   --备注 空 ) --约束 go --销售单明细表(SellDetails) if exists(select * from sysobjects where name='SellDetails') drop table SellDetails create table SellDetails ( Selld_id int primary key identity(1,1) not null,   --编号 主,自增 O_id int not null,               --订单编号 Pro_id int not null,              --商品编号 Selld_price Money not null,             --单件金额 Selld_accounts Int not null              --单件数量 ) --约束 go --***********财务管理 --财务科目表:FinaSub if exists(select * from sysobjects where name='FinaSub') drop table FinaSub create table FinaSub ( Fina_id Int primary key identity(1,1) not null, --科目编号 主,自增 Fina_name Varchar(50) not null, --科目名称 Fina_accounts Varchar(50) not null, --银行账号 随机数生成 Fina_people Varchar(50) not null, --联系人 Fina_telephone Varchar(11) not null, --联系电话 Fina_mode Varchar(10) not null, --是借或贷 Fina_play Varchar(10) not null, --借贷方式(现金、发票) Fian_money money not null --金额 ) go --发票信息表:Invoice if exists(select * from sysobjects where name='Invoice') drop table Invoice create table Invoice ( Invo_id Int primary key identity(1,1) not null, --发票编号 主,自增 Invo_code Varchar(50) not null, --发票单据号 日期+随机数生成,唯一 Invo_type Varchar(10) not null, --发票类型 Invo_money money not null, --金额 Invo_use Varchar(50) not null, --发票用途 Invo_datetime Datetime not null, --发票日期 Emp_id int not null --财务员编号 外,职员表 ) ----约束 go --固定资产表:FixedAssets if exists(select * from sysobjects where name='FixedAssets') drop table FixedAssets create table FixedAssets ( Fix_id Int primary key identity(1,1) not null, --资产编号 主,自增 Fix_name Varchar(100) not null, --资产名称 Fix_money Money not null, --可汇兑金额 Fix_datetime Datetime not null, --添加时间 Fix_remark Text null, --备注 空,默认没有备注 ) ----约束 go --财务员统计视图 --***********权限管理 --用户表:UserInfo if exists(select * from sysobjects where name='UserInfo') drop table UserInfo create table UserInfo ( u_id int primary key identity(1,1) not null, --用户编号,主,自增 u_name varchar(20) not null, --用户名,即登录名 u_pass varchar(10) not null, --登录密码 u_time datetime not null --登录时间 ) --insert into UserInfo values('admin','admin','2008-08-05') --insert into UserInfo values('yqh','yqh','2008-08-05') --insert into UserInfo values('gogo','gogo','2008-08-05') --insert into UserInfo values('wangwang','wangwang','2008-08-05') select * from UserInfo go --角色表:RolesInfo if exists(select * from sysobjects where name='RolesInfo') drop table RolesInfo create table RolesInfo ( r_id int primary key identity(1,1) not null, --角色编号,主,自增 r_name varchar(20) not null, --角色名称,即职位名称,唯一 r_desc text null --角色描述,空,默认没有描述 ) alter table RolesInfo add constraint UQ_r_name unique (r_name) alter table RolesInfo add constraint DF_r_desc default ('没有描述') for r_desc --insert into RolesInfo values('系统管理员','可以有任何操作') --insert into RolesInfo values('总经理','最高管理者') --insert into RolesInfo values('部门经理','管理者') --insert into RolesInfo values('普通员工',default) select * from RolesInfo go --用户和角色中间表(因为是、一对多的关系):UserRolesCenter if exists(select * from sysobjects where name='UserRolesCenter') drop table UserRolesCenter create table UserRolesCenter ( c_id int primary key identity(1,1) not null, --中间表编号,主,自增 u_id int not null, --外,用户编号,修改和删除规则都是层叠 r_id int not null --外,角色编号,修改和删除规则都是层叠 ) alter table UserRolesCenter add constraint FK_u_id foreign key (u_id) references UserInfo(u_id) alter table UserRolesCenter add constraint FK_r_id foreign key (r_id) references RolesInfo(r_id) --insert into UserRolesCenter values(1,1) --insert into UserRolesCenter values(1,2) --insert into UserRolesCenter values(2,2) --insert into UserRolesCenter values(3,3) --insert into UserRolesCenter values(4,4) select * from UserRolesCenter --delete from UserRolesCenter where c_id=5 --查询视图 select * from UserRolesView --查询角色1中已有的用户,利用视图 select * from UserRolesView where r_id=1 --查询角色1中没有的用户,利用子查询,用户表中的所有用户减去角色中已有的用户 Select * from UserInfo where u_id not in (select u_id from UserRolesView where r_id=1) go --菜单表:MenuInfo if exists(select * from sysobjects where name='MenuInfo') drop table MenuInfo create table MenuInfo ( M_id Int primary key identity(1,1) not null,--菜单编号 主,自增 M_name Varchar(50) not null,--菜单名称 M_url Varchar(50) null,--菜单链接 空 M_parentId int not null,--父菜单编号 ) --约束 --insert into MenuInfo values('系统权限管理','',0) --insert into MenuInfo values('人力资源管理','',0) --insert into MenuInfo values('采购管理','',0) --insert into MenuInfo values('仓库管理','',0) --insert into MenuInfo values('销售管理','',0) --insert into MenuInfo values('财务管理','',0) select * from MenuInfo go --4.角色和菜单中间表即权限表:PowerInfo if exists(select * from sysobjects where name='PowerInfo') drop table PowerInfo create table PowerInfo ( P_id Int primary key identity(1,1) not null,--权限编号 主 R_id Int not null,--角色编号 外 ,修改和删除规则都是层叠 M_id int not null,--菜单编号 外 ,修改和删除规则都是层叠 ) --约束 alter table PowerInfo add constraint FK_pr_id foreign key (r_id) references RolesInfo(r_id) alter table PowerInfo add constraint FK_m_id foreign key (m_id) references MenuInfo(m_id) --insert into PowerInfo values(1,1) --insert into PowerInfo values(1,2) --insert into PowerInfo values(2,2) --insert into PowerInfo values(3,3) --insert into PowerInfo values(4,4) select * from PowerInfo --查询视图 select * from RolesMenuView --查询角色1中已有的功能,利用视图 select * from RolesMenuView where r_id=1 --查询角色1中没有的功能,利用子查询,菜单表中的所有功能减去角色中已有的功能 Select * from MenuInfo where m_id not in (select m_id from RolesMenuView where r_id=1) go
ERP项目的数据库设计需要考虑多个因素,包括数据源的获取、数据同步和性能优化等。根据引用内容,可以考虑以下几点: 1. 数据源获取:根据引用\[1\],报表类需求需要获取所有的分店数据,可以使用多线程去切换数据源查询。可以考虑使用drds数据库中间件,但需要注意drds只支持mysql数据库。另外,引用\[2\]中提到了使用shardingjdbc数据库中间件的方案,可以配置所有的数据源,并使用sdid和scity作为数据库路由字段,实现分库分表的需求。 2. 数据同步:引用\[1\]中提到了老数据迁移成功后仍存在数据同步的问题。可以考虑使用消息队列或者sqlserver日志解决毫秒级数据更新的方式,以实现及时同步数据。这样可以确保数据源的整合到阿里云drds中,并方便后期的维护和扩展。 3. 性能优化:引用\[2\]中提到了shardingjdbc对于一些SQL操作的支持有限,特别是分页操作。在设计数据库时,需要考虑到业务需求,并选择合适的持久层框架,如mybatis,以满足业务需求并提高性能。 综上所述,ERP项目的数据库设计可以考虑使用drds数据库中间件或shardingjdbc数据库中间件,结合消息队列或sqlserver日志实现数据同步,以及选择合适的持久层框架进行性能优化。 #### 引用[.reference_title] - *1* *2* *3* [浅谈erp系统数据库设计](https://blog.csdn.net/AscaryBird/article/details/80719021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值