sql - 此平面文件结构需要 MySQL DDL,提供示例 : input columns, 数据、输出表/列等

标签 sql mysql dll

我正在解决一个问题,需要帮助为以下内容创建一个有效的 MySQL DDL。我正在尝试加载一个文件,其中包含员工姓名、他们过去担任过的办公室以及他们的职位历史记录(用制表符分隔)。

文件:

EmployeeName<tab>OfficeHistory<tab>JobLevelHistory
John Smith<tab>501<tab>Engineer
John Smith<tab>601<tab>Senior Engineer
John Smith<tab>701<tab>Manager
Alex Button<tab>601<tab>Senior Assistant
Alex Button<tab>454<tab>Manager

注意:单表数据库是完全规范化的(尽可能多的是单表)——例如,在“John Smith”的情况下,只有一个 John Smith;这意味着不存在会导致参照完整性冲突的重复项。

MyOffice 数据库架构具有下表:

Employee (nId, name)
Office (nId, number)
JobTitle (nId, titleName)
Employee2Office (nEmpID, nOfficeId)
Employee2JobTitle (nEmpId, nJobTitleID)

所以在这种情况下。表格应如下所示:

Employee
1 John Smith
2 Alex Button

Office
1 501
2 601
3 701
4 454

JobTitle
1 Engineer
2 Senior Engineer
3 Manager
4 Senior Assistant

Employee2Office
1 1
1 2
1 3
2 2
2 4

Employee2JobTitle
1 1
1 2
1 3
2 4
2 3

最佳答案

CREATE TABLE Employee (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  name CHAR(50) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;

CREATE TABLE Office (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  office_number INT NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;

CREATE TABLE JobTitle (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  title CHAR(30) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;

CREATE TABLE Employee2JobTitle (
  employee_id MEDIUMINT NOT NULL,
  job_title_id MEDIUMINT NOT NULL,
  FOREIGN KEY (employee_id) REFERENCES Employee(id),
  FOREIGN KEY (job_title_id) REFERENCES JobTitle(id),
  PRIMARY KEY (employee_id, job_title_id)
) ENGINE=InnoDB;

CREATE TABLE Employee2Office (
  employee_id MEDIUMINT NOT NULL,
  office_id MEDIUMINT NOT NULL,
  FOREIGN KEY (employee_id) REFERENCES Employee(id),
  FOREIGN KEY (office_id) REFERENCES Office(id),
  PRIMARY KEY (employee_id, office_id)
) ENGINE=InnoDB;

类似的东西。

关于sql - 此平面文件结构需要 MySQL DDL,提供示例 : input columns, 数据、输出表/列等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177128/

相关文章:

php - 在 JOIN 查询中获取共享参数

mysql - 更新表上的 370 条记录,同时为 where 语句内部连接到另一个表

c# - 是否可以在非托管 VC++ 应用程序中使用使用 C# 创建的 DLL?

php - 如何构建一个将返回标志的 MySQL 查询,根据另一个表中的行返回 y 或 n?

mysql - 在 WHERE block 中使用条件在表中添加列

.net - 是否有动态生成 sql 的标准方法?

php - 如何将两个值从 html 导入到我的 SQL 表

mysql - 将 Rails 3 应用程序开发环境移至另一台机器

加载 dll : OSError 0x7e 时 Python CFFI 模块失败

c++ - 用于打开资源文件并从中获取数据的 Win32 api