mysql - 在 MySQL 中保存不预先存在的记录

标签 mysql sql database database-design

比方说,我有一个名为 cities 的预定义表,其中包含我所在国家/地区的几乎所有城市。

当用户注册自己(用户表)时,user 表中的列 cities_id 存储来自表 cities 的城市 ID(外键,引用表城市),类似

CREATE TABLE `cities` (
    `id` int,
    `city_name` varchar(100)
)

CREATE TABLE `user` (
    `id` int,
    `name` varchar(60)
    `****`
    `cities_id` FK
)

用户表存储城市id。

但是,如果我错过了几个城市怎么办......然后用户如何将他的城市名称保存在不接受任何城市名称而只接受 ID 的用户表中。

我可以在表 user 中的 cities_id 之后再增加一列 city_name

CREATE TABLE `user` (
    `id` int,
    `name` varchar(60)
    `****`
    `cities_id` FK
    `citiy name` varchar(100)
)

记录用户在注册时输入的数据?这能做到吗?

最佳答案

可以给城市表添加一个类型标签,用户找不到自己对应的城市可以让他输入自己所在城市的名字,然后你在这个城市,就会在表中创建一条对应的记录类型标记为特殊状态(方便操作人员检查和更正),同时将记录id保存到用户记录中

CREATE TABLE `cities` (
    `id` int,
    `city_name` varchar(100),
    `type` int,
)

CREATE TABLE `user` (
    `id` int,
    `name` varchar(60)
    `****`
    `cities_id` FK
)

关于mysql - 在 MySQL 中保存不预先存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995274/

相关文章:

MySQL触发器+多数据库复制

mysql - 在一个 SQL 语句中使用 BETWEEN 运算符两次

sql - 我需要一个单独的表来描述 nvarchar(max)

sql - 内容变化的表的最佳主键

SQL表将一个id的多行分成多列

sql - 是否有显示所有主要基数的常见示例 SQL 模式?

php - 单击按钮禁用它并在日期更改按钮在 php 中重新激活后将当前日期时间存储在数据库中

mysql - 必须声明“RAISERROR”

php - mysql_query 导致 while 循环 X 2

SQL - 表设计 - DateCreated 和 DateUpdated 列