加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【软件技术】MIS系统中信息编码的应用示例

(2022-05-14 17:46:02)
分类: 软件技术
在软件中如何表示现实世界的物理实体或者信息实体,是一个很大的问题。现实世界的物理实体如人、自行车、物品等,信息实体如考试分数、数量等等。

编程中常常会遇到名称相同的情况,例如组织中存在姓名相同的员工,多层级组织中存在名称相同的部门,ERP软件的BOM表等,这就需要为信息定义一个名称,比如,张小小语文考了90分,语文成绩是信息的名称,90分是信息的内容。

下面是国家商品编码中心的对信息编码的描述:

“为了避免同一种信息有不同的编码,信息编码应当包含信息特征。例如,在编码产品零部件和工装夹具时,不宜使用自然序号、产品所属号等方式,而应该依据零部件结构特征、工装夹具结构特征来编码,这样容易做到相同结构的零部件、工装夹具自然有相同的编码,类似结构的零部件、工装夹具有类似的编码,不同结构的零部件、工装夹具有不同的编码。在这种方式下,当为某个新零部件、工装夹具编写编码时,就可以很容易地发现具有这种结构特征的零部件、工装夹具是否存在,从根本上解决一物多码现象。这种有效地重用以前的知识、经验、成果的编码思想称为重用性原则。”

“信息编码是组织实现数字化管理的基础,是管理信息系统中各种信息最主要的标识和特征。也是组织最基础、最重要的规章制度之一。鉴于信息编码的重要性,信息编码规则确定并且信息编码使用之后,一般不允许改变。如果频繁地修改信息编码规则,那么有可能引起管理信息系统无法正确地识别信息和无法有效地执行管理功能,最终可能导致整个组织处于无序状态。这是信息编码不可更改性原则的要求。 物品编码是数字化的“物”信息,是现代化、信息化的基石。近年来不断出现的物联网、云计算、智慧地球等新概念、新技术、新应用,究其根本,仍是以物品编码为前提。”

“所谓物品,通常是指各种有形或无形的实体,在不同领域可有不同的称谓。例如,产品、商品、物资、物料、资产等,是需要信息交换的客体。物品编码是指按一定规则对物品赋予易于计算机和人识别、处理的代码。物品编码系统是指以物品编码为关键字(或索引字)的物品数字化信息系统。物品编码体系是指由物品编码系统构成的相互联系的有机整体。”

世界是如此复杂,如何从信息的角度描述信息对象,我们就需要从信息编码的方法层面考虑这个问题。

信息编码的目的,信息编码的目的在于为计算机中的数据与实际处理的信息之间建立联系,提高信息处理的效率。

信息编码需要:统一分类、统一编码、统一维护、统一发布、统一管理。

信息编码类型:顺序码,区间码、记忆码

---------------------------------------

下面以学生考试成绩为例,从数据库的角度示例一下编码的使用方法:

三个需要信息编码的表:姓名,科目,年级

CREATE TABLE [dbo].[姓名] (
    [CodeID] INT NOT NULL, //需要编码
    [Name]   NVARCHAR (254) NOT NULL,
    CONSTRAINT [PK_姓名] PRIMARY KEY CLUSTERED ([CodeID] ASC)
);

CREATE TABLE [dbo].[年级] (
    [CodeID] INT NOT NULL,//需要编码
    [Name]   NVARCHAR (254) NOT NULL,
    CONSTRAINT [PK_年级] PRIMARY KEY CLUSTERED ([CodeID] ASC)
);

CREATE TABLE [dbo].[科目] (
    [CodeID] INT NOT NULL,//需要编码
    [Name]   NVARCHAR (254) NOT NULL,
    CONSTRAINT [PK_科目] PRIMARY KEY CLUSTERED ([CodeID] ASC)
);

成绩表,应用了信息编码

CREATE TABLE [dbo].[成绩表] (
    [ID] INT IDENTITY (1, 1) NOT NULL,
    [CodeID_姓名] INT NOT NULL,
    [CodeID_科目] INT NOT NULL,
    [CodeID_年级] INT NOT NULL,
    [成绩] INT NOT NULL,
    CONSTRAINT [PK_成绩表] PRIMARY KEY CLUSTERED ([ID] ASC),
);

读出成绩表方法1:

SELECT 姓名.Name,年级.Name,科目.Name,成绩表.成绩
FROM 姓名,年级,科目,成绩表
WHERE
    成绩表.CodeID_姓名 = 姓名.CodeID AND
    成绩表.CodeID_年级 = 年级.CodeID AND
    成绩表.CodeID_科目 = 科目.CodeID
    
读出成绩表方法2:

SELECT 姓名.Name,年级.Name,科目.Name,成绩表.成绩
FROM 成绩表
    INNER JOIN 姓名 ON 成绩表.CodeID_姓名 = 姓名.CodeID
    INNER JOIN 年级 ON 成绩表.CodeID_年级 = 年级.CodeID
    INNER JOIN 科目 ON 成绩表.CodeID_科目 = 科目.CodeID
    




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有