database - 当我想存储从下拉列表中选择或用户输入的值时,数据库设计中的最佳做法是什么?

标签 database database-design drop-down-menu

我正在尝试找到设计数据库的最佳方法,以允许出现以下情况:

  1. 用户会看到大学的下拉列表(例如)
  2. 用户从列表中选择他/她的大学(如果存在)
  3. 如果大学不存在,他应该在文本框中输入自己的大学(有点像其他:[__________])

我应该如何设计数据库来处理这种情况,例如我可能想使用大学 ID 进行排序(可能只针对内置大学而不是用户输入的大学)

谢谢!

我只是想让它类似于 Facebook 处理这种情况的方式。如果用户选择他的教育(通过实际输入组合框,这与我无关)并选择返回值之一,Facebook 会做什么?

在我的猜测中,它会将 UserID 和 EducationID 插入多对多表中。现在,如果用户输入的内容根本不在数据库中怎么办?它仍然存储在他的个人资料中,但是在哪里? typing "St"...suggesting Stanford

typing non-existing university

最佳答案

CREATE TABLE university
(
  id smallint NOT NULL,
  name text,
  public smallint,
  CONSTRAINT university_pk PRIMARY KEY (id)
);

CREATE TABLE person
(
  id smallint NOT NULL,
  university smallint,
  -- more columns here...
  CONSTRAINT person_pk PRIMARY KEY (id),
  CONSTRAINT person_university_fk FOREIGN KEY (university)
      REFERENCES university (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

对于系统中的 Unis,public 设置为 1,对于用户输入的 unis,设置为 0。

关于database - 当我想存储从下拉列表中选择或用户输入的值时,数据库设计中的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/406550/

相关文章:

php - mysql 表的列名是否有 "not allowed"字符列表?

java - Hibernate - 在条件限制中添加另一个类的属性

mysql - 对于 "trashed"的对象,合适的表设计是什么

php - 如果数据库显示--无--显示下拉菜单,如果其他则显示输入的数据

php - 下拉数据不发布 "The forum you are trying to create a topic on, does not exist!"

javascript - 从具有两个下拉列表的表行中,获取选定的值以及更改的下拉列表

mysql - 将歌词存储在 MySQL 数据库中

mysql - 查询 MySQL 数据库以从另一个表中获取值

mysql - SQL - 连接查询运行缓慢

database-design - 重写系统...保留旧模式?