繁体   English   中英

这样连接两个数据库是一个坏主意吗? 如何做呢?

[英]Is it a bad idea to connect two databases like this? How can it be done?

我目前在我的网站上使用“简单机器论坛”,并且用户都使用他们在我的网站上的论坛帐户进行注册和登录。 smf_members表包含以下字段:

id_member | 会员名| date_registered

我现在想做的是扩展此范围,以在我的站点上添加更多自定义字段和连接性。 我想将id_member字段用于很多事情:

例如,我希望用户(此smf_members表中的条目)能够加入团队。

我将使用以下字段创建表Teams

ID | 姓名| 描述

以及具有以下字段的表TeamMembership

用户名| TeamID | 角色

如您所见,此表将链接成员和团队,而仅将特定于用户或团队的数据保留在其各自的表中(成功防止了冗余数据)。 听起来不错吧?

好吧,我不希望将这两个新表与SMF放在同一个数据库中,因为它可能会变得凌乱。 不过,这是最简单的解决方案吗? 您是否认为最简单的解决方案是在同一个数据库中以Custom前缀cst创建新表? 我不知道如何链接两个数据库,所以如果它太复杂,也许我应该做我的cst解决方案。

我已经编辑了这篇文章,还有其他问题。

谢谢你的回答。 我还有一个问题。 假设我想将新变量扩展到成员,但是再次想避免在SMF论坛成员表中添加新字段。 最简单的方法是什么? 就像,我想创建一个名为UsersExtended的表,并具有以下字段:

-ID(这不是自动递增的字段,而是SMF成员表中的id_member的值)

-国家

用这种结构创建配置文件页面并显示我想要的来自两个表的任何相关数据是否很容易,以某种方式链接两个表,使它们充当一个大表?

它们完全属于同一数据库。 使用一个数据库并将表联接到您的查询中。

唯一要为应用程序(应用程序本身除外)构建唯一数据库的情况是,如果您打算创建一个API,该API将以无偏见的方式将该数据提供给其他项目。 这在Solr中很常见,在其中您可以快速开发出快速的API,并且通常不会与当前的MySQL表混为一谈。

将自定义表放在同一数据库中绝对没有害处。 您不能在关系数据库系统中定义2个不同数据库之间的关系。

如果您使用的是MySQL,请查看此问题的可接受答案。 请记住,在跨数据库查询时,必须在表的前面加上数据库名称。

你可以试试这个

SELECT * 
from database1.table, database2.table 
where database1.table.id=database2.table.id

您应该只在同一数据库中创建两个表

**smf_members**

id_member | member_name | date_registered

**TeamMembership**

Team_ID | Name | Description | Role | id_member

如果任何用户想要团队成员身份,则可以使用联接查询轻松地操纵其记录。

不知道简单机器论坛-但我确实知道大多数应用程序有望成为该镇唯一的展览。

我将使用自己的表创建一个新的数据库=也许称为“团队”,并使用NickCL的跨数据库联接方式在两个应用程序之间进行联接。

您没有提到正在使用的特定数据库引擎(我假设它是MySQL),但是从逻辑上讲,您可以将数据库视为命名空间-一种将属于同一内容的东西保持在同一逻辑位置的方法。

理想情况下,“人员” /“身份验证”等应该与论坛内容放在单独的数据库中,但是当您使用现成的代码时,就不会那么奢侈。

以我的经验,最好不要弄乱现成软件的数据库-当您要升级时,您不知道自己的表将如何处理,无论它们的名称是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM