大工程 从0到1 数据治理 之数据模型和设计篇(sample database classicmodels _No.7)

简介: 大工程 从0到1 数据治理 之数据模型和设计篇(sample database classicmodels _No.7)

大工程 从0到1 数据治理 之数据模型和设计篇

我这里还是sample database classicmodels为案列,可以下载,我看 网上还没有类似的 案列,那就 从 0-1开始吧!


什么是数据模型设计

我这里还是sample database classicmodels为案列,可以下载,我看 网上还没有类似的 案列,那就 从 0-1开始吧!


数据模型设计是在数据库和信息系统开发过程中的关键步骤之一,它涉及到对数据进行组织、建模和定义的过程。数据模型是一个抽象层次的概念,它描述了数据之间的关系、数据的结构、约束和操作。数据模型设计的主要目标是创建一个有效、灵活、可维护且易于理解的数据结构,以支持业务需求和系统功能。


数据模型设计通常包括以下几个方面:


实体: 表示现实世界中的一个独立的对象或概念,例如员工、订单、产品等。


属性: 描述实体的特征或属性,是实体的各个方面的数据项,例如员工的姓名、地址、工资等。


关系: 表示实体之间的连接或关联,它们描述了数据之间的依赖关系。关系可以是一对一、一对多或多对多的关系。


主键: 用于唯一标识表中每一行记录的字段,确保每个记录都有唯一的标识符。


外键: 是一个表中的字段,与另一表中的主键相对应,用于建立表之间的关系。


约束: 用于定义对数据的规则和限制,包括主键约束、唯一约束、默认值约束等。


范式: 一组规则,帮助设计师规范化数据结构,减少数据冗余和提高数据的一致性。


逆范式: 在某些情况下,为了提高查询性能,可以选择违反范式的原则,通过冗余数据来优化设计。


视图: 虚拟表,是从一个或多个基本表中导出的表,可以用于简化查询或隐藏底层数据结构的复杂性。


存储过程和触发器: 数据模型设计中也包括对于数据库中存储过程和触发器的设计,用于实现特定的业务逻辑和数据操作。


数据模型设计的结果通常以图形方式呈现,例如实体-关系图 (ER 图) 或其他概念建模工具。设计好的数据模型提供了一个蓝图,指导数据库的实际实现,确保数据库结构与业务需求一致,支持系统的正常运行和数据的有效管理。


我们拿 sample database classicmodels 举例?

创建表

/*
  Name: MySQL Sample Database classicmodels
*/


/* Create the database */
CREATE DATABASE  IF NOT EXISTS classicmodels;

/* Switch to the classicmodels database */
USE classicmodels;

/* Drop existing tables  */
DROP TABLE IF EXISTS productlines;
DROP TABLE IF EXISTS products;
DROP TABLE IF EXISTS offices;
DROP TABLE IF EXISTS employees;
DROP TABLE IF EXISTS customers; 
DROP TABLE IF EXISTS payments;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS orderdetails;

/* Create the tables */
CREATE TABLE productlines (
  productLine varchar(50),
  textDescription varchar(4000) DEFAULT NULL,
  htmlDescription mediumtext,
  image mediumblob,
  PRIMARY KEY (productLine)
);

CREATE TABLE products (
  productCode varchar(15),
  productName varchar(70) NOT NULL,
  productLine varchar(50) NOT NULL,
  productScale varchar(10) NOT NULL,
  productVendor varchar(50) NOT NULL,
  productDescription text NOT NULL,
  quantityInStock smallint(6) NOT NULL,
  buyPrice decimal(10,2) NOT NULL,
  MSRP decimal(10,2) NOT NULL,
  PRIMARY KEY (productCode),
  FOREIGN KEY (productLine) REFERENCES productlines (productLine)
);

CREATE TABLE offices (
  officeCode varchar(10),
  city varchar(50) NOT NULL,
  phone varchar(50) NOT NULL,
  addressLine1 varchar(50) NOT NULL,
  addressLine2 varchar(50) DEFAULT NULL,
  state varchar(50) DEFAULT NULL,
  country varchar(50) NOT NULL,
  postalCode varchar(15) NOT NULL,
  territory varchar(10) NOT NULL,
  PRIMARY KEY (officeCode)
);

CREATE TABLE employees (
  employeeNumber int,
  lastName varchar(50) NOT NULL,
  firstName varchar(50) NOT NULL,
  extension varchar(10) NOT NULL,
  email varchar(100) NOT NULL,
  officeCode varchar(10) NOT NULL,
  reportsTo int DEFAULT NULL,
  jobTitle varchar(50) NOT NULL,
  PRIMARY KEY (employeeNumber),
  FOREIGN KEY (reportsTo) REFERENCES employees (employeeNumber),
  FOREIGN KEY (officeCode) REFERENCES offices (officeCode)
);

CREATE TABLE customers (
  customerNumber int,
  customerName varchar(50) NOT NULL,
  contactLastName varchar(50) NOT NULL,
  contactFirstName varchar(50) NOT NULL,
  phone varchar(50) NOT NULL,
  addressLine1 varchar(50) NOT NULL,
  addressLine2 varchar(50) DEFAULT NULL,
  city varchar(50) NOT NULL,
  state varchar(50) DEFAULT NULL,
  postalCode varchar(15) DEFAULT NULL,
  country varchar(50) NOT NULL,
  salesRepEmployeeNumber int DEFAULT NULL,
  creditLimit decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (customerNumber),
  FOREIGN KEY (salesRepEmployeeNumber) REFERENCES employees (employeeNumber)
);

CREATE TABLE payments (
  customerNumber int,
  checkNumber varchar(50) NOT NULL,
  paymentDate date NOT NULL,
  amount decimal(10,2) NOT NULL,
  PRIMARY KEY (customerNumber,checkNumber),
  FOREIGN KEY (customerNumber) REFERENCES customers (customerNumber)
);

CREATE TABLE orders (
  orderNumber int,
  orderDate date NOT NULL,
  requiredDate date NOT NULL,
  shippedDate date DEFAULT NULL,
  status varchar(15) NOT NULL,
  comments text,
  customerNumber int NOT NULL,
  PRIMARY KEY (orderNumber),
  FOREIGN KEY (customerNumber) REFERENCES customers (customerNumber)
);

CREATE TABLE orderdetails (
  orderNumber int,
  productCode varchar(15) NOT NULL,
  quantityOrdered int NOT NULL,
  priceEach decimal(10,2) NOT NULL,
  orderLineNumber smallint(6) NOT NULL,
  PRIMARY KEY (orderNumber,productCode),
  FOREIGN KEY (orderNumber) REFERENCES orders (orderNumber),
  FOREIGN KEY (productCode) REFERENCES products (productCode)
);


ER图

用 DBeaver 打开 ER图

帮助

FOREIGN KEY帮助点击

主要需要了解下面五个函数

那大家在想[FOREIGN KEY有什么用,我这里做个实验就知道了,如下


介绍一些数据建模和设计领域工具


数据建模和设计领域涉及多个软件工具,用于创建、管理和优化数据模型,数据库设计,业务流程建模等。以下是一些常见的数据建模和设计软件:


ER/Studio:

功能: 实体-关系建模、数据库设计、数据架构管理。

特点: 多数据库支持,适用于大型企业。


IBM Data Architect:

功能: 数据建模、数据库设计、数据架构管理。

特点: 针对 IBM 数据库平台,全面的数据管理工具。


Microsoft Visio:

功能: 通用图形化建模工具,包括数据模型设计。

特点: 易用性高,可用于多种图形设计。


Oracle SQL Developer Data Modeler:

功能: 数据建模、数据库设计、逆向工程。

特点: 针对 Oracle 数据库设计的工具。


PowerDesigner:

功能: 数据建模、业务流程建模、应用程序设计。

特点: 多层次支持,企业架构管理,团队协作。


Toad Data Modeler:

功能: 数据建模、数据库设计、逆向工程。

特点: 多数据库支持,适用于数据库专业人士。


DeZign for Databases:

功能: 数据建模、数据库设计、逆向工程。

特点: 用户友好界面,支持多种数据库平台。


DbVisualizer:

功能: 数据建模、数据库设计、查询和管理。

特点: 通用数据库工具,支持多种数据库系统。

总结

好了,那么我请问大家有多少公司

会用 PRIMARY KEY (?), 和 FOREIGN KEY (?) REFERENCES customers (?),至少我的上一家公司没有

目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
132 1
|
2月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
60 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
2月前
|
关系型数据库 MySQL 数据库
mysql 8.0 递归(例子分享)(sample database classicmodels _No.4)
本文介绍了如何在MySQL8.0中使用递归查询处理部门表和员工表的树形结构数据,包括查看文档、准备数据、递归处理以及提取层级信息。作者通过示例展示了WITHRECURSIVE语句的应用及其在数仓中的结构表示。
40 2
|
2月前
|
SQL 数据库
数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)
数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)
39 1
|
2月前
|
安全 关系型数据库 MySQL
mysql8.0 正值表达式Regular expressions (sample database classicmodels _No.5)
本文介绍了MySQL8.0中的正值表达式及其相关函数,通过实例展示了如何使用正则表达式进行字符串匹配,并提出了关于执行效率的问题。
72 1
|
2月前
|
SQL Oracle 关系型数据库
窗口函数(sample database classicmodels _No.8 )
本文介绍了SQL中的窗口函数,包括其概念、语法以及在实例中的应用。重点讲解了如何使用窗口函数进行聚合、排序和分析操作,特别提到了MySQL中常见的四个窗口函数:DENSE_RANK(),RANK(),ROW_NUMBER(),LAG()。
56 0
|
2月前
|
存储 SQL NoSQL
大工程 从0到1 数据治理 数仓篇(sample database classicmodels _No.7)
大工程 从0到1 数据治理 数仓篇(sample database classicmodels _No.7)
55 0
|
2月前
|
算法 关系型数据库 MySQL
复购率 mysql 实例(sample database classicmodels _No.1 )
复购率 mysql 实例(sample database classicmodels _No.1 )
34 0
|
7月前
|
SQL Oracle 关系型数据库
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database (
96 2
|
7月前
|
Oracle 关系型数据库
19c 开启Oracle Database Vault
19c 开启Oracle Database Vault
168 1