---
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/b3fb4620-4fbc-4223-b708-56911123cd80"
publicId: "b3fb4620-4fbc-4223-b708-56911123cd80"
---

# 文件和文档的关系

## 1、文件和文档的说明如图所示

## ![image.png](https://weapp.eteams.cn/api/file/preview?fileId=1281126480338419718&type=imgs)

![image.png](https://weapp.eteams.cn/api/file/preview?fileId=1281126712216322052&type=imgs)

2、文件和文档如何进行关联的

- fileobj 的id 是文件id
- document 的id 是文档id

 **（1）文件上传默认生成文档的场景**

 此场景下，关联关系为： 文件 Fileobj 表的doc\_id 是文档表 document 的id， 文档表 document  的 DOC\_FILE 是 fileobj 表的 id

 （**2）当文档已经生成，在文档内上传附件的场景**

 此场景下，关联关系为：文件Fileobj表的 module 字段是 document，ref\_id 字段是文档表 document 的id

** （3）office 正文文档中的正文是怎么关联的**

此场景下，关联关系为：文档表 document 的content 是fileobj 表的id。fileobj 表不记录文档id

## 3、如何根据文档id获取文件

```java
-- 场景1：上传文件生成文档的主文件
SELECT 
    f.*
FROM fileobj f
WHERE f.doc_id = #{docId}

UNION

SELECT 
    f.*
FROM fileobj f
WHERE f.module = 'document' 
  AND f.ref_id = #{docId};
```

** 此sql，只能获取文档的附件，正文附件获取不到**

## 3、如何根据文件id获取文档

```java
select * from fileobj where Id = 文件id
```

- 若 doc\_id 有值，则是文档id
- 若doc\_id 没有值，则若是 module=document。则ref\_id 有值的话，就是文档id
