【问题标题】:moving database schema over to drupal将数据库模式转移到 drupal
【发布时间】:2010-06-22 05:18:32
【问题描述】:

我正在创建一个 Web 应用程序,我只想知道如何看待来自 MVC 背景的 Drupal 数据库。 我有表格来表示人们的数据,例如 SSN、名字、姓氏、邮政编码、地址、语言、位置。现在在前端,我想创建一个表单来为一堆主题(人)填充这些信息。我已将我的数据库标准化,因此邮政编码有自己的表(带有指向 person 表的外键链接)。 “person”表包含名字、姓氏、地址等内容……而“language”表将具有不同的语言缩写(同样使用外键返回 person 表)。

我想知道如何将这样的东西移动到drupal 的架构中。我知道我可以创建自己的表并将它们链接回“节点”表,然后我想构建我的表单以接受用户输入......但这是建议的方法吗?我正在查看网络表单,但似乎这应该用于更简单的表单,其中数据库未标准化并且所有内容都存储在一个大表中。我不确定,但我肯定很想听听你们的想法......如果你能指出一些很棒的资源。

【问题讨论】:

  • 这些人是用户还是客户?

标签: drupal drupal-6 database


【解决方案1】:

Drupal 足够灵活,您可以创建任何您想要的表,然后编写代码将它们链接回节点表。但是,这样做意味着您最终会得到大量代码,这些代码非常特定于您的架构,并且与其他 Drupal 模块的互操作性不是很好。

如果您主要以 Drupal 方式做事,您会发现使用 Drupal 会更好。并且只选择一个非常定制的解决方案,您正在做一些标准 Drupal 模块未涵盖的事情。

例如,就有关人员的标准信息而言,您可能会发现profile module 符合您的需求。 location 模块(特别是用户位置)将覆盖用户地址。通过使用这些模块,您更有可能在未来找到与它们一起使用的其他模块,总体而言,您会发现要编写的代码更少。

migrate module 可能对您有用,用于将现有数据导入 Drupal。

【讨论】:

  • 谢谢 Jeremy...个人资料和位置模块似乎适用于已注册的用户(作为网站用户)。我需要一个用于捕获人员(对象)数据的表格。但感谢 cmets ......它给了我更多的洞察力。我也可以使用这些模块中的一些表。
【解决方案2】:

听起来您只是在存储信息,而主题(人)不会是 Drupal 站点的用户。

利用节点和 CCK 模块来实现这一点将消除大部分开发工作。例如,您的每个表(例如人员、邮政编码、语言)都可以由具有多个字段的内容类型表示。外键将由节点引用字段表示。因此,Person 内容类型可能有一个或多个对 Language 类型节点的节点引用。

migrate module 似乎很好用(626th most popular of 4000+ modules 至少在 10 个不同的 Drupal 站点中使用过),但是可能更容易编写自己的迁移脚本,但我不熟悉根据您的情况、您对 Drupal 的 API 或迁移模块的熟悉程度。

默认情况下,节点引用字段显示为引用节点的链接,但可以设置主题以加载和显示引用节点(例如,在 Person 节点中显示语言信息)。有一个方便的 screencast 说明了如何对节点引用字段进行主题化以加载和选择性地显示引用节点的内容。

【讨论】:

  • 好的,所以节点引用基本上是“外键”链接 - 有道理..谢谢
【解决方案3】:

来自 MVC 背景,您可能不喜欢 Drupal 在数据库中存储数据的方式。

提到了配置文件模块,但我发现将内容配置文件和 CCK 结合起来可以获得更大的灵活性。

我之前写过一些从 Coldfusion 到 Drupal 的迁移脚本,并没有涉及太多。

【讨论】: