企业信息相关领域知识总结和数据库表设计和数据解析存储代码实现

前言

去年写了一个企查查企业数据批量解析的程序,并入到自己设计的一个pgsql的表中,其中了解了一些企业相关的领域知识,简单总结一下以备查阅。

注:以下部分内容来自MoonShot AI大模型的输出结果。

关于企业各维度特征知识

企业名称

登记状态

企业登记状态指的是企业在工商行政管理部门登记的经营状况,用于反映企业的法律地位和经营活动是否正常。一般来说,企业经营状态可分为以下几种(可以看到企查查企业数据在登记状态维度没有进行很严谨的规整化):

  • 存续,表明企业依法存在并继续正常经营

  • 在业,或称为“正常”,说明企业正常生产经营

  • 吊销:工商局对违法企业做出了行政处罚。企业被吊销后,需要依法完成清算并办理工商注销手续才算注销。

  • 注销:企业不复存在,丧失法人资格(具备能够行使权利及承担义务的法律能力

  • 停业:企业因某种原因暂时停止生产经营活动,待条件改变后可能恢复生产。

  • 清算:企业按章程规定解散或因破产、被吊销等原因宣布终止经营后,对企业的财产、债权、债务进行全面清查,并进行债权收取、债务清偿和剩余财产分配的经济活动。

  • ……

可以通过国家企业信用信息公示系统查询中国企业的登记状态

法定代表人

代表法人(具有民事权利能力和民事行为能力,依法独立享有民事权利和承担民事义务的组织,与之相对的概念是自然人)实行职权的负责人。借用“月之暗面”大模型的能力,解释何为“法定代表人”。

注册资本

注册资本,又称为注册股本或法定资本,是指公司在成立时股东或发起人按照公司章程约定向公司投入的资金总额。这个数额在公司注册时需要向工商行政管理部门申报,并在公司的营业执照上公示。注册资本是公司运营的初始资金,它体现了公司的经济实力和偿债能力。

需要注意,注册资本并不等同于公司的实际运营资金。在一些国家和地区,注册资本可以是认缴制,即股东承诺在未来某个时间点投入资金,而不是在公司成立时立即投入。例如在中国,截止目前,关于企业注册资本的规定:企业在工商行政管理部门登记时申报的资本总额,它是企业股东或者发起人承诺向企业投入的资金总额。

  • 注册资本与破产清算的关系

在破产清算中,注册资本作为企业资产的一部分,会参与到债务的清偿过程中,但其数额并不直接决定债务的偿还额度。

统一社会信用代码

统一社会信用代码(Unified Social Credit Identifier, USCI)是一组用于法人和其他组织身份识别的18位代码,即组织的”身份证号“。

类似身份证号中包含了人的籍贯、生日、性别等信息,统一社会信用代码也包含企业的一些特征信息,具体结构如下:

  1. 登记管理部门代码(1位):表示负责登记管理的部门。
  2. 机构类别代码(1位):表示法人或其他组织的类别。
  3. 登记管理机关行政区划码(6位):表示法人或其他组织注册地的行政区划,编码的标准为GB/T 2260。
  4. 主体标识码(9位):采用组织机构代码,用于唯一标识一个法人或其他组织。
  5. 校验码(1位):用于验证代码的正确性。

举例来说,如下图所示:登记管理部门代码中的9表明企业由工商行政管理部门登记;机构类别代码的1表示法人为企业;登记管理机关行政区划码中的440300是深圳市的某个区划,420106是武汉市的某个区划。

对校验码计算详情感兴趣的同学可以参考如下文章:

注册地址和通信地址

企业注册地址是企业在注册时在相关行政部门登记的法定地址,是企业对外的正式地址,通常用于法律文件、官方通知、税务登记等正式场合。企业的注册地址不能随意更改,需要经过一定的法律程序,并在工商行政管理部门进行变更登记。

通信地址是企业用于日常通信,如接收邮件、包裹等的地址,可以跟注册地址相同也可以不同,通常来说是企业的实际办公地址。通信地址的变更通常不需要经过工商行政管理部门的批准,企业可以根据实际需要自行更改。

tips:企业注册地址通常与社保缴纳相关联。企业需要根据注册地的政策和规定,为员工缴纳养老保险、医疗保险、失业保险、工伤保险和生育保险等社会保险。

纳税人识别号、注册号、组织机构代码

纳税人识别号(Taxpayer Identification Number, TIN)是税务登记证上的一个唯一编码,通常简称为“税号”。这个号码用于税务管理、税收征管以及与税务相关的其他业务活动中,以便于税务机关识别纳税人身份,确保税收信息的准确性和完整性。

注册号原来是企业在工商行政管理部门进行注册登记时获得的一个唯一识别码,又称为工商注册号。这个号码主要用于标识企业的法律身份,是企业法人资格的证明,也是企业在进行各种商业活动、签订合同、开立银行账户、缴纳税费等事务时必须提供的重要信息。

组织机构代码(Organization Code)是在中国境内依法注册、依法登记的机关、企事业单位、社会团体以及其他组织机构颁发的一个唯一、不变的标识。这个代码由九位数字或字母和一位校验码组成,用于在全国范围内唯一标识一个法人或其他组织。

需要注意的是,在“三证合一”改革后,纳税人识别号、工商注册号、组织机构代码已统一合并为统一社会信用代码。对于新设立的企业,其统一社会信用代码包含了原来的组织机构代码。对于改革前已设立的企业,如果尚未更换新的营业执照,其组织机构代码仍然有效。

参考资料:“三证合一”后纳税人识别号有何变化?

参保人数

企业参保人数指的是企业为其员工缴纳社会保险的人数。这通常包括养老保险、医疗保险、失业保险、工伤保险和生育保险等。企业为员工缴纳社会保险是法定义务,也是保障员工权益的重要措施。

企业类型

企业类型是根据企业的资本结构、所有权、经营范围、规模和法律地位等因素进行分类的。不同的国家和地区可能有不同的分类标准。企查查的企业数据中包括了如下所示企业类型:

  • 有限责任公司(Limited Liability Company, LLC):股东对公司的债务承担有限责任,即只需承担其出资额的责任。有限责任公司可以由一个或多个股东设立。

  • 股份有限公司(Joint Stock Limited Company):公司资本分为等额股份,股东以其持有的股份为限对公司债务承担责任。股份有限公司可以公开发行股票,吸引更多投资者。

  • 个人独资企业(Sole Proprietorship):由一个自然人投资设立,独资企业主对企业的债务承担无限责任。

  • 合伙企业(Partnership):由两个或多个合伙人共同出资设立,合伙人对合伙企业的债务承担无限连带责任。

  • 国有企业(State-owned Enterprise, SOE):由国家投资设立,国家拥有全部或主要资本的企业。

  • 集体企业(Collective Enterprise):由集体经济组织或集体成员投资设立的企业。

  • 外资企业(Foreign-funded Enterprise):外国投资者在中国境内设立的企业,包括外商独资企业、中外合资经营企业、中外合作经营企业等。

  • 非营利组织(Non-profit Organization):不以盈利为目的,主要从事社会服务、慈善、教育、科研等活动的组织。

不同企业类型在税收政策、经营范围、管理结构、法律责任等方面有所不同。

企业规模

企业规模可分为大、中、小、微四类,会结合营收、人数等特征定义,不同行业的规模划分标准不同。企业规模的不同享受的税收优惠、金融支持、产业政策不同。

相关文档:

核准日期

核准日期是指企业注册过程中,工商行政管理部门审查并批准企业设立登记的日期。这一天之后,企业便获得了合法的法人资格,可以开展商业活动。核准日期通常会在企业的营业执照或相关法律文件上明确标注。

在实际操作中,企业成立日期和核准日期可能是同一天,尤其是在企业注册流程简化的情况下。但在某些情况下,如果注册过程中需要额外的审查或补充材料,核准日期可能会晚于成立日期。

国标行业类别

截止目前,国标行业类别通常指《国民经济行业分类》(GB/T 4754-2017)所规定的行业。在标准文件中,国民经济行业被划分为20个门类、97个大类。这些门类和大类涵盖了从农业到服务业的各个经济活动领域。

关于国标行业数据相关内容,可以参考此前博客行业知识图谱构建及探索性分析项目(第一篇) | CoolCats

数据表结构设计

概念设计思路

大体上,企业表的设计需要容纳上一小节所展示的字段,但针对一些类别型属性(如企业规模)会进行一定编码,地理位置型属性(比如注册地址、通信地址)会加入空间数据结构的存储,多单位数额型属性(比如注册资本)会将数值和单位拆分或者统一单位以便于后续统计或排序。

另外,为了进行数据入库审计,增加数据入库时间和数据最后更新时间字段便于统计数据增量和变更时间等信息。

完整字段说明如下:

class Company(Base):
    __tablename__ = 'company'

    id = Column(BigInteger, primary_key=True, server_default=text("nextval('company_id_seq'::regclass)"), comment='自增长ID')
    full_name = Column(String(256), nullable=False, comment='企业全称')
    short_name = Column(String(256), comment='企业简称')
    insured_people_number = Column(Integer, server_default=text("0"), comment='参保人数')
    business_scope = Column(Text, comment='经营范围')
    registered_address = Column(String(255), comment='企业注册地址')
    english_name = Column(String(256), comment='英文名称')
    region = Column(String(128), comment='所属地区')
    representative = Column(Text, comment='法定代表人')
    registration_status = Column(String(32), comment='登记状态')
    registered_capital_value = Column(Float(53), comment='注册资本(值)')
    registered_capital_unit = Column(String(32), comment='注册资本(单位)')
    registered_capital_currency = Column(CHAR(32), comment='注册资本(币种)')
    unified_social_credit_identifier = Column(String(64), unique=True, comment='统一社会信用代码')
    phone = Column(String(64), comment='电话')
    more_phone = Column(Text, comment='更多电话')
    email = Column(String(512), comment='邮箱')
    more_email = Column(Text, comment='更多邮箱')
    province_name = Column(String(64), comment='所属省份')
    city_name = Column(String(64), comment='所属城市')
    district_name = Column(String(64), comment='所属区县名称')
    mailing_address_point = Column(Geometry("POINT"), comment='通信地址(坐标点)')
    type_name = Column(String(64), comment='企业/机构类型(名称)')
    taxpayer_registeration_number = Column(String(32), unique=True, comment='纳税人识别号')
    registration_number = Column(String(64), comment='注册号')
    institution_code = Column(String(64), comment='机构代码')
    insured_number_annal = Column(Integer, comment='参保人数所属年报')
    scale_code = Column(String(8), comment='企业规模编码')
    former_name = Column(String(512), comment='曾用名')
    official_website = Column(Text, comment='官网地址')
    profile = Column(Text, comment='企业简介')
    gb_industry_name = Column(String(32), comment='国标行业门类')
    gb_major_industry_name = Column(String(32), comment='国标行业大类')
    gb_medium_industry_name = Column(String(32), comment='国标行业中类')
    gb_small_industry_name = Column(String(32), comment='国标行业小类')
    operating_period = Column(String(128), comment='营业期限')
    mailing_address = Column(Text, comment='通信地址')
    registered_address_point = Column(Geometry("POINT"), comment='注册地址坐标点')
    qichacha_category_name = Column(String(32), comment='企查查行业门类')
    qichacha_major_category_name = Column(String(32), comment='企查查行业大类')
    qichacha_medium_category_name = Column(String(32), comment='企查查行业中类')
    qichacha_small_category_name = Column(String(32), comment='企查查行业小类')
    data_source_id = Column(Integer, comment='数据源ID')
    nick_name = Column(String(32), comment='别称')
    country_name = Column(String(64), comment='所属国家名称')
    registered_capital_string = Column(String(128), comment='注册资本(字符)')
    created_at = Column(DateTime(True), server_default=text("CURRENT_TIMESTAMP"))
    updated_at = Column(DateTime(True), server_default=text("CURRENT_TIMESTAMP"))
    approval_date = Column(Date)
    founded_date = Column(Date)

其中统一社会信用代码、纳税人识别号具有唯一约束,用于唯一标识一条企业数据,也可以用于关联其他企业数据源的数据。

物理设计思路

针对查询次数较多且类别数量不少的类别属性字段(如各级国标行业类别、企业规模),建立索引加速查询。针对注册地址、通信地址空间属性建立空间索引,加速空间查询。

数据示例

  • 查询最后100行(截止目前)

  • 查询各规模企业数量(截止目前)

项目地址

https://github.com/Coolgiserz/Awesome-Data-Tools-Collections/tree/dev/company_info_persist

关于数据源的说明:企业工商信息主要来自企查查,地理空间信息来自高德地图开放平台。

最后

后续将完善企业行业、上下游企业、控制企业等数据表的设计。

CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发