Php 关系建议
希望得到一些意见,这是最好的方法 所以我正在为比赛创建一个系统,类似于足球/足球等运动的工作方式 现在我有一个赛季,一个赛季就有很多队,一个队就可以有很多队员 一个赛季会有很多比赛,其中所有的球队都会参加每一场比赛,但是不是每个球队的所有队员都会参加比赛 存储团队成员将参加比赛的最佳方式是什么 目前,我只想在竞赛表和成员之间建立一个支点,但这并不能说明成员是哪个团队的一部分,一个成员可以属于多个团队。你能要一张三向透视表吗 这是我当前的表结构Php 关系建议,php,database,laravel,Php,Database,Laravel,希望得到一些意见,这是最好的方法 所以我正在为比赛创建一个系统,类似于足球/足球等运动的工作方式 现在我有一个赛季,一个赛季就有很多队,一个队就可以有很多队员 一个赛季会有很多比赛,其中所有的球队都会参加每一场比赛,但是不是每个球队的所有队员都会参加比赛 存储团队成员将参加比赛的最佳方式是什么 目前,我只想在竞赛表和成员之间建立一个支点,但这并不能说明成员是哪个团队的一部分,一个成员可以属于多个团队。你能要一张三向透视表吗 这是我当前的表结构 CREATE TABLE `seasons` (
CREATE TABLE `seasons` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`archived` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `teams` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`season_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `teams_season_id_index` (`season_id`),
CONSTRAINT `teams_season_id_foreign` FOREIGN KEY (`season_id`) REFERENCES `seasons` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `members` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`display_name` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `members_display_name_unique` (`display_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `members_teams` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`member_id` int(10) unsigned NOT NULL,
`team_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `members_teams_member_id_index` (`member_id`),
KEY `members_teams_team_id_index` (`team_id`),
CONSTRAINT `members_teams_member_id_foreign` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `members_teams_team_id_foreign` FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `competitions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`start_at` datetime NOT NULL,
`end_at` datetime NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`skill` int(11) NOT NULL,
`season_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `competitions_season_id_index` (`season_id`),
CONSTRAINT `competitions_season_id_foreign` FOREIGN KEY (`season_id`) REFERENCES `seasons` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我会有一个
players
表,以便将球员信息与任何球队信息分开。然后,你可能会有一个竞赛\u玩家
表格或类似表格,其中有三个外键:团队ID、玩家ID和竞赛ID,这样你就可以看到谁在每场比赛中为哪支球队比赛。我读了这个主题,立即想到,“这些问题的位置不对”:p