做一些数据库思维,并有一个基本的表,例如链接表。 链接可以有一个外键指向一个帐户对象/记录。但是,为了简单和抽象(例如将链接视为基于内容的资源),我想我会通过一般查找表(例如lookups
而不是account_links
或link_accounts
)将链接分配给帐户, 。数据库标准化和查找表
尽管链接可以只有永远被分配给一个帐户(并且必须始终分配给一个帐户),但内在我想要创建该外键。但我真的很喜欢抽象出一个对象/数据资源并将它的上下文分离的概念(例如它被分配给一个帐户,或者一个用户,或者其他任何东西)。
希望得到一些想法如果任何人有EM :)
模式:
链接:
CREATE TABLE `links` (
`link_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`timestamp_updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`timestamp_created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`status` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
`type` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`title` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`description` longtext COLLATE utf8_unicode_ci NOT NULL,
`resource` longtext COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`link_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Links';
查找:
CREATE TABLE `lookups` (
`lookup_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`timestamp_updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`timestamp_created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`status` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
`type` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`source_node_type` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`source_node_id` int(10) unsigned NOT NULL,
`target_node_type` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`target_node_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`lookup_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Obejct Assignments';
一个例子比挥手描述更好。请提供一些示例表或查询或其他内容以使其具体。 –
或至少有一些模式可以使用。用模式更新了 – jpm
。 – onassar