我正在尝试找到设计数据库的最佳方法,以允许出现以下情况:
- 用户会看到大学的下拉列表(例如)
- 用户从列表中选择他/她的大学(如果存在)
- 如果大学不存在,他应该在文本框中输入自己的大学(有点像其他:[__________])
我应该如何设计数据库来处理这种情况,例如我可能想使用大学 ID 进行排序(可能只针对内置大学而不是用户输入的大学)
谢谢!
我只是想让它类似于 Facebook 处理这种情况的方式。如果用户选择他的教育(通过实际输入组合框,这与我无关)并选择返回值之一,Facebook 会做什么?
在我的猜测中,它会将 UserID 和 EducationID 插入多对多表中。现在,如果用户输入的内容根本不在数据库中怎么办?它仍然存储在他的个人资料中,但是在哪里?
最佳答案
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/