mysql - 如何建模一个页面可以有不同内容类型的数据库?

标签 mysql database database-design relational-database foreign-key-relationship

我有包含字段contenttype_idcontent_id 的数据库表page。我想通过 contenttype_id 将一个页面链接到一个contenttype,并通过content_id 引用一个实际的内容 。问题是内容取决于 contenttype_id 并且建模不同,因此 content_id 根据 contenttype_id 引用不同的表。

CREATE TABLE "page"
("id" "INT",
"author" "VARCHAR(45)",
"created" "DATE",
"content_type" "INT",
"content_id" "INT")

CREATE TABLE "contenttype"
("id" "INT",
"name" "VARCHAR(45)")

CREATE TABLE "content_redirect"
("id" "INT",
"url" "VARCHAR(45)")

CREATE TABLE "content_script"
("id" "INT",
"url" "VARCHAR(45)",
"params", "VARCHAR(45)")

CREATE TABLE "content_text"
("id" "INT",
"text" "TEXT")

CREATE TABLE "content_process"
("id" "INT",
"step1" "TEXT",
"step2" "TEXT",
"step3" "TEXT")

CREATE TABLE "content_extprocess"
("id" "INT",
"system_id" "INT",
"process_id" "INT")

该怎么做?还是理论上已经错了?

最佳答案

这个怎么样,开始吧。

alt text

编辑:

create table Content (
      ContentID   integer primary key
    , ContentType char(2)
    , ContentText text
) engine=InnoDb;

create table ScriptContent (
      ContentID integer primary key
    , URL       varchar(45)
    , Params    varchar(45)
) engine=InnoDb;
alter table ScriptContent add constraint fk1_ScriptContent foreign key (ContentID) references Content (ContentID);

create table ExternalProcess (
      ContentID integer primary key
    , SystemID  integer
    , ProcessID integer
) engine=InnoDb;
alter table ExternalProcess add constraint fk1_ExternalProcess foreign key (ContentID) references Content (ContentID);

关于mysql - 如何建模一个页面可以有不同内容类型的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662094/

相关文章:

database - 您应该将自引用表列设为外键吗?

php - mysql 连接三个表以显示为分组依据

MySQL WHERE IN 问题

wpf - 设置新行的内容 Datagrid

mysql - 复杂字典的数据库设计

database-design - 存储多类型字段的最佳方式

mysql - 查询获取上个月数据(从现在开始计算)并解析Json以获取Json中的项目

mysql - phpMyAdmin 导出/导入导致重复主键错误

php - 困惑于为 cms 创建数据库设计

c# - 无法通过 OleDbAdapter 更新 Access 数据库