【发布时间】:2014-09-08 12:25:49
【问题描述】:
我正在构建数据库的配置设置,尽可能地抽象配置数据。
在最常见的 LAMP 环境中,连接数据库需要以下四个信息:
- db_host
- db_name
- db_user
- db_password
我想了解两点:
1 - 凭据是否与 host 或 db 相关?
如果 user 和 password 与 host 相关,他们可以访问该主机上的所有可用数据库,因此我可以代表以这种方式配置数据(无论是数组,对象还是其他):
db_config
└─db_host
├─db_user
├─db_password
└─databases
├─db_name
└─db_engine
如果 user 和 password 与特定的database 相关,则他们可以访问唯一指定的db_name;在这种情况下,我可以通过这种方式对配置数据进行模式化:
db_config
└─db_host
└─databases
└─db_name
├─db_engine
├─db_user
└─db_password
2 - 具有不同引擎的数据库可以存在于同一主机上吗?
数据库可能由不同的引擎(例如 PostgreSQL、MySQL、MSSQL、Oracle、Firebird 等)提供支持。
如果凭证与主机相关,并且如果具有不同引擎的数据库可能在同一主机上共存,则配置数据可以这样表示:
db_config
└─db_host
├─db_user
├─db_password
└─databases
└─db_name
└─db_engine
但是这种结构不允许具有不同引擎的数据库具有相同的名称。
具有不同引擎的数据库可以在同一主机上共存并且使用相同的名称吗?
如果是,配置数据可以这样构造:
db_config
└─db_host
└─db_engine
└─databases
├─db_name
├─db_user
└─db_password
哪种数据结构适合大多数可能的实际情况?
【问题讨论】:
-
数据库模式不是树 - 将它们定义为表,在某些情况下,某些表将有两个外键作为主键 - 因此修复“结构不允许具有不同引擎的数据库具有相同名字”
-
所以您是在告诉我 1. 凭据与数据库相关,而不与主机相关,2. 一个主机可能拥有具有不同引擎和相同名称的数据库,对吗?
-
是的,我怀疑更多的差异 -0 你所说的名称是什么意思一个数据服务器可以是一种类型的多个可以有多个数据库,并且所有数据库中的服务器之间的凭据可能不同,也许某些系统的每个数据库。这个问题太粗鲁了,因为有很多组合
标签: database database-design data-structures