我有包含字段contenttype_id 和content_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")
该怎么做?还是理论上已经错了?
最佳答案
这个怎么样,开始吧。
编辑:
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/