我的模式是这样的:
Tables:
Titles -> ID | TitleID | TitleName | ArtistNameFull | Length
Artists-> ID | ArtistNameRoot
ArtistRelation-> ID | TitleID | ArtistID | Relationship
ArtistNameFull是艺术家的名字,包括:"feat, with, include, featured, presents等"。
artistnamameroot只是没有"壮举,包括,特色等"的艺术家。
ArtistRelation中它们之间的关系本质上是在另一个索引为1-15的表中,以及它们对应的"后缀"。例如,索引3将是"feature",索引7将是"with"。
我有大约1000行数据,我需要插入到我的表中,这只是(Title, Artist, length)的值。
目前的方法:到目前为止,我的方法是把所有这些数据,我需要插入到一个临时表本身,然后调用sql函数,选择唯一的值之间的标题表和临时表,然后插入它们,如果我只插入到标题表,这是有效的,但我还需要插入到艺术家这是一个更棘手的,因为我需要摆脱任何东西,但根艺术家。所以我试着用php从我的临时表中抓取数据,并使用正则表达式来获得根艺术家,这对于获得根艺术家来说是很神奇的,但是把所有这些连接在一起,并弄清楚如何将两者插入到艺术家关系中,当以前的插入已经有艺术家时,很难把我的头包围起来。
无论如何,我想我只是需要一些智慧的话语,如果我以一种非常低效的方式来做这件事,或者这是通常的做法,我只能继续下去。
PHP在操作字符串方面比SQL好得多。所以继续这样做。使用临时表也是一种有效的方法。
您需要使用PHP从temp表中提取所有数据。
对于每个结果解析出艺术家名称并将其插入到artists中。
在每次插入之后,你想要获得插入的最后一个ID (PDO和mysqli_有这个方法),然后将该ID和艺术家名称存储在一个数组中,以便ID可以稍后使用。
然后插入标题信息。
每次插入后,获取插入的最后一个ID,并使用它和艺术家ID将一条记录插入到关系表中。
这有帮助吗?