gpt4 book ai didi

mysql - 数据库规范化我需要吗

转载 作者:行者123 更新时间:2023-11-29 21:04:30 24 4
gpt4 key购买 nike

我已经阅读了很多有关标准化的内容,但我仍然无法完全理解它/我不确定如何对其进行标准化。这就是我的数据库当前的样子,是否还需要标准化?如果是这样,我该从哪里开始呢?

http://i.imgur.com/L43fHS6.png这就是目前的样子

最佳答案

您需要每个 user_ID 1 行,以便您可以轻松访问所有数据。

例如对于您的 gameID 5002947 (row11),需要将其分为以下几部分:

id       setup_id   user_ID
5002947 997 563749
5002947 997 500243
5002947 997 536271
...

你有两个选择。创建一个复杂的 SQL 查询来处理这个问题(不幸的是我无法提供这个,但我相信其他人可以)或使用 php。

PHP方法

选择所有行并将 userID 分解为数组。循环遍历该数组并将其插入回数据库。根据您拥有的行数和用户 ID,这可能需要一段时间才能执行。

例如

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
$query = 'SELECT * FROM table';
$data = mysqli_query($mysqli, $query);
while($row = mysqli_fetch_array($data))
{
$data[] = array("gameid"=>$row['game_ID'], "setupid"=>$row['setup_ID'],"userid"=>str_getcsv($row['user_ID'])); /*And all your other information*/
}

for($i=0; $i<count($data); $i++) {
$gameid = $data[$i]['gameid'];
$setupid = $data[$i]['setupid'];
/*Other info you need*/

for ($x=0; $x<count($data[$i]['userid']);$x++) {
$userid = $data[$i]['userid'][$x];
if ($stmt = $mysqli->prepare("INSERT INTO newtable (game_ID, setup_ID, user_ID) VALUES (?, ?, ?)")) {
$stmt->bind_param('iii', $gameid ,$setupid ,$userid);
if (!$stmt->execute()) {
$stmt->close();
}
}

}
}

关于mysql - 数据库规范化我需要吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36943290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com