做一些數據庫思維,並有一個基本的表,例如鏈接表。 鏈接可以有一個外鍵指向一個帳戶對象/記錄。但是,爲了簡單和抽象(例如將鏈接視爲基於內容的資源),我想我會通過一般查找表(例如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