如何创建实现规范化概念的 SQL 表

问题描述 投票:0回答:1
文件 文档附件 附件日期 地点 示例文件
阿达尔
口粮

我想为上面创建一个SQL表。文档列具有静态数据。我们如何落实常态化理念?

sql database-design database-normalization
1个回答
-1
投票

嗯,你应该解释一下列代表什么。 “文档附件”和“地点”应该包含什么?

此外,实际设计可能取决于您使用的数据库。


表格 - 正如它看起来 - 已经标准化。

这是甲骨文:

SQL> create table document
  2    (document_id      number  primary key,
  3     document         varchar2(20) not null,
  4     doc_attachment   varchar2(20),
  5     attachment_date  date,
  6     place            number,
  7     sample_file      blob
  8    );

Table created.

SQL>

线

  1. document_id
    - 主键列。如果您使用的数据库支持它,请使用 identity 列。如果没有,请以不同的方式提供其值(序列?数据库触发器?手动提供?)
  2. document
    看起来像某个名字,所以 - 它是一个字符串。选择其大小,使值适合该列
  3. 和 6.
    doc_attachment
    place
    :不知道它们代表什么
  4. attachment_date
    是日期;如果您需要更高的精度,请使用时间戳(我猜您不需要,不是在这里)
  5. sample_file
    :如果您要在此处上传文件,请使用
    BLOB
    数据类型列

也许您希望将示例文件保存在单独的表、单独的表空间中,以用于备份和可能的性能目的。在这种情况下,将该表拆分为两个,其中 files 引用 documents:

SQL> create table document
  2    (document_id      number  primary key,
  3     document         varchar2(20) not null,
  4     doc_attachment   varchar2(20),
  5     attachment_date  date,
  6     place            number
  7    );

Table created.

SQL> create table files
  2    (file_id          number primary key,
  3      document_id     number references document not null,
  4      sample_file     blob
  5     )
  6  tablespace user_data;

Table created.

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.