【发布时间】:2015-07-03 05:02:04
【问题描述】:
我有一个包含多个表和关系的数据库。我正在使用 Microsoft Access,但我的想法是使用 MySQL 迁移到我们的 Linux 服务器。
我有一个设备表(或任何具有 IP 地址的设备,例如笔记本电脑、服务器、交换机等)和另一个员工表(我的设计比这更复杂,但我简化了用于解释目的的问题)。我还有另一个表用于存储用户名、密码、用户名角色和范围(本地、域、WordPress、电子邮件等)。
我在 SQL 中的问题的简化版本(无关字段已被省略):
CREATE TABLE employees (
IdEmployee INT NOT NULL,
EmployeeName VARCHAR(50),
EmployeeDepartment INT,
PRIMARY KEY (IdEmployee)
);
CREATE TABLE devices (
IdDevice INT NOT NULL,
DeviceType INT,
Brand INT,
Model VARCHAR(30),
PRIMARY KEY (IdDevice)
)
CREATE TABLE usernames (
IdUsername INT NOT NULL,
Username VARCHAR(20),
Password VARCHAR(20),
UserRole INT,
UserScope INT,
PRIMARY KEY (IdUsername)
)
Username 和 Password 字段用于为我们的服务器和数据库存储我们所有路由器、交换机和多个 root 用户的凭据。我的设计问题是:员工有登录我们公司域的凭据,设备也有凭据。但是设备和员工没有任何共同的字段,因此它们必须位于不同的表中。我如何将usernames 表关联到employees 和devices 考虑到:
- 一名员工可能有多个用户名(具有不同的角色 和范围)。
- 有些员工甚至在不同的范围(服务器、WordPress 等)使用相同的用户名。
- 一个设备可能有也可能没有多个用户名 (具有不同的角色)。
- 员工和设备的凭据共享相同的特征(字段),所以我真的不希望有两个不同的表来处理同一件事,但如果我找不到解决方案,我想我会选择这个。
数据库本身比较复杂;它涵盖了我们网络中所有用户和静态 IP 地址的完整资产清单和列表。
【问题讨论】:
标签: mysql sql database-design