我有一个 mysql 数据库,其中有一个表保存多个其他表的版本信息。为了链接到同一版本系列,我有一个 version_master 表,其中包含链接引用的版本系列的主键。我想知道是否有更优雅的解决方案,而不需要 version_master 表。
CREATE TABLE IF NOT EXISTS `version` (
`version_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`version_master_id` int(10) unsigned NOT NULL,
`major` int(10) unsigned NOT NULL DEFAULT '0',
`minor` int(10) unsigned NOT NULL DEFAULT '0',
`patch` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`version_id`));
CREATE TABLE IF NOT EXISTS `version_master` (
`version_master_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE IF NOT EXISTS `needs_versions` (
`needs_versions_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`name` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`version_master_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`needs_versions_id`));
最佳答案
在此示例中,您当然可以消除 version_master
表并使用 version_id
和 version_master_id
字段的组合作为索引。我认为你可以放弃它,因为似乎没有任何东西用外键引用它。
但是,如果您有与每个版本系列相关的其他信息,那么拥有 version_master
将是一个好主意。
此外,您正尝试从未定义的列 offer_type_id
中创建主键。目前尚不清楚您是否可以在逻辑上将 needs_versions
与 version_master
合并。这个名字本身并不是很具有描述性。我建议不要在表名称中使用动词。
关于mysql - 在这个 mysql 示例中是否需要一个只有一列的主表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953267/