У меня есть эти две таблицы, поэтому мне интересно, будет ли лучше или чище, если я объединю их в одну, или сделаю взаимосвязь и использую JOIN
.
Это таблицы:
CREATE TABLE `users` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`fname` varchar(20),
`lname` varchar(20),
`username` varchar(100),
`email` varchar(100),
`password` varchar(100),
`date` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `users_info` (
`id` int(255),
`work` varchar(50),
`education` varchar(50),
`phone_number` varchar(20),
`state` varchar(20),
`home_town` varchar(20),
`relationship_status` varchar(20),
`gender` varchar(20),
`hobbies` varchar(50),
`website` varchar(20),
`company` varchar(20),
`position` varchar(30),
`bio` varchar(255),
CONSTRAINT `users_info_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Я работаю над проектом, в котором есть часть, в которую пользователь может добавить только базовую c информацию о них после регистрации. Вся эта информация поступает в таблицу users
.
Но после регистрации им нужно добавить дополнительную информацию, которая будет go в таблицу users_info
.
Что я пытаюсь чтобы достичь - это добавить данные в таблицу users_info
с отношением с таблицей users
. У меня есть отношение между users.id
и users_info.id
, но я не уверен, как создать запрос с PHP.
Это то, что я пробовал до сих пор:
$session_username = $_SESSION['username'];
$stmt = $mysqli->prepare("INSERT INTO users_info (state) SELECT users_info.state FROM users_info INNER JOIN users ON users.id=users_info.id WHERE users.username = ?");
$stmt->bind_param("s", $session_username);
$stmt->execute();
$stmt->close();
Я не получаю никакой ошибки, но в моей базе данных ничего не произошло. Я не получаю никаких значений.
Итак, в конце мой вопрос: лучше ли я сделать две отдельные таблицы, как сейчас, или объединить все в одну таблицу?