用于 GUI 的 PHP/mySQL 数据库

发布于 2024-10-11 22:15:00 字数 327 浏览 2 评论 0原文

只是一个一般的数据库设计问题 - 没有编程,但解决了一些问题,我无法完全理解......

我有一组 GUI 页面,每个页面都包含一组“模块” - 基本上是样式化的内容框包含一些与页面相关的功能/信息。

页面和模块在渲染之前都被实例化为 php 对象。我希望从数据库调用这些对象的变量(标题、内容等)。

我不知道如何将这些数据存储在数据库中。我有一个表,其中每个条目都是一个页面,还有一个表,其中每个条目都是一个模块,但我无法弄清楚如何存储表示每个页面所具有的模块的数据,特别是考虑到这些模块可能对更多页面来说是通用的超过一页。

嵌套表将是理想的答案,mySQL 允许这样做吗?

Just a general database design question - no programming, but a bit of problem solving I can't quite get my head around...

I have a set of pages for a GUI, which each contain a set of 'modules' - basically styled content boxes containing a few functions/information relevant to the page.

Both the pages and modules are instantiated as php objects before being rendered. I want the variables for these objects (title, content etc...) to be called from a database.

What I can't work out is how to store this data in a database. I have a table where each entry is a page, and a table where each entry is a module, but I can't work out how to store the data representing the modules that each page has, particularly considering the modules may be common to more than one page.

Nested tables would be the ideal answer, does mySQL allow this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等你爱我 2024-10-18 22:15:00

这听起来像是多对多的关系。您需要第三个“链接”表。因此,例如,如果您有以下表格:

CREATE TABLE pages (
  id INT(11) NOT NULL, 
  title VARCHAR(40), 
  PRIMARY KEY (id)
);
CREATE TABLE modules (
  id INT(11) NOT NULL, 
  title VARCHAR(40), 
  PRIMARY KEY (id)
);

您将创建第三个表格,如下所示:

CREATE TABLE pages_modules (
  pid INT(11) NOT NULL, 
  mid INT(11) NOT NULL, 
  PRIMARY KEY(pid, mid)
)

从这里您可以通过在此表中为每个页面/模块对创建一个条目来将模块添加到不同的页面。

This sounds like a many-to-many relationship. You need a third 'linking' table. So, for instance, if you have the following tables:

CREATE TABLE pages (
  id INT(11) NOT NULL, 
  title VARCHAR(40), 
  PRIMARY KEY (id)
);
CREATE TABLE modules (
  id INT(11) NOT NULL, 
  title VARCHAR(40), 
  PRIMARY KEY (id)
);

You would create the third table like:

CREATE TABLE pages_modules (
  pid INT(11) NOT NULL, 
  mid INT(11) NOT NULL, 
  PRIMARY KEY(pid, mid)
)

From here you can add modules to different pages by creating an entry in this table for each page/module pair.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文