是否可以在mysql中创建这样的表?
如果是,请在表格中提供示例数据来解释我(当我们首次插入表格时,表格中的值将是什么)。

Subscriber
------------
SubscriberId: guid() <<pk>>
privateUserIDs string <<fk>>
value1 string
...

User
----
privateUserIDs string <<pk>>
SubscriberId: guid() <<fk>>
value2 string
...


我从Google文档获得了此数据库架构。

注意:关系为1..n

最佳答案

通过关闭外键检查,可以在架构中以任何顺序创建表。

例如,下面我用用户表上的外键创建一个BannedUsers表,而尚未创建Users表。

之后,请确保再次启用外键检查。

下面的示例已使用InnoDB引擎在MySQL 5.5.31数据库上进行了测试。

SET FOREIGN_KEY_CHECKS=0;

CREATE TABLE IF NOT EXISTS `BannedUsers` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(10) unsigned NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_id` (`user_id`),
  KEY `FK_BannedUsers_Users` (`user_id`),
  CONSTRAINT `FK_BannedUsers_Users` FOREIGN KEY (`user_id`) REFERENCES `Users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `Users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(254) COLLATE utf8_unicode_ci NOT NULL,
  `username` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  `firstname` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `lastname` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

SET FOREIGN_KEY_CHECKS=1;

关于mysql - MySQL中的DB模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15083145/

10-12 12:52
查看更多