Думая о БД, у вас есть базовая таблица, например, таблица ссылок.
Ссылки могут иметь внешний ключ, указывающий на объект / запись аккаунта. Однако, ради простоты и абстракции (например, рассматривая ссылку как контент-ресурс), я подумал, что назначу ссылку на учетную запись через общую справочную таблицу (например, называемую lookups
, а не * 1002). * или link_accounts
).
В то время как ссылка может только когда-либо назначаться одной учетной записи (и всегда должна быть назначена одной учетной записи), inner-me хочет создать этот внешний ключ.
Но мне действительно нравится концепция абстрагирования объекта / ресурса данных и отделения его контекста (например, он назначен учетной записи, или пользователю, или как угодно).
Буду признателен за некоторые мысли, если у кого-нибудь есть их:)
схема:
ссылки:
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';