必要的背景信息
我知道标题是我的项目特有的,所以请允许我解释我的问题背景。
我经营一个网站,为不同的摔跤手、标签队、付费节目等(我称之为“实体”)存储和显示入口主题列表。我正在进行一次完整的重构,从头开始编写代码,并重新考虑如何存储入口音乐列表。
每个实体(每个人包含一个记录)都可能存在于多个组织中。例如,摔跤手凯文·纳什(作为一个人)曾在WWE、WCW和TNA工作过。凯文纳什也有多个“噱头”,或人物,有时出现在多个组织。例如,凯文·纳什已经出名了:在WWE中,他是柴油机和他的真名;在TNA中,他只是他的真名;在WCW中,他是维尼·维加斯、奥兹和他的真名。
这就是我最近决定存储这些信息的方式:
在entity_types
中,我将为Kevin Nash等摔跤手存储“摔跤手”的实体类型。Kevin Nash将在entities
中有一个条目,代表他是一个人。接下来,Kevin Nash的多个噱头(记住,这些噱头可以扩展到多个组织)将分别存储在entity_gimmicks
表中;记录将包括“Diesel”、“Vinnie Vegas”、“Oz”和“Kevin Nash”(当他以自己的身份出现时,或是对自己的一种描述)。
在entity_instances
中,我将存储凯文·纳什(Kevin Nash)的一个噱头出现在特定组织中的每个实例。例如,将有以下条目:
“凯文纳什在WWE”,
“WWE中的柴油机”,
“凯文·纳什在WCW”,
“维尼维加斯在WCW”,
等等。
当然,organizations
会存储摔跤运动员出现的公司。
手头的问题
现在问我一个问题。当用户查看摔跤运动员的主题列表页面时,我希望他们看到,例如,凯文·纳什在某个特定公司(比如WWE)使用的所有入口主题。理想情况下,此列表将显示此人使用的所有噱头的所有主题列表。比方说凯文·纳什,最初是柴油机,使用的主题是“Abc”和“Def”。然后,在离开公司并以凯文·纳什的身份回来后,他使用了“Ghi”和“Jkl”两个主题。如何对这些主题列表进行最佳排序?
乍一看,人们会简单地说,代码可以首先检索噱头,然后检索每个噱头中的主题,并根据噱头的顺序对它们进行排序。然而,问题是,摔跤手在技巧之间切换是有可能的。例如,约翰多伊可以先被称为“十字军”,然后被称为约翰多伊,然后又被称为“十字军”,每一个都有新的入口音乐。如果“十字军”只是一个噱头,那么这个噱头下存储的主题如何与“约翰多伊”噱头下存储的主题相匹配?
这就是我面临的难题。我可以在entity_org_sort_order
表中添加一个themes
列,但当我的管理员去编辑摔跤运动员的主题列表时,这可能是一个噩梦。
有人能想出解决我问题的办法吗?即使这意味着回到绘图板上重新考虑如何存储所有这些信息,我也愿意考虑这一点。
最佳答案
对迟交的答复深表歉意。我是在搜索“摔跤”时偶然发现的,作为一个粉丝,我好奇地想看看网站上是否有摔跤相关的问题!
你的项目听起来很有趣。我不知道你是否解决了这个问题,但我会看看你的实体,然后把它们分成你自己的表。所以你提到了人、噱头、组织和入口主题。你的关系会是这样的:
一个人有很多花招。
一个噱头与组织有着多对多的关系(就像你说的那样,凯文·纳什在WWE、WCW和TNA中以自己的真名摔跤)。
有了这两种关系,你就可以发现凯文·纳什在WWE中使用了什么噱头,或者他为了什么组织而用真名摔跤。
入口主题变得复杂。你想把一个主题和一个人或一个噱头联系起来吗?我个人会把一个主题和一个噱头联系起来,通常一个噱头的变化会让摔跤手采用一段新的音乐。我真的想不出有什么花招变化,一个摔跤手用了相同的主题。现在你有了:
噱头有许多入口主题
使用Laravel,这些关系将生成以下表格:people
gimmicks
(外键到person
)organisations
entrance_themes
(外键到gimmick
)gimmick_organisation
(透视表)
然后,您可以通过列出摔跤运动员在某个组织中使用的噱头,以及这些噱头子集的入口主题,找到他们在该组织中使用的主题。
关于mysql - 存储摔跤手,角色和入场音乐之间关系的最合乎逻辑的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26532788/