我有一个名为表标签与vid_id
列id
,name
其中id是md5(uniqid());
VID_ID产生的随机ID是标签与相关视频的ID,并将其命名为标签名。如果视频有5个标签,则它们全部存储在标签表中。我最近意识到这是一个糟糕的桌子设计,因为我有很多重复的标签。我创建了另一张表tag_map。它有三栏id
,vid_id
,tag_id
。我想基本实施这里显示的'toxi'解决方案http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html。规范化数据库表的“标签”
我想要做的就是以某种方式在标签从标签在将数据传输到tag_map,在标签删除VID_ID列,并删除任何额外的条目,以便每个tag_map项只能映射到一个标签条目。任何人都知道有效的方法来做到这一点?我一直在想:
$sql = 'SELECT * FROM tags';
$stmt3 = $conn->prepare($sql);
$result=$stmt3->execute();
while ($row = $stmt3->fetch(PDO::FETCH_ASSOC)) {
$id=md5(uniqid());
$sql = 'INSERT INTO tag_map VALUES (?,?,?)';
$insert = $conn->prepare($sql);
$result=$insert->execute(array($id,$row['vid_id'],$row['id']));
}
但我感到困惑,当我尝试想我要如何删除多余的标签表标签并映射每个tag_map条目只有一个标签项。任何建议将不胜感激。
我有一个连接表。该表是tag_map,它将表格标签和表格视频结合在一起。我遇到的问题是我之前没有连接表,所以我在标签中包含所有这些条目。我不得不如何组织我目前在标签中使用的数据,并将其重新分发到tag_map中,以便结构正常运行。 – Scarface
我编辑了我的答案来解决这个问题。 – Marvo
非常感谢您花时间帮助我Marvo! – Scarface